|
losxunuo 发表于 2014-3-18 12:44 ![](static/image/common/back.gif)
太感谢楼上了!我想问问,能否进一步解释一下这个公式的逻辑吗?主要是Vlookup函数内部的嵌套不太理解。
...
這個問題涉及的知識點有點多,而且有點難度,不過你既然都有興趣研究競賽題,相信你應該有能力理解以下內容…
如我前面所講,vlookup的第一參數不支援數組形式,因此像vlookup({1,2},引用範圍,...)在內存中,返回的結果會等同於vlookup(1,引用範圍...)
但是piny大師後來發現,像vlookup和index這些不支援數組形式的函數,如果加了N+if(1...)或T+if(1...)的話,就會變成可以支援,不過原理不明
因此vlookup(N(if(1,{1,2},引用範圍,...)就可以返回正確的內存數組
相關的討論可見:
[分享] 为piny发现的INDEX+N+IF用法推波助澜
不過有一點要注意,就是N、T函數內的參數,如果是「引用」的話,只會返回引用最左上角的值
相關說明可見:
http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=882343&pid=7189125
因此vlookup(T(if(1,{"良","中","优"...})),...)可以返回正確的內存數組
但是vlookup(T(if(1,C$7:E$15)),...)在T的部分,只會回傳C7,因此還是無法回傳正確的內存數組
因此必需要將C$7:E$15這個「引用」,變成由文字所組成的「數組」
if(1,C$7:E$15)會直接返回C$7:E$15這個「引用」,但是if({1},C$7:E$15),因為第一參數是數組形式
因此會將C$7:E$15轉為{"良","中","优"...}這個數組,避開T函數只取最左上引用的問題
相關討論可見:
[讨论] IF({1} 与 IF(1 的区别
以上三個連結的內容都有一定難度,請小心服用
希望我以上說明講的夠清楚,如果有其它問題歡迎繼續討論~
|
评分
-
1
查看全部评分
-
|