|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
佩服海鲜老师的专研精神。
我觉得这个公式- =LOOKUP(E9,A2:A9,--B3:B4)
复制代码 之所以出错是因为,公式先处理了--B3:B4,这样第三参数就变成了数组而不是单元格的引用。这是有差别的,差别在于直接用单元格引用,这样第三参数是可以自扩展的(结果是17),但是对B3:B4先做减负运算,他便不在是单元格引用,只是固定的{12;13}数组了,没办法自扩展所以会出错。
按照上面的理解就可以解释红色产生0的原因。由于9^9大于65536,第三参数会自动扩展到与row(a:a)对应的3:65536+2,但后两个在单元格中无法表示出来,所以是0。其实这和你查- =LOOKUP(65535,ROW(A:A),B3:B7)
复制代码 结果是0(返回的是B65537的值--看不见的0),是一个道理的。但是如果你查- =LOOKUP(65534,ROW(A:A),B3:B7)
复制代码 ,他返回的就应该是B65536的值了。
不知道我理解的对不对,也不知道说的清不清楚。
有机会看到lookup的反编译代码,再过来切磋,呵呵。 |
评分
-
1
查看全部评分
-
|