パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
荏隈 直樹さんの投稿
(投稿ID: 5455)
from pathlib import Path import openpyxl base_file_name = "slimmed_dict" base_path = Path(__file__).resolve().parent file_path = base_path / 'data' / f'{base_file_name}.xlsx' save_path = base_path / 'data' / f'{base_file_name}_result.xlsx' wb = openpyxl.load_workbook(file_path) ws = wb["main"] company_dict = {} total_price = 0 for row in ws["A2:G" + str(ws.max_row)]: detail_dict = { "id": row[0].value, "name": row[1].value, "date": row[2].value, "fiscal": row[3].value, "doc": row[4].value, "detail": row[5].value, "price": row[6].value, "合計額": total_price, } if row[1].value not in company_dict: total_price = row[6].value detail_dict["合計額"] = total_price temp_companyname = row[1].value else: total_price += row[6].value detail_dict["合計額"] = total_price company_dict[temp_companyname] = detail_dict ws_name = wb["名称リスト"] ws_detail = wb["取引先ごとの明細"] idx = 2 for company, transact in company_dict.items(): ws_name["A" + str(idx)].value = company ws_name["B" + str(idx)].value = transact["合計額"] ws_detail["A" + str(idx)].value = company ws_detail["B" + str(idx)].value = transact["id"] ws_detail["C" + str(idx)].value = transact["date"] ws_detail["D" + str(idx)].value = transact["合計額"] ws_detail["E" + str(idx)].value = transact["detail"] ws_detail["F" + str(idx)].value = transact["fiscal"] ws_detail["G" + str(idx)].value = transact["doc"] idx += 1 wb.save(save_path) wb.close() print("完了しました")
小川 慶一さんのコメント
(コメントID: 8111)
from pathlib import Path import openpyxl base_file_name = 'slimmed_dict' base_path = Path(__file__).resolve().parent file_path = base_path / 'data' / f'{base_file_name}.xlsx' save_path = base_path / 'data' / f'{base_file_name}_sum_result.xlsx' wb = openpyxl.load_workbook(file_path) ws = wb["main"] company_dict = {} for row in ws["A2:G" + str(ws.max_row)]: company_name = row[1].value if company_name not in company_dict: company_dict[company_name] = row[6].value else: company_dict[company_name] += row[6].value ws_to = wb["名称リスト"] idx = 2 for company, price in company_dict.items(): ws_to["A" + str(idx)].value = company ws_to["B" + str(idx)].value = price idx += 1 wb.save(save_path) wb.close() print("完了しました")
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2024年11月20日 21:28
2024年10月27日 08:02
2024年10月26日 04:43
2024年10月22日 04:45
2024年10月21日 04:48
2024年11月20日 21:41
2024年11月14日 17:04
2024年11月13日 18:12
2024年11月13日 18:11
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2024年10月21日 17:30
2024年10月18日 17:00
2024年10月17日 17:30
2024年10月18日 16:45
2024年10月17日 07:30
2024年11月25日 12:07
2024年11月17日 09:51
2024年11月15日 16:41
2024年11月15日 13:07
2024年11月15日 13:05
荏隈 直樹さんの投稿
(投稿ID: 5455)
小川 慶一さんのコメント
(コメントID: 8111)
すいません、この投稿、さきほど気づきました。
それで精査したのですが、SumIf関数等で取引先名称ごとに集計した場合の値といただいたコードで出力される値が異なりますね。
どうしてなのか、考えてみてください。
それから、シート「取引先ごとの明細」では、同一取引先についてのレコードのうちひとつしか出力されないことになりますが、その場合に結果的に出力される行を選択した理由と、ほかの行は出力しなくて良いと考えた理由を教えてください。
(僕なら、下手に一部の行だけ出力するくらいなら、合計値以外はすべて出力しないようにします..)
いただいたコードを直すにしても設計段階からいろいろあるのでなおせません。
ということで、取引先名称ごとに集計する場合のコードを書きおろしました。以下に添付しますのでまずは参考にしてください。