###実現したいこと
excelのシート内で、ある文字列と完全一致するセルがある列を格納するコードについて
コピーしたいものはセル列で、それの区別分けをE列のセルに入っている文字列でしたいです。
下記のコードでは区別分けがうまくできませんでした。
最後ですべての列がコピーされるのですが、この部分がよく分かりません。
検索したものをそのまま使い、いろいろいじってみましたがうまくいかないので有識者の方、ご意見いただければ幸いです。
恐らく初歩的な問題だと思いますが、よろしくお願いいたします。
参照ページ『https://gammasoft.jp/support/openpyxl-iter-rows/』
発生している問題・エラーメッセージ
Excelシートに入っているセルの文字列 [None, None, None, None, None] [None, None, None, None, None] [None, None, None, None, None] ['名前', '年齢', '性別', '出身', '部活'] ['佐藤', 12, '男', '福島', '写真クラブ'] ['渡辺', 23, '女', '愛媛', '陸上部'] ['山田', 22, 'なし', '京都', '野球部'] ['相田', 111, '男', '鹿児島', '陸上部'] ------------------------------------------------- 実行結果 ['山田', 22, 'なし', '京都', '野球部'] ['渡辺', 23, '女', '愛媛', '陸上部', '相田', 111, '男', '鹿児島', '陸上部'] ['佐藤', 12, '男', '福島', '写真クラブ', '渡辺', 23, '女', '愛媛', '陸上部', '山田', 22, 'なし', '京都', '野球部', '相田', 111, '男', '鹿児島', '陸上部']
該当のソースコード
python
1 2import os 3import openpyxl as px 4import re 5 6wb = px.load_workbook(r"C:\Users\---\Desktop\MyPandas\test.xlsx") 7ws = wb["Sheet1"] 8 9print("Excelシートに入っているセルの文字列") 10print("") 11active_sheet = wb.active 12for row in active_sheet.rows: 13 excel = [] 14 for cell in row: 15 excel.append(cell.value) 16 print(excel) 17#格納するリスト 18bb_clb = [] 19tf_clb = [] 20pic_clb = [] 21 22 23#空行の定義 24def is_empty(cell): 25 return cell.value is None or not str(cell.value).strip() 26 27#Excelシートで一列ごとに対応するリストへ格納 28#部活で格納するリストを分ける 29for row in ws.iter_rows(min_row = 5): 30 if all(is_empty(c) for c in row): 31 break 32 elif (row[4].value == "野球部"): 33 for col in row: 34 bb_clb.append(col.value) 35 elif (row[4].value == "陸上部"): 36 for col in row: 37 tf_clb.append(col.value) 38 else: row[4].value == "写真クラブ" 39 for col in row: 40 pic_clb.append(col.value) 41 42print("") 43print("-------------------------------------------------") 44print("") 45print("実行結果") 46print(bb_clb) 47print(tf_clb) 48print(pic_clb) 49 50 51
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/08 07:39
退会済みユーザー
2021/01/08 07:50
2021/01/08 08:13