【Python × Excel】 Openpyxl에서 Vlookup을 시도합니다.

소개



파이썬에서 Excel을 조작하고 있고 Vlookup하고 싶을 때 없습니까? Vlookup 편리하네요.
그래서 Openpyxl을 사용하여 책을 통해 Vlookup하는 방법을 설명합니다.

이번에는 아래의 평가 데이터와 급여 데이터를 샘플로 사용합니다.

평가 데이터


급여 데이터


준비



필요한 라이브러리를 설치합시다. 이번에 사용하는 것은 Openpyxl입니다.
import openpyxl as px

필요한 파일 로드



여기에서 평가 데이터와 급여 데이터의 2 개의 엑셀을 읽습니다.
wb = px.load_workbook("C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\評価データ.xlsx")
ws = wb["評価"]
wb2 = px.load_workbook("C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\給与データ.xlsx")
ws2 = wb2["給与"]

Vlookup



드디어 Vlookup을 해갑니다.
#Get last row
lastrow = ws.max_row
lastrow2 = ws2.max_row

#get values from IMaster Sheet
for i in range(2, lastrow + 1):
    name_hyoka = ws['B' + str(i)].value
    for j in range(2, lastrow2 + 1):
        name_salary = ws2['A' + str(j)].value
        # get values by vlook up
        if name_hyoka == name_salary:
            salary = ws2['B' + str(j)].value
            ws.cell(row = i, column = 5, value = salary)
            break

#Save
def save():
    wb.save(filename = "C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\評価データ_給与.xlsx")
save()

위의 코드는 평가 데이터의 직원 이름을 검색 값으로 급여 데이터의 직원 이름 열에서 검색합니다. 그리고 직원 이름이 일치하면 급여 데이터의 급여를 평가 데이터의 E 열에 쓰도록합니다.

포인트는
① 2개의 시트 중첩으로 하는 형태로 각각을 For 루프로 돌린다.
②if문으로 문자열 일치의 판정을 한다.
③ 일치하는 경우에만 값을 셀에 씁니다.
④break 잊지 않는다*여기 소중
⑤ 마지막으로 wb 저장

데이터의 읽어들이기는 컬럼의 알파벳 지정으로 할 수 있습니다만, 기입시에는 그것이 잘 안 되었기 때문에 숫자로 컬럼을 지정하고 있습니다.

덧붙여서 break를 넣는 것은 문자열 일치를 발견한 후, 다시 바깥쪽 루프로 돌아가서 다음 검색값을 검색하기 때문입니다.

코드 전체로서는 이런 느낌입니다.
import openpyxl as px

wb = px.load_workbook("C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\評価データ.xlsx")
ws = wb["評価"]
wb2 = px.load_workbook("C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\給与データ.xlsx")
ws2 = wb2["給与"]

#Get last row
lastrow = ws.max_row
lastrow2 = ws2.max_row

#get values from IMaster Sheet
for i in range(2, lastrow + 1):
    name_hyoka = ws['B' + str(i)].value
    for j in range(2, lastrow2 + 1):
        name_salary = ws2['A' + str(j)].value
        # get values by vlook up
        if name_hyoka == name_salary:
            salary = ws2['B' + str(j)].value
            ws.cell(row = i, column = 5, value = salary)
            break

#Save
def save():
    wb.save(filename = "C:\\Users\\ユーザー名\\Documents\\Qiita用サンプル\\評価データ_給与.xlsx")
save()

동작의 결과는 이쪽입니다.


E열에 급여가 들어있네요.

참고로 한 사이트



h tps : // / ぁ stc ぁ しんふぉ. 코 m / 엔 try / py 쵸 _ 에 x 세 l_v
이 사이트의 해설을 참고로 실천했습니다.

좋은 웹페이지 즐겨찾기