背景:確定申告の時期となった。2024年度どれだけ部品代やら書籍代を支払ったかを振り返る(集約する)
課題:Excelマクロに詳しい人はピボットテーブルとかを駆使して、支払先別の円グラフとか簡単に書けるのだろうけど、マクロ全く分からない
取り組み:Python In Excelで支払先別の集計をやってみた。
詳細:
Python in Excelのプログラミングモデルが全く分からない。まずはセルをどうやって読み込むのか?から分からなかった。どうもPython In ExcelはPandasを基本としているようで、まずはセルをPandasのDataFrameとして読み込んでPandasの行列計算を駆使して欲しい値を得るようであった。Pandasも普段は使っていないのでよく分からず。
とりあえず、へなちょこなプログラムで、支払先集計をやってみた。金額は赤裸々なので控えさせていただくとして。。
df = xl("D2:E62") # read cell data as dataframe targets = df.iloc[:, 1].values # get target columns uq_targets = np.unique(targets) # make unique list #print(uq_targets) tgt_lst={} # target-payment dictionary for tgt in uq_targets: tgt_lst[tgt] = 0 # set default value 0 for row in df.iterrows(): pay = row[1][0] target = row[1][1] # print(target, pay) tgt_lst[target] += pay # add payment according to target print(tgt_lst) 0 # dummy return value
Excelシートに円グラフが出たらクールですが、今の時点では実行結果エリアにprint文で表示されるのみ
{'AK': xx180, 'AL': xx443, 'AM': xx139, 'AP': xx580, 'CA': xx430, 'DG': xx090, 'GG': xx986, 'IPSJ': xx800, 'JK': xx740, 'MS': xx829, 'SF': xx661, 'SW': xx603, 'TK': xx767}