Board logo

標題: vlookup 的問題 [打印本頁]

作者: renzhi2020    時間: 2011-6-4 19:07     標題: vlookup 的問題

請問 大大
lookup時若相符的條件有好幾個,公式通常都只會以第一個找到的標準,請問有辦法以最後一個為標準嗎?
如附件範例 (為何系統不能直接附excle檔了:Q )
[attach]6492[/attach]
作者: Hsieh    時間: 2011-6-4 20:01

C4=LOOKUP(2,1/($F$5:$F$10=B4),$G$5:$G$10)
作者: renzhi2020    時間: 2011-6-5 01:12

嗯嗯,真得可以核對最後一個也
非常感謝版主大大~
作者: brabus    時間: 2011-6-11 22:11

本帖最後由 Hsieh 於 2011-6-11 22:37 編輯

看不太明白
為什麼要用1/($F$5:$F$10=B4呢
作者: Hsieh    時間: 2011-6-11 22:41

回復 4# brabus

為了產生一個含有1或錯誤值#DIV/0!的陣列
1/TRUE等於1
1/FALSE等於#DIV/0!
作者: brabus    時間: 2011-6-21 20:51

回復  brabus

為了產生一個含有1或錯誤值#DIV/0!的陣列
1/TRUE等於1
1/FALSE等於#DIV/0!
Hsieh 發表於 2011-6-11 22:41



    請問一下高手
關於陣列有什麼好的書可以看的
看你用的好熟練
我都不太了解
所以想請問一下可以買什麼書來看呢
作者: ANGELA    時間: 2011-6-21 23:23

沒有比論壇的文章更好的書了,多看別人的思路多做 練習,每個問題都會有很多解法,多看自然就懂.實在看不懂再提問,很快就會了.
作者: vbstudy    時間: 2011-10-29 22:53

本帖最後由 vbstudy 於 2011-10-29 23:12 編輯

請問
LOOKUP(2,1/($F$4:$F$10=B4),$G$4:$G$10)
拆解後是
LOOKUP(2,1/(${TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE}),${1;3;2;5;8;1;3})
-->LOOKUP(2,1/(${1;1;1;1;1;0;0}),${1;3;2;5;8;1;3})
-->=LOOKUP(2,{1;1;1;1;1;#DIV/0!;#DIV/0!},{1;3;2;5;8;1;3})
請問再下來的步驟是怎樣呢?
為什麼這樣會知道要抓最後一列呢?

因為F4、F5、F6、F7不都是
LOOKUP(2,1,1)
LOOKUP(2,1,3)
LOOKUP(2,1,2)
LOOKUP(2,1,5)
(因為對陣列不是很熟,不知道這樣對不對)

另外,lookup前面的2是不是指lookup_vector要小於等於2呢?
能不能改成1呢(我改成1後結果還是跑得出來)

謝謝~
作者: Hsieh    時間: 2011-10-30 22:49

本帖最後由 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會以二分法來比對資料,當折半後的資料就被找到符合的值,就會以此為答案
這樣就不能找到真正的最後一個值。(請參考圖片)
[attach]9332[/attach]
LOOKUP函數目的在於,從一單欄或單列的陣列中(lookup_vector)
尋找小於或等於lookup_value的值,在對應相同位置的result_vector
所以,你不應該將LOOKUP的lookup_vector以單一個值來看待
作者: gong    時間: 2011-11-1 23:06

result_vector        lookup_vector        結果               
                A        E        J
A        1        1        1        1
B        1        2        2        2
C        1        2        2        2
D        1        1        1        1
E        1        2        1        0.5
F        1        1        2        2
G        1        1        2        2
H        1        1        3        0.2
I        1        1        1        0.1
J        1        1        5        0.9
                               
                二分法判斷        二分法判斷        二分法判斷
                j=INT((COUNT(E4:E13)+1)/2)        j=INT((COUNT(F4:F13)+1)/2)        j=INT((COUNT(G4:G13)+1)/2)
                當E8>1則往前找判斷        當F8=1則取C8        當G8<1則往後找判斷
                k=INT((COUNT(E4:E8)+1)/2)                k=INT((COUNT(G8:G13)+1)/2)
                當E6>1則判斷                當G11<1則往後找判斷
                l=INT((COUNT(E4:E6)+1)/2)                l=INT((COUNT(G11:G13)+1)/2)
                當E5=1則取C5                當G12=1則取C12
                當E5>1則判斷E4                當G12<1則判斷G13
                當E4=1則取C4                當G12>1則取C12
                當E4>1則#N/A                當G12<=1則取C13
作者: vbstudy    時間: 2011-11-3 22:47

謝謝兩位版主的指導,
雖然看的有些濛濛懂懂的,
不過對Lookup有清楚一點了
我會再琢磨您們寫的內容的
感謝∼∼
作者: b31b6t2t4    時間: 2012-7-18 10:50

真的是太神奇了,
研究了好一陣子才看得懂




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)