組合健保など、エクセルに値を転記しなければならないときに使えるVBAコードです。
組合健保は算定基礎届で独自のエクセル様式用いているとこが多いです。
給与計算システムから算定のCSVを吐き出し、それを整えたあとに使えるVBAコードです。
ブック名や列アルファベットを適時入れ替えると使えるかなと思います。
Sub sample()
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'i = 届1枚に記載できる人数
i = 5
'n = 全体のループ回数(届枚数と同じ)
n = (LastRow \ i) + 1
For j = 1 To n
For m = 1 To i 'm = 届出1枚の人数分だけ繰り返す
k = m + (i * (j - 1)) 'k = 何人目(何行目)の情報か
atama = (m - 1) * 21 + 86 '転記先のセル行
shigatsu = (m - 1) * 21 + 92 '転記先のセル行その2
gogatsu = (m - 1) * 21 + 97 '転記先のセル行その3
rokugatsu = (m - 1) * 21 + 102 '転記先のセル行その4
'整理番号
Workbooks("転記先ブック名").Worksheets(j).Range("D" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("A" & 1 + k).Text
'氏名
Workbooks("転記先ブック名").Worksheets(j).Range("M" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("B" & 1 + k).Text
'元号
If Workbooks("転記元ブック名").Worksheets(1).Range("C" & 1 + k).Text = "7" Then
Workbooks("転記先ブック名").Worksheets(j).Range("AE" & atama).Value = "平成"
Else: Workbooks("転記先ブック名").Worksheets(j).Range("AE" & atama).Value = "昭和"
End If
'和暦年月日
Workbooks("転記先ブック名").Worksheets(j).Range("AI" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("D" & 1 + k).Text
Workbooks("転記先ブック名").Worksheets(j).Range("AP" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("E" & 1 + k).Text
Workbooks("転記先ブック名").Worksheets(j).Range("BA" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("F" & 1 + k).Text
'従前健保
Workbooks("転記先ブック名").Worksheets(j).Range("BC" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("G" & 1 + k).Text
'従前厚年
Workbooks("転記先ブック名").Worksheets(j).Range("BK" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("H" & 1 + k).Text
'4月の日数
Workbooks("転記先ブック名").Worksheets(j).Range("H" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("I" & 1 + k).Text
'4月の金額
Workbooks("転記先ブック名").Worksheets(j).Range("M" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("L" & 1 + k).Text
'総計
Workbooks("転記先ブック名").Worksheets(j).Range("BC" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("O" & 1 + k).Text
'5月の日数
Workbooks("転記先ブック名").Worksheets(j).Range("H" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("J" & 1 + k).Text
'5月の金額
Workbooks("転記先ブック名").Worksheets(j).Range("M" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("M" & 1 + k).Text
'平均
Workbooks("転記先ブック名").Worksheets(j).Range("BC" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("P" & 1 + k).Text
'6月の日数
Workbooks("転記先ブック名").Worksheets(j).Range("H" & rokugatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("K" & 1 + k).Text
'6月の金額
Workbooks("転記先ブック名").Worksheets(j).Range("M" & rokugatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("N" & 1 + k).Text
Next m '次の人の転記
Next j '次のページへ
End Sub
予め、転記先のブックについて必要な届出枚数分シートをコピーしておく必要があります。転記先のシートは左に寄せておいてください。シートコピーのVBAは下記の通り。
Sub sh_copy()
For i = 1 To 7 '必要な枚数の数字に変えてください
Worksheets(1).Copy Before:=Worksheets(1)
Next i
End Sub
あとはXでもちょいちょい紹介している和暦年月日を分解する関数
例えば昭和60年6月10日生まれの方だと600610だったり
平成8年12月11日生まれの方だと81211とでたりするのを和暦年月日に分ける関数です。
=LEFT(分解元セル,IF(LEN(分解元セル)=6,2,1))
=MID(RIGHT(分解元セル,4),1,2)
=RIGHT(分解元セル,2)
猛暑が続きますが……すっきりとした気持ちで7月10日を超えたいですね
月1回・17日前後、労務・経営に関する情報をメール配信いたします。メールはドメイン「@ro-mutech.com」より送られます。ぜひ下記フォームよりご登録ください。