- ベストアンサー
VBAにて計算式を入力したい
VBAにてマクロ作成中です。 下記の計算式をマクロから入力したいのですが、 どのような式になりますでしょうか? =SUM(SUMIF(稼動データ!F2:F89,{"D","F"},稼動データ!I2:I89)) R1C1形式だと、下記でうまくいくのですが。。 Range("G42").FormulaR1C1 = _ "=SUM(SUMIF(稼動データ!R[-40]C[-1]:R[47]C[-1],{" & """D"",""F""" & "},稼動データ!R[-40]C[2]:R[47]C[2]))"
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>この式の計算結果だけを、値として入力する場合は、 Application.WorksheetFunction.Sum(Application.WorksheetFunction. Sumif(WorkSheets("稼動データ").Range("F2:F89"),・・・)) のようにネストすればよいと思います。 ただ、WorksheetFunctionで、{"D","F"} のような設定を許可してくれるか解りませんが・・・。 他の方法として、Evaluate メソッドがあります。 セルに入る式をそのまま記述すれば問題無く動作するはずです。 Range("G42").Value = Evaluate("SUM(SUMIF(稼動データ!F2:F89,{""D"",""F""},稼動データ!I2:I89))")
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
Range("G42").Formula = "=SUM(SUMIF(稼動データ!F2:F89,{""D"",""F""},稼動データ!I2:I89))" では駄目なのですか?
お礼
こんなに早く回答がもらえるなんて大変ありがとうございます。 うまくいきました。 A1形式の計算式を 「Range("G42").FormulaR1C1 =」で、入力していたのが原因でした。 もう一点質問させてください。 この式の計算結果だけを、値として入力する場合は、 どのような式になりますでしょうか? Application.WorksheetFunction. を使うところまではわかるのですが、 ワークシート関数が2つある場合どのようにしたらよいか悩んでいます。 よろしくお願いします。
お礼
>ただ、WorksheetFunctionで、{"D","F"} のような設定を許可してくれるか解りませんが・・・。 こちらはうまくいきませんでしたが、 >Range("G42").Value = Evaluate("SUM(SUMIF(稼動データ!F2:F89,{""D"",""F""},稼動データ!I2:I89))") こちらは、思い通りの動作になりました。 コードもこちらの方が見やすく、すっきりしました。 2日くらい悩んでいたものが解決しました。 大変ありがとうございました。