| 
    
     |  | ▼マナ さん: >▼NANAMI さん:
 >>
 >>for nextとsumifsを使って作りたいのです
 >
 >Worksheets("練習15")では、ループ必要ないでしょう。
 >
 >Sub test()
 >  Dim r1 As Range
 >  Dim r2 As Range
 >  Dim i As Long
 >  Dim j As Long
 >
 >  Set r1 = Worksheets("練習15").Range("A1").CurrentRegion
 >  Set r2 = Worksheets("練習15_回答").Range("A1").CurrentRegion
 >
 >  For i = 2 To r2.Rows.Count
 >    For j = 2 To r2.Columns.Count
 >      r2(i, j).Value = WorksheetFunction.SumIfs(r1.Columns(3), _
 >        r1.Columns(1), r2(1, j).Value, r1.Columns(2), r2(i, 1).Value)
 >    Next
 >  Next
 >
 >End Sub
 >
 >数式を一括で挿入して、それを値に変換すると
 >ープなしでできます。
 >
 >Sub test2()
 >  Dim r1 As Range
 >  Dim r2 As Range
 >  Dim f As String
 >
 >  Set r1 = Worksheets("練習15").Range("A1").CurrentRegion
 >  Set r2 = Worksheets("練習15_回答").Range("A1").CurrentRegion
 >  Set r2 = Intersect(r2, r2.Offset(1, 1))
 >
 >  f = "=sumifs(" _
 >    & r1.Columns(3).Address(-1, -1, , -1) & "," _
 >    & r1.Columns(1).Address(-1, -1, , -1) & "," _
 >    & r2(0, 1).Address(-1, 0) & "," _
 >    & r1.Columns(2).Address(-1, -1, , -1) & "," _
 >    & r2(1, 0).Address(0, -1) & ")"
 >
 >  r2.Formula = f
 >  r2.Value = r2.Value
 >
 >End Sub
 
 
 sumifsを使ったVBA、とてもわかりやすかったです。理解できました。ありがとうございました。
 
 
 |  |