🤖 Assistant
当然可以!下面是一份详细教程,讲解你提供的 Excel 公式的工作原理,并通过 实际例子 帮助你完全掌握它的用法。
🎯 公式内容
=IF(SUMPRODUCT((Sheet!$B$2:$B$3200 = $B2) * (Sheet!$C$2:$C$3200 = C$1)) > 0, "√", "")
🔍 功能说明
这个公式实现的功能是:
📊 示例场景(对照说明)
① 数据源表 Sheet(登记表)
| B 列(姓名) | C 列(课程) |
|---|---|
| 张三 | 数学 |
| 李四 | 英语 |
| 张三 | 英语 |
| 王五 | 数学 |
| 张三 | 物理 |
② 当前工作表(打√统计表)
| 姓名 | 数学 | 英语 | 物理 |
|---|---|---|---|
| 张三 | √ | √ | √ |
| 李四 | √ | ||
| 王五 | √ |
你在 C2 单元格中输入公式:
=IF(SUMPRODUCT((Sheet!$B$2:$B$3200 = $B2) * (Sheet!$C$2:$C$3200 = C$1)) > 0, "√", "")
然后向右、向下填充,就可以得到是否选了对应课程的标记(√)。
🧠 公式拆解
让我们分解这个公式看它是如何工作的:
👇 SUMPRODUCT((条件 1) * (条件 2))
用来实现 多条件计数
(Sheet!$B$2:$B$3200 = $B2)
👉 检查数据源中的“姓名”列是否等于当前行的名字。
(Sheet!$C$2:$C$3200 = C$1)
👉 检查数据源中的“课程”列是否等于当前列的课程名。
这两个条件同时成立的行,会返回 1 * 1 = 1,否则为 0。
例如:
| 姓名匹配 | 课程匹配 | 相乘结果 |
|---|---|---|
| ✅ | ✅ | 1 |
| ✅ | ❌ | 0 |
| ❌ | ✅ | 0 |
最终:
SUMPRODUCT(...) > 0
只要结果大于 0,说明存在匹配项,于是:
IF(..., "√", "")
→ 返回 √,否则返回空。
🧪 实战例子解析
在“张三”对应“英语”的格子里运行公式:
=IF(SUMPRODUCT((Sheet!$B$2:$B$3200=" 张三 ") * (Sheet!$C$2:$C$3200=" 英语 ")) > 0, "√", "")
数据源中确实有一行是 张三 | 英语,所以结果为 1,返回 √。
💡 提示与进阶用法
✅ 防止数据区域浪费计算资源
如果你的数据不多,可以把区域缩小为:
Sheet!$B$2:$B$100
不要用整列 B:B,否则性能会变差。
✅ 配合 条件格式 实现勾选高亮
你可以配合 条件格式,为包含“√”的单元格加颜色,比如绿色背景。
✅ 增加第三个条件?
也可以这么写:
=IF(SUMPRODUCT((条件 1) * (条件 2) * (条件 3)) > 0, "√", "")
✅ 总结
| 优点 | 缺点 |
|---|---|
| 支持多条件组合查询 | 不支持模糊匹配(仅精准) |
| 不依赖排序或唯一主键 | 区域太大性能下降 |
| 可用于打“√”或其他标志符 | 不支持跨工作簿引用 |
如果你需要我帮你把这个公式扩展成三条件查找,或自动汇总计数字段,我也可以继续帮你编写!
正文完