[[20201012161418]] 『VBAで関数(if,countifs,sumproduct)を入力すると』(いいだ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで関数(if,countifs,sumproduct)を入力するとエラーになります』(いいだ)

下記マクロがアプリケーション定義エラーとなります。

Sub macro()

Range("D:D") = "=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)=1,SUMPRODUCT((A:A=A2)*(B:B=B2),C:C),"")"

End Sub

マクロの内容としては、A列×B列が一致する行のC列の数値の合計値をD2に表示します。その際に、そのA列×B列の組み合わせの一番上の行だけ合計値を表示するような設計です。
Excel上で関数をそのまま入力する限りエラーは起きませんが、VBAでデバックすると止まります。

以上、よろしくお願い致します。

< 使用 Excel:unknown、使用 OS:unknown >


 エラーの原因は、
 >・・(B:B=B2),C:C),"")" 

 ・・(B:B=B2),C:C),"""")" にしないからですが、 
 列全体に対して行うのは無謀じゃないですか?

 有効行数に限定すべきと思います。

(半平太) 2020/10/12(月) 16:31


半平太さん

ご回答ありがとうございます。
上記の内容で修正したら問題なく作動しました。
D列全体ではなく、RANGE("d2")にして、そこから最終行までオートフィルする設定にしようかと思います。
ちなみに、私VBA初心者なのですが、なぜ上記の修正でエラーが治ったのかをお教え頂く事はお願い出来ますでしょうか。

(いいだ) 2020/10/12(月) 16:42


 >"=・・・(B:B=B2),C:C),"")"
         
 両端の「"」は、その中間の文字を文字列にする記号ですが、
 その中にある「"」は単なる文字です。

 両端の「"」と区別できるようにする為、
 1つの「"」を文字表現するのには2つ重ねる必要がある、と言うルールになっています。

(半平太) 2020/10/12(月) 17:10


半平太さん

なるほど!ありがとうございます。

(いいだ) 2020/10/12(月) 17:24


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.