返回列表 上一主題 發帖

[發問] excel VBA 函數-垂直搜尋相對應列的值

回復 1# junkwei
附檔舉個你實際遇到的例子&希望的結果,問到的答案會精準的多。。
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 5# junkwei
依5樓圖的問題,最簡單的方法是
在J2填上 =LOOKUP(2,1/((B$1:B$16=H2)*(C$1:C$16=I2)),A$1:A$16)
然後往下填滿公式,
這公式算是比較進階又還蠻常遇到的一個小技巧。

若要用VBA就參考G版的吧~
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

回復 10# junkwei
(B$1:B$16=H2)
B1~B16每個元素都和H2比,相同為True、不同為FALSE
假如只有B2及B3和H2相同,就等於為回傳 :  
False,True,True,False,False... 這樣的陣列

(C$1:C$16=I2)也是如此,假設例如回傳:
False,False,True,False,False...

(B$1:B$16=H2)*(C$1:C$16=I2)
相當於上述回傳的陣列個元素相乘,相乘時True會自動轉換為1、False為0
所以也是你說的"且"的動作,以上面舉的例子就是回傳:
0,0,1,0,0...

而用1除以(B$1:B$16=H2)*(C$1:C$16=I2),以上面舉的例子就是回傳:
#DIV/0!,#DIV/0!,1,#DIV/0!,#DIV/0!...
#DIV/0!為除零造成的錯誤

LOOKUP就自己查看說明了
如果 LOOKUP 函數無法找到 lookup_value,便會採用在 lookup_vector 中等於或僅次於 lookup_value 的最大值。

總之是要比對的欄放分母,多欄(2欄、3欄...都可以)都要符合就用*,取回結果的欄就放第三參數。
公式到EXCEL一般區應該比較多討論。
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題