当然可以。下面是一个具体的案例,说明如何使用=LOOKUP(1,0/((条件1*条件2*...)), 返回区域)这个公式。
假设我们有一个学生成绩表,其中包含学生的姓名、数学成绩、英语成绩和物理成绩。我们想要找到所有三门课成绩都大于60分的学生,并返回他们的姓名。
数据表如下(假设在A1:D5区域):
A B C D
1 姓名 数学 英语 物理
2 张三 70 85 65
3 李四 55 90 72
4 王五 68 62 78
5 赵六 88 80 91
在这个案例中,条件1是数学成绩大于60,条件2是英语成绩大于60,条件3是物理成绩大于60。我们想要返回满足所有这些条件的学生姓名。
公式可以写成:
=LOOKUP(1, 0/((B2:B5>60)*(C2:C5>60)*(D2:D5>60)), A2:A5)
但是,由于LOOKUP函数返回的是第一个匹配项后的值(在这个技巧中,实际上是利用错误值来“跳过”不满足条件的行),并且我们可能想要返回所有满足条件的学生姓名,这个公式需要一些调整来适应多值返回的情况。然而,标准的LOOKUP函数不支持直接返回多个值。
为了解决这个问题,我们可以使用数组公式(在较新版本的Excel中,这通常意味着不需要按Ctrl+Shift+Enter,但公式仍然按数组公式处理)结合其他函数(如TEXTJOIN,在较新版本的Excel中可用)来创建一个能够返回所有满足条件的学生姓名的公式。但是,由于TEXTJOIN不是与LOOKUP直接结合使用的,我们需要一个不同的方法。
一个更简单且直接的方法是使用FILTER函数(在Office 365和Excel 2019及更高版本中可用),它可以轻松地返回满足多个条件的数组:
=FILTER(A2:A5, (B2:B5>60)*(C2:C5>60)*(D2:D5>60))
这个FILTER公式会返回所有数学、英语和物理成绩都大于60分的学生姓名。
但是,如果你坚持要使用LOOKUP技巧(可能是为了学习或兼容性原因),并且你的Excel版本不支持FILTER,你可以考虑使用辅助列或编写更复杂的数组公式结合其他函数(如IF、SMALL、ROW等)来模拟多值返回的行为。然而,这样的公式通常会更复杂且难以维护。
对于学习目的,了解LOOKUP的这个技巧是有价值的,但在实际应用中,当有更简单、更直接的方法可用时(如FILTER函数),通常应该优先考虑使用这些方法。