You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VLOOKUP匹配两张不同表格的数据并填充对应课程日期

解决方案

下面分不同使用场景给出最简便的实现方法:

方法1:Excel/WPS 表格(零代码,普通用户首选)

用XLOOKUP多条件匹配即可快速完成:

  • 先给第一张表命名为「学习记录表」,第二张表命名为「待填充表」
  • 假设待填充表的ID在A列、姓名在B列、CourseA在C列、CourseB在D列,学习记录表的ID在A列、姓名在B列、课程名称在C列、课程日期在D列
  • 选中待填充表C2单元格,输入公式:=XLOOKUP(A2&B2&"CourseA", 学习记录表!A:A&学习记录表!B:B&学习记录表!C:C, 学习记录表!D:D, "无学习记录")
  • 回车后下拉填充整列,CourseB列只需把公式里的"CourseA"改成"CourseB"重新填充即可

老版本无XLOOKUP的Excel可以用INDEX+MATCH组合实现:
输入=INDEX(学习记录表!D:D,MATCH(A2&B2&"CourseA",学习记录表!A:A&学习记录表!B:B&学习记录表!C:C,0))后按Ctrl+Shift+Enter数组回车生效,找不到记录会返回#N/A,可自行嵌套IFERROR处理异常值

方法2:Python Pandas(数据量超10万行时使用)

几行代码批量处理,逻辑是先把长表转宽表再关联:

import pandas as pd

# 读取两张表
df_record = pd.read_excel("学习记录表.xlsx")
df_empty = pd.read_excel("待填充表.xlsx")

# 长表转宽表,课程名转为列,值为对应日期
df_pivot = df_record.pivot(index=["ID", "姓名"], columns="课程名称", values="课程日期").reset_index()

# 关联到待填充表,输出结果
df_result = df_empty[["ID", "姓名"]].merge(df_pivot[["ID", "姓名", "CourseA", "CourseB"]], on=["ID", "姓名"], how="left")
df_result.to_excel("填充完成表.xlsx", index=False)

方法3:SQL(数据存储在数据库时使用)

用条件聚合+左关联即可查询出结果:

SELECT 
    t2.ID,
    t2.姓名,
    MAX(CASE WHEN t1.课程名称 = 'CourseA' THEN t1.课程日期 END) AS CourseA,
    MAX(CASE WHEN t1.课程名称 = 'CourseB' THEN t1.课程日期 END) AS CourseB
FROM 待填充表 t2
LEFT JOIN 学习记录表 t1 ON t2.ID = t1.ID AND t2.姓名 = t1.姓名
GROUP BY t2.ID, t2.姓名

内容的提问来源于stack exchange,提问作者Bruno Tavares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:15:03