說明:希望通過輸入「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編號接不出來><了)
題目:
ps:如果G4沒有找到資料,希望不要出現「#N/A」,可以是空白或是可加入文字 例:「"無相同資料"」。求程式解。(完整程式碼請解說含組成邏輯)
'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
看到結果
你是否也覺得
人生應該把時間浪費在更美好的事物上
看到這些formula............
我眼都花了,也難以維護,換成是我,我會用c# + Epplus來直接讀寫EXCEL檔
(執行程式電腦不用安裝OFFICE,包括在WEB伺服器上)
用c# epplus效能不差,幾萬行也不過幾秒,遠比VBA實在多了
如果慣用PYTHON也有openxyl套件可用,效能也很高,且都能不需安裝OFFICE直接讀寫XLSX
試試看:
=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))))
If(B4<>"",IF(OR(B4=E4,B4=F4,B4=G4,B4=H4),C4,""),"")