返回列表 上一主題 發帖

vlookup 的問題

C4=LOOKUP(2,1/($F$5:$F$10=B4),$G$5:$G$10)
學海無涯_不恥下問

TOP

回復 4# brabus

為了產生一個含有1或錯誤值#DIV/0!的陣列
1/TRUE等於1
1/FALSE等於#DIV/0!
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2012-1-30 18:15 編輯

回復 8# vbstudy

=LOOKUP(2,{1;1;1;1;1;#DIV/0!;#DIV/0!},{1;3;2;5;8;1;3})
這樣在LOOKUP函數中
lookup_value=2
lookup_vector={1;1;1;1;1;#DIV/0!;#DIV/0!}
result_vector={1;3;2;5;8;1;3}
當然lookup_value只要大於等於lookup_vector陣列中的最小值都可以
所以改成1也會得到相同結果(不過要看運氣)因為當這個陣列的排列,不會使1都集中在一起時,
因為LOOKUP會以二分法來比對資料,當折半後的資料就被找到符合的值,就會以此為答案
這樣就不能找到真正的最後一個值。(請參考圖片)

LOOKUP函數目的在於,從一單欄或單列的陣列中(lookup_vector)
尋找小於或等於lookup_value的值,在對應相同位置的result_vector
所以,你不應該將LOOKUP的lookup_vector以單一個值來看待
學海無涯_不恥下問

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題