os1867ss
(Os 1867ss)
July 16, 2020, 4:21am
1
やりたいことは、
B、C列の最終行に合計数を入れる数式を入れることです。
[イメージ]
B10に「=sum(B2:B9」、C10に「=sum(C2:C9」と入れたい。
行数(上記例では9)はタイミングによって異なり、
B、C列にはブランクも含まれるため、
A列から取得して変数として扱うことをイメージしています。
なかなか実現方法が検討つかず止まっております。
「範囲に書き込み」のアクティビティで、たとえば「=SUM(B2:B(変数))」という風に範囲のセルに変数を入れることは出来ないしょうか?
他に方法がありましたら、ご教授いただければ幸いです。
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
July 16, 2020, 4:25am
2
この場合、最終行から最終セルを特定し、「セルに書き込み」アクティビティでいけると思いますよ。この際、「“=SUM(B2:B(” & 変数 & “)”」と言ったような文字列になりますねo
os1867ss
(Os 1867ss)
July 16, 2020, 5:37am
3
返信ありがとうございます。
「代入」アクティビティで「No = DataTable01.Rows.Count.ToString」として
変数Noに行数は取得できました。(合ってますか?)
「セルに書き込み」にて、範囲をB列No+1に指定しましたがエラーになりました。
あと少しと思いますがご教授いただけると助かります。
エラー:
セルに書き込み: 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.
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
July 16, 2020, 6:00am
4
一つの文字列ではなく、変数は変数で独立させてみてください。
”=Sum(B2:B" & No & “)”
って具合。
その確認には、メッセージボックスアクティビティに設定したそのものを貼り付けて表示させてみるとどうなっているか、確認とりやすいですね。
os1867ss
(Os 1867ss)
July 16, 2020, 6:29am
5
メッセージボックスに「“=SUM(B2:B”“&No&”“)”」と入力したところ、
そのまま「=SUM(B2:B"“&No&”")」と表示されました。
Noのみを表示させた場合ではカウントされた数字が表示されましたが。。。
フォーマットが違うというエラーが出ています。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
July 16, 2020, 6:54am
6
最終行の行数を示す数値を変数に入れます。この変数を lastRow
とすると、入力の値に "=SUM(B2:B" & lastRow & ")"
を指定すれば動作するかと思います。
os1867ss
(Os 1867ss)
July 16, 2020, 7:06am
7
思いっきりシンプルにしました。
変数Noに値を代入して、それを数式に入れようとしましたが、
エラーが直りません。
程度が低い質問ですみません。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
July 16, 2020, 7:08am
8
"=SUM(B2:B"" & lastRow & "")"
といれていただいていますが、
"=SUM(B2:B" & lastRow & ")"
と入力してお試しいただけませんか。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
July 16, 2020, 7:09am
9
もう1点、入力先の箇所を、"B" & No
にしてお試し願います。
os1867ss
(Os 1867ss)
July 16, 2020, 7:17am
10
ありがとうございます。
値 “=SUM(B2:B” & No & “)”
入力先 “B” & No
ご指摘いただいた通りに修正しましたが、同じエラーがでました。。。
当たり前ですが、変数をなくしてsumの入力は問題なくできました。
エクセルを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ファイルに書きめば各商品の合計が入れるはずです。
os1867ss
(Os 1867ss)
July 17, 2020, 4:38am
14
ご指摘いただいた内容で無事できました。
ありがとうございます。
回答いただいた他の方もありがとうございました。
1 Like
system
(system)
Closed
August 3, 2020, 5:14am
15
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.