Excelのマスタからデータを検索する

このエントリーをはてなブックマークに追加
python
Python

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

実行結果

f:id:Moriane:20220122122806p:plain

 

条件に合う複数の顧客を検索する方法

ポイント

  • 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)じ

実行結果

f:id:Moriane:20220122122953p:plain

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)
・・・

参考文献

コメント

タイトルとURLをコピーしました