前提・実現したいこと
python3.8でExcelの出庫履歴表から決算表(最終的にどの備品がどれくらい残っているかを見られるようにするための表)を作ろうとしています。
数値を指定するまではできましたが該当する数値が複数の時に,中で一番小さい数字を選択してセルに書き込むことができません。
色々試してみたのですが、うまく実行出来ないためお教えいただければ幸いです。
発生している問題・エラーメッセージ
例としてaaaの最終的な備品個数をセルF2に表示させる場合を実行します。
aaaが表の中で2つ以上出てきたとき,該当数値すべてをprint表示はできるもののoffsetという一つの変数の中の数値だからかどちらも選択することができません。
また,その変数offsetをF2に表示しようとすると最大値166が表示されてしまいます。
↓出庫履歴の表.xlsx
|備品名|備品個数|日付| | | aaa
|:--|:--:|--:|
fff|278|2021-01-04| | |セルF2(ここにaaaの最小数値を入れたい)
eee|278|2021-01-04
ddd|278|2021-01-04
ccc|239|2021-01-04
bbb|240|2021-01-04
aaa|164|2021-01-04
fff|279|2020-12-25
eee|280|2020-12-25
ddd|280|2020-12-25
ccc|240|2020-12-25
bbb|241|2020-12-25
aaa|166|2020-12-25
該当のソースコード
aaaの備品個数に相当する数はaaaの右隣に位置しているためoffset関数を用いて表示しました。
以下が該当のコードです。
import openpyxl as px wb = px.load_workbook('sample2Project/出庫履歴の表.xlsx') ws = wb["Sheet1"] B2_COL = 1 B8_ROW = 1 E2_COL = 3 E6_ROW = 13 # 範囲データを順次処理 for row in ws.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, 1) offset = o.value # セル範囲内に該当の文字列が存在する場合表示 if str('aaa') in str(cell_value): print(offset) # ロードしたExcelファイルを閉じる wb.close()
以下がコード実行画面です。
Run
1164 2166
試したこと
listを作り変数offsetを入れて,ifで164と166を比較させる条件にしようとしましたがどちらも個々別々のリストに入ってしまい比較ができませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/06 07:50
2021/01/06 08:19
2021/01/07 01:51
2021/01/07 02:01
2021/01/07 02:39