iT邦幫忙

1

求解: EXCEL 的 VLOOKUP 函數,其它函數的也行!(第二彈發現新問題)

說明:希望通過輸入「B4.字名或編號或a編號或b編號」求得「I4.失物金額數」
目前:B4輸入「名字」「編號」可以求得I4,輸入a.b編號卻不行。程式碼怎麼改才能OK呢?

「想法1] I4程式碼:
=IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), VLOOKUP(F4,B4:C4,2,0), VLOOKUP(E4,B4:C4,2,0))(a編號與b編號接不出來><了)
「想法2」I4程式碼:
=IFERROR(VLOOKUP(E4,B4:C4,2,FALSE),VLOOKUP(F4,B4:C4,2,FALSE))
(a編號與b編號接不出來>
<了)
題目:
https://ithelp.ithome.com.tw/upload/images/20200929/201312206CshZJwjd6.jpg

ps:如果G4沒有找到資料,希望不要出現「#N/A」,可以是空白或是可加入文字 例:「"無相同資料"」。求程式解。(完整程式碼請解說含組成邏輯)

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2020-09-29 12:44:56 檢舉
組出來也會超級長,不建議用公式處理。
累累 iT邦新手 5 級 ‧ 2020-09-29 14:09:21 檢舉
=IFERROR(VLOOKUP(E4,B4:C4,2,FALSE),VLOOKUP(F4,B4:C4,2,FALSE)
查兩個,少一組程式碼了。沒法接第三組...也沒有處理#N/A。還有進步空間嗎?
https://youtu.be/g835ZXDLTi0
累累 iT邦新手 5 級 ‧ 2020-10-01 23:07:29 檢舉
謝謝囉!!這就是我需要的,基本功。之前都是瞎試,不了解公式的原理能用就好,最後變成現在這樣子總是卡卡的。
1
海綿寶寶
iT邦大神 1 級 ‧ 2020-09-29 14:47:52
最佳解答
'STEP 1 - VLOOKUP
VLOOKUP(E4,B4:C4,2,0)
VLOOKUP(F4,B4:C4,2,0)
VLOOKUP(G4,B4:C4,2,0)
VLOOKUP(H4,B4:C4,2,0)

'STEP 2 - IF(ISNA(), True, False)
IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), , VLOOKUP(E4,B4:C4,2,0))
IF(ISNA(VLOOKUP(F4,B4:C4,2,0)), , VLOOKUP(F4,B4:C4,2,0))
IF(ISNA(VLOOKUP(G4,B4:C4,2,0)), , VLOOKUP(G4,B4:C4,2,0))
IF(ISNA(VLOOKUP(H4,B4:C4,2,0)), , VLOOKUP(H4,B4:C4,2,0))

'STEP 3 - 都找不到時顯示 無相同資料
IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), , VLOOKUP(E4,B4:C4,2,0))
IF(ISNA(VLOOKUP(F4,B4:C4,2,0)), , VLOOKUP(F4,B4:C4,2,0))
IF(ISNA(VLOOKUP(G4,B4:C4,2,0)), , VLOOKUP(G4,B4:C4,2,0))
IF(ISNA(VLOOKUP(H4,B4:C4,2,0)), "無相同資料", VLOOKUP(H4,B4:C4,2,0))

'STEP 4 - 把最後一組插進前一組的 True 區域
IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), , VLOOKUP(E4,B4:C4,2,0))
IF(ISNA(VLOOKUP(F4,B4:C4,2,0)), , VLOOKUP(F4,B4:C4,2,0))
IF(ISNA(VLOOKUP(G4,B4:C4,2,0)), IF(ISNA(VLOOKUP(H4,B4:C4,2,0)), "無相同資料" , VLOOKUP(H4,B4:C4,2,0)), VLOOKUP(G4,B4:C4,2,0))

