こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excel vbaの関数の使い方

excel VBAでsumproduct関数を使いたいがでますのですがどうしても実行できません
何が原因でしょうか、どなたか教えてください。
-------------------------------------------------
下記コードは実行できます。
Worksheets("集計").Range("j4").Value = WorksheetFunction.Sum(Worksheets("日常").Range("h4:h13"))

下記コードは型が違うとのコメントがでます。
Worksheets("集計").Range("j4").Value = WorksheetFunction.SumProduct((Worksheets("日常").Range("c4:c13") >= j2) * Worksheets("日常").Range("c4:c13") <= k2) * Worksheets("日常").Range("d4:d13") = l2 * Worksheets("日常").Range("f4:f13") = m2 * Worksheets("日常").Range("h4:h13")
---------------------------------------------------------------------
ワークシートは、日常、集計、の二つがあります。
「日常」には、C4:H13にデータがあります。
c列に年月日、d列にコード番号、e列に購入箇所、f列にコード番号、g列に商品、h列に金額
が入力されています。
「集計」には、j2に開始日、k2に終了日、l2にd列のコード番号、m2にf列のコード番号、
が入力されています。
環境は、windows10 使用しています。
-----------------------------------------------------------
以上の状況ですがvba でsumproduct関数を使いたいのですが実「実行」できません,たかどなたか教えて頂けませんか。

投稿日時 - 2019-07-19 10:08:47

QNo.9636918

困ってます

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

あ、ちなみにこれならどうでしょう。

Worksheets("集計").Range("j4").Value = Evaluate("SUMPRODUCT((日常!C4:C13>=集計!J2)*(日常!C4:C13<=集計!K2)*(日常!D4:D13=集計!L2)*(日常!F4:F13=集計!M2),日常!H4:H13)")

EvaluateはVBA上で関数を文字列で設定しているだけなので、j2とかも使えます。

投稿日時 - 2019-07-19 12:12:35

お礼

早速のご回答ありがとうございました。
実行できました。見事に計算します。ありがとうございます。
これから目的のものに挑戦したいと思います。
今後ともよろしくお願いいたします。

投稿日時 - 2019-07-19 14:46:22

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

パット見ですけど「>= j2」のj2とかって使えないでしょ。

ソースの一番上に「Option Explicit」と書く癖をつけた方が良いですよ。
実行前にエディッタの「コンパイル」を実行するとエラーが出ます。

これを直しても通らないと思います。
VBAのsumproductって難しかったはずなので真面目に考える前に1つ聞きたいのですが
VBA(マクロ)じゃなくて関数だと簡単なんですが関数じゃ嫌なんですか?

投稿日時 - 2019-07-19 12:04:59

お礼

早速のご回答ありがとうございます。
ワークシート関数での経験はあります。今回はVBAで挑戦したいと思いました。
dolcedish様のご回答を試みましたところ実行できました。
有難うございました。
今後ともよろしくお願いいたします。

投稿日時 - 2019-07-19 14:54:31

あなたにオススメの質問