您能帮我理解为什么此 LOOKUP 函数如此工作吗?黄色突出显示的单元格 A6 中的公式似乎返回最右侧非零数据值(来自第 3 行)上方的标签(来自第 2 行)。
Microsoft Excel 电子表格摘录的图片
公式是=LOOKUP(1000,1/(A3:G3<>0),A2:G2)
我感到困惑的是:
- 数据单元未排序(Microsoft 文档说他们应该如此)
- 查找向量是“1/(A3:G3<>0)”。我猜我们通过将数据值除以 1 来生成一个向量,但是“<>0”的效果是什么?
- 查找值为1000,但其他值结果相同。
有没有更直接,更可靠或更少混淆的方法来实现同样的目标?即返回最右边非零数据值上方的标签?
谢谢!
答案1
也许您应该重新阅读您提供的链接中的文档,其中指出:
“中的值查找向量必须按升序排列“
这里的数组不仅仅是中的值A3:G3
,因为它们被操纵到表达式中
1/(A3:G3<>0)
哪个将要按升序形成一个数组,原因是 - 使用提供的数据集 - 它将解析为:
1/({TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE})
即:
{1,#DIV/0!,1,1,1,1,#DIV/0!}
即一个数组只能包含 1 或 #DIV/0! 错误。并且由于LOOKUP
忽略了错误值,因此可以说该数组确实按升序排列。
使用 1000 作为查找值虽然有点过度,但还是可以的:任何大于 1 的数字都足够了。
答案2
作为 O365 Excel 客户,您应该可以使用较新的 XLOOKUP 函数(而不是 LOOKUP)来访问其他可以准确执行所需操作的函数。
使用:=XLOOKUP(TRUE,A3:G3>0,A2:G2,,0,-1)
创建A3:G3>0
一个动态数组,对于您的特定示例来说,它是:{TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE}
此外,-1
XLOOKUP() 末尾的参数表示“从最后搜索”。此 XLOOKUP 表示“查找第一次 A3:G3>0 为 TRUE 时,从右边开始并返回第 2 行相应单元格的值。”
另外,感谢您在问题中加入了 Excel 版本的“关于”字符串。这是非常有用的信息。