質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

752閲覧

パイソン エクセルシート(見積書とオプション) 文言一致している際、オプション金額を入力反映したい

Tk1221

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/10/14 10:10

編集2020/10/25 09:46

恐れ入ります。
度々申し訳ございません。
無知な私にご教授の程、お願い致します。

1、見積書用のエクセルシートを準備。

惣菜名売上額売上額修正
秋刀魚の竜田揚げ100
きのこの白和え100
菜の花の辛し和え100

2、オプション金額用のエクセルシートを準備。

惣菜名売上額
秋刀魚の竜田揚げ200
きのこの白和え200

オプション金額用の中で惣菜名を検索、見積書の惣菜名と文言が一致した際、オプションの金額を見積書の売上額修正欄に記入して新規見積としてエクセルシートを保存したいです。
下記が実行したいエクセルシートの完成形となります。

惣菜名売上額売上額修正
秋刀魚の竜田揚げ100200
きのこの白和え100200
菜の花の辛し和え100

下記が試したプログラムをとなります。

import openpyxl def priceupdater(unitprice,fname): book=openpyxl.load_workbook('惣菜売上.xlsx') sheet=book['ベース'] for row_num in range(2, sheet.max_row+1): name=sheet.cell(row=row_num,column=1).value if name in unitprice: sheet.cell(row=row_num,column=3).value=unitprice[name] book.save(fname + '.xlsx') #上記プログラムの後、下記プログラムを入力しますと 見積に反映するのですが、{'秋刀魚の竜田揚げ':200}の部分を手入力しています。 pu={'秋刀魚の竜田揚げ':200} fname='単価更新1月25日' priceupdater(pu,fname) #実際はオプションの種類は多い為、一つずつ手入力はできないため、オプション金額用のエクセルシートを一括で読み込みしたいです。 オプション金額用のエクセルシートを一括で読み込みを下記プログラムで試したところ import openpyxl wb = openpyxl.load_workbook("./惣菜売上.xlsx") ws = wb["オプション"] # オプションのリスト option_list = [] # 列名のセル header_cells = None for row in ws.rows: if row[0].row == 1: # 1行目 header_cells = row else: # 2行目以降 row_dic = {} # セルの値を「key-value」で登録 for k, v in zip(header_cells, row): row_dic[k.value] = v.value option_list.append(row_dic) print(option_list)

オプション金額用のエクセルシートを一括で読み込みの結果は
[{'惣菜名': '秋刀魚の竜田揚げ', '売上額': 200}, {'惣菜名': 'きのこの白和え', '売上額': 200}]という出力結果でした。

{'秋刀魚の竜田揚げ':200}{'きのこの白和え':200}という出力結果でないと見積書の売上額修正欄に自動的に反映しないと思われます。

誠に恐れ入りますが必要箇所のみ読み取り方法+その後自動反映の方法ございましたら
ご教授頂けないでしょうか
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/10/14 11:46

コードは「コードの挿入」で記入してください。
Tk1221

2020/10/14 15:25

申し訳ございません。コード挿入させて頂きました。
Tk1221

2020/10/24 08:37

恐れ入ります。教えて頂きました情報をもとに試させて頂いた中で追記させて頂きました。もし可能でしたらご確認頂けますと幸いです。
gentaro

2020/10/24 08:55

全体的に日本語が怪しくてやりたいことが全然伝わらないんで、処理フローを箇条書きにして説明できますか? > 辞書用のエクセルシートの商品の一覧をデータと設定して > 辞書内より商品名を検索、ヒットすれば書き込み用のエクセルに > 金額を記入の作業を実施したいです。 「辞書用エクセルシート」とは?「設定として」って何? 「2、辞書の中に該当商品がヒットした際」と上に書いてあるやつと関係ある? 「辞書内より商品名を検索」ってどの「辞書」を検索してる? 「辞書は秋刀魚の竜田揚げ1品のみ手打ちで入力しているのみ」の「辞書」とは? などなど。 何が言いたいのか全くわかんない。 入力データとして用意してるものが何で、プログラムが受け付けるユーザー入力(「手入力で」と書かれてるけど、あるの?)が何で、最終的な出力はどうしたくて、そのための処理フローはどう考えてる?
toast-uz

