• ベストアンサー

sumif関数で列を数字で指定できますか?

例えば... =SUMIF(A1:A100,B1,C1:C100) とした場合、列を示すA, B, C を数字で指定する方法はありますか? マクロの中でApplication.Evaluate とか、 WorkSheet.Function で使いたいのですが、 Columns()の使用例などご教授いただければと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

WorksheetFunction.SumIf(Range(Cells(1, 1), Cells(100, 1)), Cells(1, 2), Range(Cells(1, 3), Cells(100, 3))) のようにCells(RowIndex,ColumnIndex)を利用してください。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

WroksheetFunctionで使うなら関数の中には「セルオブジェクト」を入れます。 res = application.sumif(range("A1:A100").offset(0,0), range("B1"), range("A1:A100").offset(0, 2)) res = application.sumif(range("A1").offset(0,0).resize(100,1), range("B1"), range("A1").offset(0,2).resize(100,1)) res = application.sumif(cells(1,1).resize(100,1), cells(1,2), cells(1,3).resize(100,1)) etc,etc. application.evaluateを特に使う必然性は無いと思いますが,セル参照からアドレス文字列を計算して,数式文字列を文字列計算で作成してしまうような事は勿論できます。 Dim arg1, arg2, arg3 arg1 = range("A1:C100").columns(1).Address arg2 = range("B1").Address arg3 = range("A1:C100").columns(3).Address msgbox application.evaluate("=SUMIF(" & arg1 & "," & arg2 & "," & arg3 & ")")

関連するQ&A