python处理 excel 替代VLOOKUP
时间: 2025-02-15 21:56:14 浏览: 52
### 使用 Python 实现 Excel 中 VLOOKUP 功能
#### 方法一:利用 Pandas 库实现 VLOOKUP 功能
通过 `pandas` 可以轻松读取两个不同的表格并执行类似于 Excel 的 VLOOKUP 操作。以下是具体代码示例:
```python
import pandas as pd
# 加载源数据和查找表的数据框
source_df = pd.read_excel('/path/to/source_file.xlsx', header=0, sheet_name='SourceSheet')
lookup_df = pd.read_excel('/path/to/lookup_table.xlsx', header=0, sheet_name='LookupTable')
# 执行左连接来模拟VLOOKUP行为,基于共同列名 'KeyColumn'
merged_df = source_df.merge(lookup_df[['KeyColumn', 'ValueColumn']], on='KeyColumn', how='left')
# 将结果保存回新的Excel文件中
output_path = '/path/to/output_file.xlsx'
with pd.ExcelWriter(output_path) as writer:
merged_df.to_excel(writer, index=False)
print(f"Results have been saved to {output_path}")
```
此方法适用于当需要在一个较大的数据集中快速找到对应关系的情况[^2]。
#### 方法二:结合 OpenPyXL 和 Pandas 来实现动态更新的 VLOOKUP 效果
如果希望保留原始公式以便后续编辑,则可以采用如下方式,在实际单元格内写入 VLOOKUP 函数表达式:
```python
from openpyxl import Workbook, load_workbook
import pandas as pd
# 创建一个新的工作簿或加载现有工作簿
wb = load_workbook("/path/to/existing_workbook.xlsx")
# 获取特定的工作表
ws = wb["TargetSheet"]
# 假设要填充 B 列作为查询结果区域,并且 A 列包含关键字用于匹配
for row_num in range(2, ws.max_row + 1):
cell_reference = f"B{row_num}"
formula = (
"=IFERROR(VLOOKUP("
f"A{row_num}, "
"'AnotherSheet'!$A:$C, "
"COLUMN()-MIN(COLUMN($B$1))+COUNTA('AnotherSheet'!$A$1:$C$1),"
"FALSE)"
", \"\")"
)
ws[cell_reference].value = formula
# 保存更改后的文档
wb.save("/path/to/saved_workbook_with_formula.xlsx")
```
这种方法允许用户在生成的结果文件上继续手工调整或其他自动化流程中的进一步处理[^3]。
阅读全文
相关推荐


















