- ベストアンサー
ExcelVBAで一定ルールでの行追加
- ExcelVBAを使用して、指定のルールに基づいて行を追加する方法について教えてください。
- ある表において、特定の条件を満たさない行を取得し、追加するExcelVBAのコードを作成したいです。
- ExcelVBAを使って、表の欠損データを補完する方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1行目は項目名(性別、年代、数、数2、数3) データは2行目からとしています。 参考に Sub Test() Dim myDic As Object Dim LastRow As Long Dim Str As Variant Dim i As Long, j As Long Set myDic = CreateObject("Scripting.Dictionary") LastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow Str = Cells(i, "A").Value & ";" & Cells(i, "B").Value myDic(Str) = Empty Next For i = 1 To 2 For j = 40 To 100 Step 5 Str = i & ";" & j If Not myDic.Exists(Str) Then LastRow = LastRow + 1 Cells(LastRow, "A").Value = i Cells(LastRow, "B").Value = j Cells(LastRow, "C").Resize(, 3).Value = 0 End If Next Next Range("F2:F" & LastRow + 2).FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" With Cells(LastRow + 1, "A") .Value = 1 .Offset(, 1).Value = "男性計" .Offset(, 2).Resize(, 4).FormulaR1C1 = "=SUM(R[-13]C:R[-1]C)" End With With Cells(LastRow + 2, "A") .Value = 2 .Offset(, 1).Value = "女性計" .Offset(, 2).Resize(, 4).FormulaR1C1 = "=SUM(R[-13]C:R[-1]C)" End With Range("A2:F" & LastRow + 2).Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("B2"), Order2:=xlAscending, _ Header:=xlNo Set myDic = Nothing End Sub
お礼
遅くなりまして申し訳ありませんでした。ありがとうございました。