import openpyxl wb=openpyxl.load_workbook("한국임업진흥원.xlsx") ws=wb.active filled={} for m in ws.merged_cells.ranges: top=ws.cell(m.min_row,m.min_col).value for r in range(m.min_row,m.max_row+1): for c in range(m.min_col,m.max_col+1): filled[(r,c)]=top def eff(r,c): return filled.get((r,c),ws.cell(r,c).value) for r in range(3,ws.max_row+1): k=str(ws.cell(r,11).value or "") if "tech_02.do" in k: e=[eff(r,c) for c in range(4,11)] lbl=[x for x in e if x and str(x).strip()] print(f"B{ws.cell(r,2).value} r{r}: D~J={'>'.join(str(x) for x in lbl)} | L={ws.cell(r,12).value} M={ws.cell(r,13).value} N={ws.cell(r,14).value} O={ws.cell(r,15).value}") print(f" K={k.split('kofpi.or.kr')[1] if 'kofpi' in k else k}") print("max_row:", ws.max_row)