• 締切済み

ExcelVBAで関数を入力したいのですが

ExcelVBAで以下の関数を入力して起動したのですが、エラーで停止してしまいます。 Range("AJ109").Formula = "=SUMIF($K$4:$K$107,"10年度",AJ4:AJ107)" 記述の方法が間違っているのでしょうか? また、SUMIF関数の検索条件を”10年度”という固定値ではなく、VBA内で使用するNENDOという変数の値を検索条件にするのが理想です。 どなたか御存知の方がいらっしゃいましたら、何卒、宜しくお願い致します。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

折角VBAなら Sub test01() Cells(1, "C").Formula = "=SUMIF($A$4:$A$12,""a"",B4:B12)" Cells(1, "D") = WorksheetFunction.SumIf(Range("A4:A12"), "a", Range("B4:B12")) End Sub の下のほうのやり方でも出来るよ。Rangeで指定することに注意。 すると質問の苦労は無くなる。 Nendoの場合もNendo="a"で簡単。 Sub test01() nendo = "a" Cells(1, "C").Formula = "=SUMIF($A$4:$A$12,""a"",B4:B12)" Cells(1, "D") = WorksheetFunction.SumIf(Range("a4:A12"), "a", Range("B4:B12")) Cells(1, "E") = WorksheetFunction.SumIf(Range("a4:A12"), nendo, Range("B4:B12")) End Sub でテストできるだろう。 ーーー データ例はA14:A12でテストした。 A列  B列 a 1 b 2 c 3 a 2 c 1 d 3 a 4 c 5 a 1 結果 8

bab2461
質問者

お礼

私がやりたかったのは、以下のVBAなのです。 ----------------------------------------------------------------------- Sub test01() Dim nendo As String nendo = """a""" Range("A1").Formula = "=SUMIF($A$4:$A$12," & nendo & ",B4:B12)" End Sub ----------------------------------------------------------------------- この回答に辿り着くのに、imogasi様の御回答を参考にさせていただきました。 どうも有難うございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

数式の内にダブルコーテーション(”)が存在している為に構文エラーです。 ダブルコーテーションを2つ重ねる記述になります。 "=SUMIF($K$4:$K$107,""10年度"",AJ4:AJ107)"

bab2461
質問者

お礼

ご教示いただきました通りに修正したら、正常に稼動しました。 とても助かりました。 どうも有難うございました。

関連するQ&A