Excelの最終行のセルに数式(sum)を入れる方法

やりたいことは、
B、C列の最終行に合計数を入れる数式を入れることです。

[イメージ]
image
B10に「=sum(B2:B9」、C10に「=sum(C2:C9」と入れたい。

行数(上記例では9)はタイミングによって異なり、
B、C列にはブランクも含まれるため、
A列から取得して変数として扱うことをイメージしています。

なかなか実現方法が検討つかず止まっております。
「範囲に書き込み」のアクティビティで、たとえば「=SUM(B2:B(変数))」という風に範囲のセルに変数を入れることは出来ないしょうか?

他に方法がありましたら、ご教授いただければ幸いです。

この場合、最終行から最終セルを特定し、「セルに書き込み」アクティビティでいけると思いますよ。この際、「"=SUM(B2:B(" & 変数 & “)”」と言ったような文字列になりますねo

返信ありがとうございます。
「代入」アクティビティで「No = DataTable01.Rows.Count.ToString」として
変数Noに行数は取得できました。(合ってますか?)

「セルに書き込み」にて、範囲をB列No+1に指定しましたがエラーになりました。
あと少しと思いますがご教授いただけると助かります。
image

エラー:
セルに書き込み: The data you want to write “=SUM(B2:B(&No&)” has a wrong format. If your data is a formula, make sure you use comma as parameters separator.

一つの文字列ではなく、変数は変数で独立させてみてください。

”=Sum(B2:B" & No & “)”
って具合。

その確認には、メッセージボックスアクティビティに設定したそのものを貼り付けて表示させてみるとどうなっているか、確認とりやすいですね。

メッセージボックスに「"=SUM(B2:B""&No&"")"」と入力したところ、
そのまま「=SUM(B2:B""&No&"")」と表示されました。
Noのみを表示させた場合ではカウントされた数字が表示されましたが。。。

フォーマットが違うというエラーが出ています。
image

最終行の行数を示す数値を変数に入れます。この変数を lastRow とすると、入力の値に "=SUM(B2:B" & lastRow & ")" を指定すれば動作するかと思います。

思いっきりシンプルにしました。
image
変数Noに値を代入して、それを数式に入れようとしましたが、
エラーが直りません。

程度が低い質問ですみません。

"=SUM(B2:B"" & lastRow & "")"
といれていただいていますが、
"=SUM(B2:B" & lastRow & ")"
と入力してお試しいただけませんか。

もう1点、入力先の箇所を、"B" & No にしてお試し願います。

ありがとうございます。
image

値 “=SUM(B2:B” & No & “)”
入力先 “B” & No

ご指摘いただいた通りに修正しましたが、同じエラーがでました。。。

当たり前ですが、変数をなくしてsumの入力は問題なくできました。

  • 変数 No の型を「Int32」に変更し、かつ代入のときの右側の値を、 9 としてください。引用符(")で囲む必要はありません。
  • 入力先の箇所を "B" & (No + 1) にしてください。
  • 入力値の箇所を "=SUM(B2:B" & (No + 1) & ")" にしてください。

エクセルをdtExcelにデータテーブルに読み込んで以下の代入を作成
商品Aの合計代入:
intSumB = dtExcel.AsEnumerable.Sum(Function (x) If(Double.TryParse(x.item("売上:商品A").ToString, Nothing), Double.Parse(x.Item("売上:商品A").ToString), 0))

商品Bの合計代入:
intSumC = dtExcel.AsEnumerable.Sum(Function (x) If(Double.TryParse(x.item("売上:商品B").ToString, Nothing), Double.Parse(x.Item("売上:商品B").ToString), 0))

Add Data Row アクティビティ:
DataTable: dtExcel
DataRow: dtExcel.NewRow

商品A合計をデータテーブルに記入の代入:
dtExcel.Rows(dtExcel.Rows.Count-1).Item("売上:商品A") = intSumB

商品B合計をデータテーブルに記入の代入:
dtExcel.Rows(dtExcel.Rows.Count-1).Item("売上:商品B") = intSumC

最後にdtExcelでExcelファイルに書きめば各商品の合計が入れるはずです。

ご指摘いただいた内容で無事できました。
ありがとうございます。

回答いただいた他の方もありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.