- 締切済み
VBA SUM関数に変数を入れた計算式の書き方
図のような表があります。 この表で、B1~B2、B6~B7は1行から4行の間で変化します。 ただし、B1~B2の行数とB6~B7の行数は同じです。 A10のセルに=SUM(B6,B7,(B6-C6*B2/100),(B7-C7*B3/100))という計算式を入れたいのですが 上記のように行数が変化するので B1=cells(gyou,2) B2=cells(gyou1,2) B6=cells(gyou+5,2) B7=cells(gyou1+5,2) c6=cells(gyou+5,3) c7=cells(gyou1+5,3) としています。ここでgyou1は1から4の間で変化します。 ほんとうは cells(gyou+9,1).Formula=SUM(cells(gyou+5,2):(cells(gyou1+6,2)-cells(gyou1+6)*cells(gyou1,2)/100)) とできると良いのですが、エラーになります。 SUM(cells(gyou+5,2):cells(gyou1+5,2))はOKですが、 SUM((cells(gyou+5,3)-cells(gyou+5,2)*cells(gyou,2)/100)):(cells(gyou1+5,2)-cells(gyou1+5,3) _ *cells(gyou1,2)/100))が、NGです。 これをどのようにコードを書くと良いのか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! NG部分内のコロン「:」をカンマ「,」に変更し SUM((cells(gyou+5,3)-cells(gyou+5,2)*cells(gyou,2)/100)),(cells(gyou1+5,2)-cells(gyou1+5,3)*cells(gyou1,2)/100)) または 表示セル=(cells(gyou+5,3)-cells(gyou+5,2)*cells(gyou,2)/100))+(cells(gyou1+5,2)-cells(gyou1+5,3)*cells(gyou1,2)/100)) のようにSUMを使用せず、単純に「+」を使って足し算ではどうでしょうか? 検証していませんので、外していたらごめんなさいね。m(__)m
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
> SUM(B6:(C7-B7×B2/100))/4.08としたいのですが、 はどのような計算をしたいのかさっぱりわかりません その説明の手助けとしてにサンプルがほしかったわけですが。 エラーに関してはは多分#VALUEエラーだと思われますが、その原因はなんだと思われますか? おそらく、エラー解決策として =(IF(COUNT(B1,B6,C6)<>3,0,100*C6+(100-B1)*B6) +IF(COUNT(B2,B7,C7)<>3,0,100*C7+(100-B2)*B7) +IF(COUNT(B3,B8,C8)<>3,0,100*C8+(100-B3)*B8) +IF(COUNT(B4,B9,C9)<>3,0,100*C9+(100-B4)*B9)) /408
お礼
ありがとうございました。 おかげさまで、自己解決できました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
質問1 説明と添付図との整合性が取れていません。 質問2 それとサンプルを数点、結果提示してください。 質問3 A10セルに =SUMPRODUCT((B6:B9*2-C6:C9*B1:B4/100)) を入力た場合の結果は? あっている/間違っている/エラーとなる
補足
質問1について 申し訳ありません、間違っていました。 A10セルで求めたい計算結果はこの表の場合はSUM(B6,B7,(C6-B6×B1/100),(C7- B7×B2/100))/4.08です。 変数gyouは1ですが、gyou1は1~4の間のどれかです。 行数が変化するのでSUM(B6,B7,(C6-B6×B1/100),(C7-B7×B2/100))/4.08の式では、対応できず SUM(B6:(C7-B7×B2/100))/4.08としたいのですが、これではエラーになってしまうので困っています。 質問3について エラーになります。
お礼
回答ありがとうございました。 おかげさまで、自己解決しました。
補足
回答ありがとうございます。 分かりにくいようですが、SUM(:)としたいのは、この表ではB1,B2及びB6,B7は2行ですが、これが1行だったり3行だったり4行だったりするのです。 現在gyou=1,gyou1=2ですが、gyou2を1から4の間で変化させてSUMで合計する範囲を行数に合わせて変化させようとしています。 SUM(,)や+では合計する行数の変化に対応できないので、たぶんですが配列数式を使うと良いのではないかと思うのですが。