2020/10/25 06:02

この状態では反応しなかった為、という文章の意味がわからないです。書き込みできなかったという意味でしょうか?何が反応しなかったのか?反応しなかったという抽象的な動詞でなく具体的に何が不具合なのか、などなど、読み取れない文章になっています。最新の不具合を5W1Hはっきりと書いてください。 「最初のプログラムを抜粋して添削したもの」→抜粋しないで、最新のプログラムを全て掲載してください。書き込み部分のコードが無いので、書き込みできなかったことが課題なのであれば原因がわかりません。慣れるまでは、長いと思っても、省略しないほうがよいです。
Tk1221

2020/10/25 07:39

恐れ入ります。分かりにくく誠に申し訳ございません。再度更新させて頂きました。ご確認頂けますと幸いでございます。
gentaro

2020/10/25 07:42

> #プログラムは他の学生のリスト読み込み用の資料を引用している為、 > プログラム内に学生やstudentの明記ございますが気にしないで下さい。 こんなコメント書く暇があるならプログラムの方をなおしましょう。 こういう小さい問題を放っておいて、より大きな問題(今の質問文の状況)にそのまま対処できると思わないでください。 脳内の無駄なリソースを消費するだけで、何も良いことがありません。
Tk1221

2020/10/25 09:46

申し訳ございません。修正させて頂きました。
guest

回答1

0

ベストアンサー

{'秋刀魚の竜田揚げ':200}{'きのこの白和え':200}という出力結果でないと見積書の売上額修正欄に自動的に反映しないと思われます。

「見積書の売上額修正欄に自動的に反映」がイマイチよくわかりませんが、その形式で出したいのであれば単純にリストとディクショナリを間違ってるだけじゃないですか?

diff

1import openpyxl 2 3def priceupdater(unitprice,fname): 4 book=openpyxl.load_workbook('惣菜売上.xlsx') 5 sheet=book['ベース'] 6 7 for row_num in range(2, sheet.max_row+1): 8 name=sheet.cell(row=row_num,column=1).value 9 if name in unitprice: 10 sheet.cell(row=row_num,column=3).value=unitprice[name] 11 book.save(fname + '.xlsx') 12 13 14#上記プログラムの後、下記プログラムを入力しますと 15見積に反映するのですが、{'秋刀魚の竜田揚げ':200}の部分を手入力しています。 16 17 18pu={'秋刀魚の竜田揚げ':200} 19fname='単価更新1月25日' 20priceupdater(pu,fname) 21 22 23#実際はオプションの種類は多い為、一つずつ手入力はできないため、オプション金額用のエクセルシートを一括で読み込みしたいです。 24オプション金額用のエクセルシートを一括で読み込みを下記プログラムで試したところ 25 26import openpyxl 27 28wb = openpyxl.load_workbook("./惣菜売上.xlsx") 29ws = wb["オプション"] 30 31# オプションのリスト 32- option_list = [] 33+ options = {} 34# 列名のセル 35header_cells = None 36 37for row in ws.rows: 38 if row[0].row == 1: 39 # 1行目 40 header_cells = row 41 else: 42 # 2行目以降 43- row_dic = {} 44 # セルの値を「key-value」で登録 45- for k, v in zip(header_cells, row): 46- row_dic[k.value] = v.value 47- option_list.append(row_dic) 48+ options.update({row[0].value: row[1].value}) 49 50- print(option_list) 51print(options) 52

text

1{'秋刀魚の竜田揚げ': 200, 'きのこの白和え': 200}

投稿2020/10/25 11:35

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tk1221

2020/10/26 11:43

この度はお忙しいところご教授頂きまして誠にありがとうございました。実施したい通りに作動致しました。まだまだ知らないことだらけですので引き続き勉強致します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問