- ベストアンサー
Excel VBAにてSUMIF関数の入力
Excelのあるシートに以下の表があります。 E列 ・・・・・・ F列 ・・・ G列 17行 2008/1/5 ・・ 売上 ・ 1,500 18行 2008/2/10 ・・売上 ・ 2,100 19行 2008/3/11 ・・売上 ・ 1,700 20行 2008/3/18 ・・売上 ・ 1,000 21行 2008/4/1 ・・・売上 ・ 2,500 23行 2008/3/15 ・・・・・・・ 3,500 この場合G23セルには=SUMIF(E17:E21, ">" & E23,G17:G21) という式が入っており、結果的に3,500という数字が見えます。 しかし、このG23セルにマクロにて式を書込み同じ3,500という 値を出したいのですが、マクロ上では何と記述すれば同じに なるのか教えて下さい。 例えばrange("G23").Fomula= "=SUMIF(E17:E21, ">" &E23,G17:G21) と記述してもエラーになってしまいます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Range("G23").Formula = "=SUMIF(E17:E21, "" > "" & E23,G17:G21)" こうではないかな。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ある程度のExcel自体を知らないと、話は理解されないと思いますが、 確かに、G23 の23行目が固定した行なら、数式も、A1方式の固定式でよいと思います。だから、 Range("G23").FormulaLocal = "=SUMIF(E17:E21, "">"" &E23,G17:G21)" となりますが、E17:21, E23, G17:G21 は、すべて、相対参照式で書かれていますから、 数式を入力する場所が、その回では、G23 であり、そのセルに対して、E23 があり、その検索範囲と集計範囲が、E17:21, G17:G21 と、すべて相対的位置関係にあるものだと思うのです。G23 は、次は、G40 かもしれません。 実際に、どのような数式を入れたいのかは分かりませんが、例えば、相対参照位置にあるもので、セルの範囲が、上に遡って5セルなら、このような数式になります。言い換えると、R1C1方式は、相対位置を表すもので、統一した数式で書けます。 With Range("G23") If .Row > 6 Then .FormulaLocal = "=SUMIF(R[-6]C[-2]:R[-2]C[-2],"">""& RC[-2],R[-6]C:R[-2]C)" End If End With
- onlyrom
- ベストアンサー率59% (228/384)
=SUMIF(E17:E21, ">" & E23,G17:G21) こういう文字列を作成すればいいわけですから 先ず、両端を、”(ダブルクォーテーション)で囲みます 実際は、半角の「"」です。 ”=SUMIF(E17:E21, ">" & E23,G17:G21) ” そして、問題は、”>” これです。 これは、ダブルクォーテーションで囲まれた状態で表示しなければならないので ””>”” このようにさらに、””で囲まないといけません。 要するに、” を表示したいときは、”” とふたついるということです。 ”=SUMIF(E17:E21, ””>”” & E23,G17:G21) ” で、以下のようにすればいいわけです。 Range("G23").FormulaLocal = "=SUMIF(E17:E21, "">"" & E23,G17:G21)" 以上。
お礼
お返事が遅くなり申しわけありませんでした。 お蔭様でうまくいきました。 回答いあただいたRange("G23").Formula = "=SUMIF(E17:E21, "" > "" & E23,G17:G21)" をやってみましたが、エラーがなかなかわかり ませんでしたが、">"を" > "でやっていたためのエラーでした。