'STEP 5 - 把最後一組插進前一組的 True 區域
IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), , VLOOKUP(E4,B4:C4,2,0))
IF(ISNA(VLOOKUP(F4,B4:C4,2,0)), IF(ISNA(VLOOKUP(G4,B4:C4,2,0)), IF(ISNA(VLOOKUP(H4,B4:C4,2,0)), "無相同資料" , VLOOKUP(H4,B4:C4,2,0)), VLOOKUP(G4,B4:C4,2,0)), VLOOKUP(F4,B4:C4,2,0))

'STEP 6 - 把最後一組插進前一組的 True 區域, I4 公式如下
IF(ISNA(VLOOKUP(E4,B4:C4,2,0)), IF(ISNA(VLOOKUP(F4,B4:C4,2,0)), IF(ISNA(VLOOKUP(G4,B4:C4,2,0)), IF(ISNA(VLOOKUP(H4,B4:C4,2,0)), "無相同資料" , VLOOKUP(H4,B4:C4,2,0)), VLOOKUP(G4,B4:C4,2,0)), VLOOKUP(F4,B4:C4,2,0)), VLOOKUP(E4,B4:C4,2,0))

'收工放飯

另外,點這裡是我這次鐵人賽唯一的一篇文章,喜歡的話左上角點 Like

看到結果
你是否也覺得
人生應該把時間浪費在更美好的事物上
/images/emoticon/emoticon10.gif

累累 iT邦新手 5 級 ‧ 2020-09-29 15:33:20 檢舉

/images/emoticon/emoticon01.gif

累累 iT邦新手 5 級 ‧ 2020-09-29 15:58:41 檢舉

我的天阿好長喔

累累 iT邦新手 5 級 ‧ 2020-09-29 16:54:37 檢舉

神阿~~~
1.查四組 (成功)
2.#N/A (消除成功)
3.無配對的I4=空白或「"無相同資料"」 (成功)
4.程式碼邏輯說明教學 (成功)
PS:程式碼輸入STEP6就可以,但要把多於的空格處理掉,Excel才收貨。其它看官注意囉!!

3
japhenchen
iT邦大師 1 級 ‧ 2020-09-29 15:19:38

看到這些formula............
我眼都花了,也難以維護,換成是我,我會用c# + Epplus來直接讀寫EXCEL檔
(執行程式電腦不用安裝OFFICE,包括在WEB伺服器上)
用c# epplus效能不差,幾萬行也不過幾秒,遠比VBA實在多了

如果慣用PYTHON也有openxyl套件可用,效能也很高,且都能不需安裝OFFICE直接讀寫XLSX

累累 iT邦新手 5 級 ‧ 2020-09-29 16:20:10 檢舉

感謝你的經驗分享,初學者們可以少走很多遠路。

2
richardsuma
iT邦大師 1 級 ‧ 2020-09-29 15:56:26

試試看:
=IFERROR( XLOOKUP(B3,E:E,I:I), IFERROR( XLOOKUP(B3,F:F,I:I), IFERROR( XLOOKUP(B3,G:G,I:I), IFERROR( XLOOKUP(B3,F:F,I:I),0))))

累累 iT邦新手 5 級 ‧ 2020-09-29 16:15:52 檢舉

程式碼填入I4=0 .B4填入所有數I4=0
程式碼的最後一個零,可以改成文字。
解決了#N/A和「"無相同資料"」的問題。

恭喜你!!

2
akissiva
iT邦新手 5 級 ‧ 2020-09-30 01:34:52

If(B4<>"",IF(OR(B4=E4,B4=F4,B4=G4,B4=H4),C4,""),"")

累累 iT邦新手 5 級 ‧ 2020-09-30 13:42:12 檢舉

程式碼成功運行:給你一個特優(拳王)囉/images/emoticon/emoticon74.gif
非常優秀,因為1找4欄、1找5欄.......只要小改一下程式就能完成。

因為資料量約200個,有下拉的需求,改成這樣子:
=IF(B4<>"",IF(OR(B4=E:E,B4=F:F,B4=G:G,B4=H:H),C4,"無相同資料"),"")

我要發表回答

立即登入回答