🤖 Assistant
好的!你提供的公式是一个非常典型的 多条件 + 多列匹配查找公式,适用于“行列交叉”的查找场景。下面我将用简单易懂的语言为你写一个完整教程,包括应用场景、公式拆解、样例解析,以及使用注意事项。
✅ Excel 多条件 + 交叉列查找公式教程
公式结构:
=INDEX(Sheet1!$C$2:$G$100, MATCH(1, (Sheet1!$A$2:$A$100 = B2) * (Sheet1!$B$2:$B$100 = C2), 0), MATCH(D2, Sheet1!$C$1:$G$1, 0))
🧠 功能说明:
这个公式的作用是:
📊 举例说明
✅ 数据源(Sheet1)
| 姓名 | 学科 | 一年级上 | 一年级下 | 二年级上 | 二年级下 |
|---|---|---|---|---|---|
| 张三 | 数学 | 85 | 88 | 90 | 92 |
| 李四 | 英语 | 78 | 80 | 85 | 89 |
| 王五 | 数学 | 82 | 84 | 86 | 88 |
✅ 当前表格(要提取成绩)
| B 列(姓名) | C 列(学科) | D 列(学期) | 结果 |
|---|---|---|---|
| 张三 | 数学 | 一年级上 | 85 |
| 李四 | 英语 | 二年级下 | 89 |
| 王五 | 数学 | 一年级下 | 84 |
你在结果列中使用公式:
=INDEX(Sheet1!$C$2:$G$100, MATCH(1, (Sheet1!$A$2:$A$100=B2)*(Sheet1!$B$2:$B$100=C2), 0), MATCH(D2, Sheet1!$C$1:$G$1, 0))
🔍 公式拆解说明
🔹 Sheet1!$C$2:$G$100
👉 数据提取范围(只包含成绩,不含姓名和学科)
🔹 MATCH(1, (Sheet1!$A$2:$A$100 = B2) * (Sheet1!$B$2:$B$100 = C2), 0)
👉 多条件查找行号:
Sheet1!A2:A100 = B2→ 找“姓名”匹配的行Sheet1!B2:B100 = C2→ 找“学科”匹配的行- 二者相乘即同时匹配 → 返回第一个匹配的行号
例如:
- B2 = " 张三 "
- C2 = " 数学 "
匹配到第 1 行(张三 数学),所以 MATCH(...)=1
🔹 MATCH(D2, Sheet1!$C$1:$G$1, 0)
👉 根据“学期”标题定位列数:
- D2 = " 一年级上 "
- 查找标题行中“C1:G1”对应列号,比如 " 一年级上 " 是第 1 列 → 返回 1
🔹 INDEX(..., 行号, 列号)
最终返回交叉点值。
比如:
=INDEX(Sheet1!$C$2:$G$100, 1, 1) → 返回 85
✅ 最终效果
| 姓名 | 学科 | 学期 | 成绩 |
|---|---|---|---|
| 张三 | 数学 | 一年级上 | 85 |
| 李四 | 英语 | 二年级下 | 89 |
| 王五 | 数学 | 一年级下 | 84 |
⚠️ 注意事项
| 项目 | 建议操作 |
|---|---|
| 区域要一致 | Sheet1!$C$2:$G$100 要与标题 C1:G1 对应,不能错列 |
| 条件唯一性 | 姓名 + 学科组合应唯一,否则返回第一个匹配 |
| 防错处理 | 可加 IFERROR(...) 避免报错,如:=IFERROR(..., " 未找到 ") |
| 不支持模糊匹配 | 条件必须 完全相等,否则不会命中 |
🧰 拓展建议(进阶)
如果你想做成 查找表单 + 动态成绩提取系统,这个公式是很好的基础。你还可以:
- 将学期做成下拉菜单(数据验证)
- 将数据源放在隐藏表中
- 加上数据校验(如找不到返回“查无此人”)
🏁 总结
这个公式是:
✅ 灵活 ✅ 不受列顺序限制 ✅ 支持多条件查找 ✅ 适合处理“交叉表格”
如果你希望我为这个模板自动生成完整工作表布局,或者用 VBA 批量提取数据,也可以告诉我,我可以帮你设计完整结构!
正文完