→ runaway580:再次感謝S大 今天大概可以早點結案了... 03/13 00:42
推 I4Lione:冒昧斗膽請教 S大,為什麼要用 0/((A:A=A5)*(B:B=B5)) 03/13 00:52
→ I4Lione:這樣的用法,而不能把 0/ 省略,直接用 03/13 00:52
→ I4Lione:LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B)) 或 03/13 00:52
→ I4Lione:LOOKUP(1,((A:A=A5)*(B:B=B5)),ROW(B:B)) 呢? 03/13 00:52
→ I4Lione:我知道這樣寫的結果是錯的,但一直不懂為什麼,非常感謝! 03/13 00:52
→ soyoso:這是因為lookup函數有遞增和二分法的觀念 03/13 07:52
→ soyoso:LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B))的寫法 03/13 07:53
→ soyoso:它會先去找1048576/2=524288這一列a和b是否滿足條件 03/13 07:53
→ soyoso:結果為false(0)還未大於等於true(1) 03/13 07:53
→ soyoso:函數會接著找下半部,再二分法,找786432這一列 03/13 07:54
→ soyoso:條件滿足結果一樣還未大於等於,再往下找 03/13 07:54
→ soyoso:因條件一直沒有滿足就一直往下找 03/13 07:55
→ soyoso:找到最後一列都未滿足時,它就會回傳最後一列列號 03/13 07:55
→ soyoso:另外就是lookup有忽略錯誤值 03/13 08:05
→ soyoso:這就是為什麼要用0/,0/1=0,0/0=#div/0錯誤值 03/13 08:05
推 I4Lione:感謝 S大精闢的解說,本來在想當 LOOKUP 函數在 03/13 22:47
→ I4Lione:第 524288 列找到 #DIV/0! 之後,會做什麼動作? 03/13 22:47
→ I4Lione:所以我可以理解成所有 #DIV/0! 都一開始就直接被忽略了, 03/13 22:47
→ I4Lione:其實只是在執行 LOOKUP(1,{0},{5}) 而已,這樣理解對吧? 03/13 22:47
→ soyoso:是的^^ 03/13 22:53
推 I4Lione:大大感謝 m(_ _)m 03/13 23:04