プロが教える店舗&オフィスのセキュリティ対策術

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)
と記述してもエラーになってしまいます。

A 回答 (3件)

Range("G23").Formula = "=SUMIF(E17:E21, "" > "" & E23,G17:G21)"


こうではないかな。
    • good
    • 0
この回答へのお礼

お返事が遅くなり申しわけありませんでした。
お蔭様でうまくいきました。
回答いあただいたRange("G23").Formula = "=SUMIF(E17:E21, "" > "" & E23,G17:G21)" をやってみましたが、エラーがなかなかわかり
ませんでしたが、">"を" > "でやっていたためのエラーでした。

お礼日時:2008/08/15 19:27

こんにちは。



ある程度の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
    • good
    • 0

 


 =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)"
 
以上。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!