Python读取一个excel中给出的两列文字,然后用VLOOKUP函数筛选出另一个excel中对应的两列包含这部分文字的表格,之后在excel中做出红色标记输出。
时间: 2025-04-07 09:01:30 浏览: 34
### 使用Python实现VLOOKUP功能并标记符合条件的数据
为了完成此操作,可以使用 `pandas` 库来读取 Excel 文件,并利用其强大的数据处理能力模拟 VLOOKUP 的行为。以下是具体的方法:
#### 方法概述
1. **读取 Excel 数据**:使用 `pandas.read_excel()` 函数加载两个 Excel 文件。
2. **执行查找操作**:通过 Pandas 的 `merge()` 或 `apply()` 方法实现类似于 VLOOKUP 的逻辑。
3. **条件判断与样式设置**:对于满足特定条件的数据,在导出时将其单元格颜色设为红色。
---
#### 实现代码示例
以下是一个完整的代码示例,展示如何用 Python 完成上述任务:
```python
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import PatternFill
# 步骤 1: 加载两个 Excel 文件
df_main = pd.read_excel('main_file.xlsx') # 主文件
df_lookup = pd.read_excel('lookup_file.xlsx') # 查找文件
# 假设 df_main 中有 'Key' 列作为主键,df_lookup 中也有对应的 'Key' 列
result_df = pd.merge(df_main, df_lookup[['Key', 'Value']], on='Key', how='left')
# 步骤 2: 添加标志列以表示匹配状态
result_df['Matched'] = result_df['Value'].notna()
# 将结果保存到新的 Excel 文件中
output_path = 'output_with_styles.xlsx'
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
result_df.to_excel(writer, index=False, sheet_name='Sheet1')
# 步骤 3: 设置单元格背景颜色为红色 (仅限于匹配的行)
workbook = Workbook()
sheet = workbook.active
fill_red = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
for idx, row in result_df.iterrows():
if row['Matched']:
for col_idx in range(1, len(result_df.columns)+1): # 遍历每一列
cell = sheet.cell(row=idx+2, column=col_idx) # 表头占一行,索引从第2行开始
cell.fill = fill_red
workbook.save(output_path)
print(f"已成功生成带样式的输出文件 {output_path}")
```
---
#### 关键点说明
1. **Pandas 合并操作**
- 使用 `pd.merge()` 可以轻松实现基于某一列或多列的关键字匹配[^1]。
- 参数 `how='left'` 表示左连接(即保留左侧 DataFrame 所有的记录),未找到匹配项的位置会填充 NaN。
2. **OpenPyxl 样式应用**
- OpenPyxl 是一个专门用于操作 Excel 文件的库,支持复杂的样式调整。
- 在本例中,当某行被标记为匹配时,该行的所有单元格都会被涂成红色[^2]。
3. **性能优化建议**
如果涉及大量数据,则应考虑分批处理或采用更高效的算法减少内存占用。
---
###
阅读全文
相关推荐

















