前提・実現したいこと
今回実現したいことは以下のリンク内容の派生です。
[Python3]Excel表から指定された複数の数値の中から最小の数をセルに書き込みたい
python3.8でExcelの出庫履歴表から日に合計何個消費したかを表す統計表を作ろうとしています。
リンク内容と類似しますが,今回は複数の指定された数値の合計を計算してその合計をセルに書き込みたいです。
↓出庫履歴の表.xlsx
備品名 | 備品個数 | 消費個数 | 日付 |
---|---|---|---|
fff | 266 | 1 | 2021-01-12 |
eee | 262 | 2 | 2021-01-12 |
ddd | 262 | 1 | 2021-01-12 |
ccc | 226 | 1 | 2021-01-12 |
bbb | 228 | 1 | 2021-01-12 |
aaa | 149 | 1 | 2021-01-12 |
fff | 267 | 2 | 2021-01-12 |
eee | 264 | 1 | 2021-01-12 |
ddd | 264 | 1 | 2021-01-12 |
ccc | 299 | 1 | 2021-01-12 |
bbb | 299 | 1 | 2021-01-12 |
aaa | 298 | 2 | 2021-01-12 |
fff | 269 | 1 | 2021-01-08 |
eee | 265 | 1 | 2021-01-08 |
ddd | 265 | 1 | 2021-01-08 |
ccc | 227 | 1 | 2021-01-08 |
bbb | 229 | 2 | 2021-01-08 |
aaa | 150 | 1 | 2021-01-08 |
fff | 270 | 1 | 2021-01-08 |
eee | 266 | 2 | 2021-01-08 |
ddd | 266 | 1 | 2021-01-08 |
ccc | 228 | 2 | 2021-01-08 |
bbb | 231 | 2 | 2021-01-08 |
aaa | 151 | 1 | 2021-01-08 |
fff | 271 | 1 | 2021-01-08 |
eee | 268 | 2 | 2021-01-08 |
ddd | 268 | 1 | 2021-01-08 |
ccc | 230 | 2 | 2021-01-08 |
bbb | 233 | 1 | 2021-01-08 |
aaa | 152 | 2 | 2021-01-08 |
fff | 272 | 1 | 2021-01-07 |
eee | 270 | 1 | 2021-01-07 |
ddd | 270 | 1 | 2021-01-07 |
ccc | 232 | 1 | 2021-01-07 |
bbb | 234 | 1 | 2021-01-07 |
aaa | 154 | 1 | 2021-01-07 |
fff | 273 | 1 | 2021-01-07 |
eee | 271 | 2 | 2021-01-07 |
ddd | 271 | 1 | 2021-01-07 |
ccc | 233 | 1 | 2021-01-07 |
bbb | 235 | 1 | 2021-01-07 |
aaa | 155 | 1 | 2021-01-07 |
aaa | 156 | 2 | 2021-01-07 |
例:aaaの総消費個数は
1+2+1+1+2+1+1+2=11個
このように備品ごとの総消費個数を求めたいです。
発生している問題・エラーメッセージ
print(sum())の括弧内に何を入れたらA及びaaaの合計消費個数が計算されるのか,またsumかdictを使うべきなのかと考えましたが自分なりに調べてもわかりませんでした。
以下はエラーコードです。
Traceback (most recent call last): File "C:/Users/xxxx/PycharmProjects/sample2Project/統計表書き込み.py", line 37, in <module> print(sum()) TypeError: sum() takes at least 1 positional argument (0 given)
該当のソースコード
import openpyxl book = openpyxl.load_workbook('出庫履歴の表.xlsx') sheet = book["Sheet1"] B2_COL = 1 B8_ROW = 1 E2_COL = 6 E6_ROW = 44 A = 'aaa' B = 'bbb' C = 'ccc' D = 'ddd' E = 'eee' F = 'fff' G = 'ggg' H = 'hhh' I = 'iii' J = 'jjj' K = 'kkk' L = 'lll' M = 'mmm' number_dic = {A, B, C, D, E, F, G, H, I, J, K, L, M} for row in sheet.iter_rows(min_col=B2_COL, min_row=B8_ROW, max_col=E2_COL, max_row=E6_ROW): for cell in row: # 該当セルの値取得 cell_value = cell.value o = cell.offset(0, 2) offset = o.value # セル範囲内に該当の文字列が存在する場合表示 if str(A) in str(cell_value): print(sum())
試したこと
print(sum())の括弧内にoffsetやnumber_dic[A]などを入れるとタイプエラーが起きました。
Pythonをはじめて日は浅く,知識不足ゆえ何卒ご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/13 02:00
2021/01/13 02:54
2021/01/13 04:19