[算表] match列號問題

看板Office作者 (讓個位)時間10年前 (2014/03/12 23:33), 編輯推噓3(3020)
留言23則, 3人參與, 最新討論串1/1
軟體:excel 2007 不好意思 又來發問了>< 假設我要取得產品A 版本2的列號 也就是 5 有加輔助欄的是打得出來 欄C那邊 把 欄A跟欄B連在一起 然後打在欄D打上 =match(A1&B1,C:C,0) 取得 請問有辦法在沒有輔助欄的狀態下取得嗎? 欄A 欄B 版本 產品A 1 產品B 1 產品B 2 產品B 3 產品A 2 產品A 3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.231.81.98

03/12 23:40, , 1F
http://goo.gl/034eIi match或lookup試試
03/12 23:40, 1F

03/13 00:42, , 2F
再次感謝S大 今天大概可以早點結案了...
03/13 00:42, 2F

03/13 00:52, , 3F
冒昧斗膽請教 S大,為什麼要用 0/((A:A=A5)*(B:B=B5))
03/13 00:52, 3F

03/13 00:52, , 4F
這樣的用法,而不能把 0/ 省略,直接用
03/13 00:52, 4F

03/13 00:52, , 5F
LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B)) 或
03/13 00:52, 5F

03/13 00:52, , 6F
LOOKUP(1,((A:A=A5)*(B:B=B5)),ROW(B:B)) 呢?
03/13 00:52, 6F

03/13 00:52, , 7F
我知道這樣寫的結果是錯的,但一直不懂為什麼,非常感謝!
03/13 00:52, 7F

03/13 07:52, , 8F
這是因為lookup函數有遞增和二分法的觀念
03/13 07:52, 8F

03/13 07:53, , 9F
LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B))的寫法
03/13 07:53, 9F

03/13 07:53, , 10F
它會先去找1048576/2=524288這一列a和b是否滿足條件
03/13 07:53, 10F

03/13 07:53, , 11F
結果為false(0)還未大於等於true(1)
03/13 07:53, 11F

03/13 07:54, , 12F
函數會接著找下半部,再二分法,找786432這一列
03/13 07:54, 12F

03/13 07:54, , 13F
條件滿足結果一樣還未大於等於,再往下找
03/13 07:54, 13F

03/13 07:55, , 14F
因條件一直沒有滿足就一直往下找
03/13 07:55, 14F

03/13 07:55, , 15F
找到最後一列都未滿足時,它就會回傳最後一列列號
03/13 07:55, 15F

03/13 08:05, , 16F
另外就是lookup有忽略錯誤值
03/13 08:05, 16F

03/13 08:05, , 17F
這就是為什麼要用0/,0/1=0,0/0=#div/0錯誤值
03/13 08:05, 17F

03/13 22:47, , 18F
感謝 S大精闢的解說,本來在想當 LOOKUP 函數在
03/13 22:47, 18F

03/13 22:47, , 19F
第 524288 列找到 #DIV/0! 之後,會做什麼動作?
03/13 22:47, 19F

03/13 22:47, , 20F
所以我可以理解成所有 #DIV/0! 都一開始就直接被忽略了,
03/13 22:47, 20F

03/13 22:47, , 21F
其實只是在執行 LOOKUP(1,{0},{5}) 而已,這樣理解對吧?
03/13 22:47, 21F

03/13 22:53, , 22F
是的^^
03/13 22:53, 22F

03/13 23:04, , 23F
大大感謝 m(_ _)m
03/13 23:04, 23F
文章代碼(AID): #1J87uiwj (Office)