|
▼auxo さん:
こんにちは。
>Sub Test()
> Dim WS_Data As Worksheet
> Dim WS_In As Worksheet
> Dim TRange As Range '集計対象範囲
> Dim SfRange As String '集計範囲1
> Dim By2Range As String '集計範囲2
> Dim SFB As String '集計名
> Dim Bcnt As Integer
>
> Set WS_Data = ThisWorkbook.Worksheets("DATA")
> Set WS_In = ThisWorkbook.Worksheets("資料")
> Set TRange = WS_In.Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)) '資料範囲
>
> With WS_Data
> '集計範囲1
> SfRange = .Name & "!" & .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)).Address
> '集計範囲2
> By2Range = .Name & "!" & .Range(.Cells(3, 8), .Cells(.Rows.Count, 8).End(xlUp)).Address
>
> '集計
> For Each FERange In TRange
> SFB = FERange.Value
> Bcnt = Application.Evaluate( _
> "=SUMPRODUCT((" & SfRange & "=" & SFB & ")*(" & By2Range & "<>""""))")
'evaluate()の中ってセルに入れる数式と一緒ですよね?
'debug.print "=SUMPRODUCT((" & SfRange & "=" & SFB & ")*(" & By2Range & "<>""""))"
'なんてして確認してみて下さい。見せていただいたコードだと
'変数SFBには、「""りんご""」と文字列としてダブルコーテーションが入っていなければなりませんが・・・。
'もしくは、
'"=SUMPRODUCT((" & SfRange & "=""" & SFB & """)*(" & By2Range & "<>""""))"
'とするか・・・。
>
> MsgBox Bcnt
> Next
>
> End With
>End Sub
実際に確認したわけではありません。Excel2002もHD取り替えれば環境はあるんですが、
現在、バックアップ中なもので・・・。
とりあえず、上記を確認してみて下さい。
|
|