本帖最后由 valleytale 于 2013-3-29 02:17 编辑
xiaocaizhu299 发表于 2012-11-16 22:22
分别F9测试下,或许可以发现症结所在,如同if({1,0},{1,2},{3,4})返回{1,4},同理,if({1,1},{1,2},{3,4}) ...
……
if({1,0},{1,2},{3,4})返回{1,4},同理,if({1,1},{1,2},{3,4})返回{1,2},至于具体的运行机制……
愚以为这个问题可以类比于《线性代数》里面‘矩阵’的运算法则来理解
首先,{1,0}作为IF函数的第1参数应该视同{True,False},是两个逻辑值组成的一维行数组,它本身不参与矩阵运算,它只提供运算规则——对参与运算的两个数组的‘左元素’按条件True执行,而对‘右元素’按条件False执行……
对分别做为IF函数的第2、第3参数(Value_ifTrue,Value_ifFalse)参与运算的这两个一维行数组:{1,2},{3,4} 不妨看成仅拥有2个元素的两个行矩阵,而这两个矩阵现在要按照IF函数的第1参数:{1,0}={True,False}指定的规则——对‘左元素’按条件True,对‘右元素’按条件False——来运算,其结果只能是——
{按条件True返回第2参数Value_ifTrue的‘左元素’,按条件False返回的第3参数Value_ifFalse的‘右元素’}={{1,2}左元素,{3,4}右元素}={1,4}
同理,if({1,1},{1,2},{3,4})返回{1,2},
只不是这一次的运算规则变成了{1,1}={True,True},亦即:仅只对第2参数Value_ifTrue执行运算,而无视第3参数Value_ifFalse的存在(小三泪奔中~~
偶是不是把一个原本简单的问题掰得更复杂了……{:soso_e107:}
汗一个~~ |