• 締切済み

エクセルの複数条件抽出

エクセルで複数条件のカウントをしようと思い、下のマクロを作成しました。 うまくカウントができないのですが、どこらへんが間違っていますでしょうか? (実際にはもっと多くのデータで利用を予定しており、小さいものでテストしています) よろしくお願いします。 Dim c1 As String Dim c2 As String Dim ans As Long Dim ws As Worksheet Dim b As Long, a As Long Set ws = Worksheets("date") For b = 2 To 4 For a = 3 To 5 c1 = Cells(a, 1).Value c2 = Cells(2, b).Value With ws.Range("B2:C7") ans = Evaluate("sumproduct((" & .Columns("c").Address & "=""" & c1 & """)*(" & .Columns("B").Address & "=""" & c2 & """))") Worksheets("a").Cells(a, b).Value = ans End With Next a Next b End Sub

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

ansの式はsumproduct関数を使っていますがせっかくマクロを組んでおらっるのですからこのような関数は使う必要もないでしょう。うまく機能していないようですね。 例えば次のようなマクロにすればよいでしょう。 Set ws = Worksheets("date") For b = 2 To 4 For a = 3 To 5 c1 = Cells(a, 1).Value c2 = Cells(2, b).Value n = 0 For i = 2 To 7 If ws.Cells(i, "B") = c2 And ws.Cells(i, "C") = c1 Then n = n + 1 End If Next i Worksheets("a").Cells(a, b) = n Next a Next b

morinokumamaku
質問者

お礼

確かにそうですね。もともとsumproductで利用していた表だったので、そのまま利用しようとしすぎました。大変参考になり、ありがとうございます。