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 (2025/11/04 03:26時点 | 楽天市場調べ)

コメント