VLOOKUP関数のマスタからデータを検索する
顧客データをIDで検索する
ポイント
- Excelリストをcustomer_listに取り込む
- customer_listの中の顧客データを1件ずつループして、先頭の要素(インデックス0)に入力されている顧客IDと、取り出したい顧客IDを比較し、IDが一致する顧客を探す
- 見つかり次第、その顧客データをtargetに代入して、print()で出力する
- 探す顧客は1件だけであるため、出力後はbreakでループを終了する
import openpyxl wb = openpyxl.load_workbook("顧客マスタ.xlsx") ws = wb["Sheet1"] #顧客マスタの全データリスト customer_list = [] # 顧客マスタの全行を1行ずつ読み込む for row in ws.iter_rows(min_row=2): # 顧客IDのセルが空になったら終了 if row[0].value is None: break value_list = [] for c in row: value_list.append(c.value) customer_list.append(value_list) #検索する顧客ID customer_id = "K0004" #顧客の検索 for customer in customer_list: #検索条件(顧客IDの一致) if customer[0] == customer_id: target = customer #確認 print(target) break
実行結果
条件に合う複数の顧客を検索する方法
ポイント
- target_listという空リストを作成しておき、顧客マスタのデータを1件ずつループさせて、条件に一致する場合は追加せずに全部の顧客をループさせる
- 先頭文字が「K」であるかをstartswith(“K”)で判定する。customer[0].startswith(“K”)は、顧客IDが「K」で始まる場合に「True」を返す
import openpyxl wb = openpyxl.load_workbook("顧客マスタ.xlsx") ws = wb["Sheet1"] #顧客マスタの全データリスト customer_list = [] # 顧客マスタの全行を1行ずつ読み込む for row in ws.iter_rows(min_row=2): # 顧客IDのセルが空になったら終了 if row[0].value is None: break value_list = [] for c in row: value_list.append(c.value) customer_list.append(value_list) #検索結果リスト target_list = [] #顧客の検索 for customer in customer_list: #検索条件(顧客IDがKで始まるか) if customer[0].startswith("K"): target_list.append(customer) #確認 for target in target_list: print(target)じ
実行結果
IDの数値の範囲で検索する
- 「K0004」の「0004」の部分のように、数値を認識して範囲を検索する
⇨今回の顧客IDは先頭アルファベット1文字+数字の文字列になっているので、数字の部分を切り出し、数値として認識するようにする
・・・ #顧客の検索 for customer in customer_list: customer_id = customer[0] #顧客IDの数値部分 number_id = customer_id[1:] #検索条件(顧客IDの数値部分が7以上) if int(number_id) >= 7: target_list.append(customer) ・・・
参考文献
¥2,398 (2024/11/20 21:38時点 | 楽天市場調べ)
ポチップ
コメント