作者runaway580 (让个位)
看板Office
标题[算表] match列号问题
时间Wed Mar 12 23:32:57 2014
软体: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
2F:→ runaway580:再次感谢S大 今天大概可以早点结案了... 03/13 00:42
3F:推 I4Lione:冒昧斗胆请教 S大,为什麽要用 0/((A:A=A5)*(B:B=B5)) 03/13 00:52
4F:→ I4Lione:这样的用法,而不能把 0/ 省略,直接用 03/13 00:52
5F:→ I4Lione:LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B)) 或 03/13 00:52
6F:→ I4Lione:LOOKUP(1,((A:A=A5)*(B:B=B5)),ROW(B:B)) 呢? 03/13 00:52
7F:→ I4Lione:我知道这样写的结果是错的,但一直不懂为什麽,非常感谢! 03/13 00:52
8F:→ soyoso:这是因为lookup函数有递增和二分法的观念 03/13 07:52
9F:→ soyoso:LOOKUP(TRUE,((A:A=A5)*(B:B=B5)),ROW(B:B))的写法 03/13 07:53
10F:→ soyoso:它会先去找1048576/2=524288这一列a和b是否满足条件 03/13 07:53
11F:→ soyoso:结果为false(0)还未大於等於true(1) 03/13 07:53
12F:→ soyoso:函数会接着找下半部,再二分法,找786432这一列 03/13 07:54
13F:→ soyoso:条件满足结果一样还未大於等於,再往下找 03/13 07:54
14F:→ soyoso:因条件一直没有满足就一直往下找 03/13 07:55
15F:→ soyoso:找到最後一列都未满足时,它就会回传最後一列列号 03/13 07:55
16F:→ soyoso:另外就是lookup有忽略错误值 03/13 08:05
17F:→ soyoso:这就是为什麽要用0/,0/1=0,0/0=#div/0错误值 03/13 08:05
18F:推 I4Lione:感谢 S大精辟的解说,本来在想当 LOOKUP 函数在 03/13 22:47
19F:→ I4Lione:第 524288 列找到 #DIV/0! 之後,会做什麽动作? 03/13 22:47
20F:→ I4Lione:所以我可以理解成所有 #DIV/0! 都一开始就直接被忽略了, 03/13 22:47
21F:→ I4Lione:其实只是在执行 LOOKUP(1,{0},{5}) 而已,这样理解对吧? 03/13 22:47
22F:→ soyoso:是的^^ 03/13 22:53
23F:推 I4Lione:大大感谢 m(_ _)m 03/13 23:04