[英]lookup fail safe answer - excel formula I don't get
在此線程上:在 UNORDERED 值范圍內查找最后一個非零單元格的列引用我找到了兩個解決我的問題的方法。 但我無法理解他們的工作方式。 我確定它已在網上某處記錄,但找不到關鍵字。
=LOOKUP(2,1/(A1:L1<>0),COLUMN(A1:L1))
我應該使用什么關鍵字來查找有關數組A1:L1<>0
布爾運算符的結果/機制的文檔?
用作數組公式 (Ctrl+Shift+Enter) Excel 愉快地使用= A1:L1<>0
as = A1<>0
計算單元格。 它返回一個布爾值 (True=1, False=0)。 假設 boolean 后來被反轉,結果數組應該是1
和#DIV/0
,但LOOKUP()
搜索2
,作為lookup_value,並且似乎找到了它。
另外還有一個做同樣的事情,但我不會使用,因為我對數組公式沒有信心{=MAX(IF(yourrange=0,0,COLUMN(yourrange)))}
這個答案是從這里提取的,所以實際上所有的學分都歸於它的作者:
這是有效的,因為1/(E2:CO2<>0)
部分返回一個數組,其中單元格不為零......或#DIV/0!
錯誤在哪里。 LOOKUP 然后不會在該數組中找到 2,因此它與最后一個1匹配,即具有非零值的最后一列......然后它從標題行返回相應的值。
我發布它是因為該問題可以標記為重復,因為答案不在 SO 上。
更新:我想根據 Office 支持添加一些額外信息:
並以SO 上的這個問題為例
根據這個消息來源:
如果 LOOKUP 函數找不到lookup_value,則該函數匹配lookup_vector 中小於或等於lookup_value 的最大值。
當您執行1/(E2:CO2<>0)
部分時,返回一個數組(lookup_vector),其中單元格不為零......或#DIV/0!
,所以我們得到一個這樣的數組:
#DIV/0!;#DIV/0!;#DIV/0!;1;1;1;1;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!
所以 LOOKUP 從左到右檢查數組中的每個值。 如果什么也沒找到,它將取最大的一個,即 1。
但是因為 1 存在於數組中的許多位置,並且最后檢查的 1 位於第 8 個位置,因此公式然后轉到由COLUMN(A1:L1)
(result_vector) 創建的數組,如下所示:
1;2;3;4;5;6;7;8;9;10;11;12
它檢查第 8 個位置的值,該位置的值為 8,然后公式返回數字 8。
希望這能帶來一些啟發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.