excel if 数组_excel if({1,0})数组的运算原理
if({1,0},A1:A4,B1:C4)={A1:A4,C1:C4},我想请老师帮忙指导一下,为什么选择的是C1:C4,这个选择和0在{1,0}中的位置有关,我实验得知这符合数组的运算规则——数组相同位置的元素进行运算。但是它们之间进行了什么运算呢?加减乘除都不对。能否请老师写出if({1,0},A1:A4,B1:C4)={A1:A4,C1:C4}这个过程运算的详细步骤(不是我懒,F9不显示,想了好几天了),谢谢~
最佳答案

为什么选择的是C1:C4?
这就是if({1,0},……的规定,
常量=1,即:条件成立选择其第二个参数——区域的第一列,
常量=0,即:条件不成立选择第三个参数——区域的最后一列。
=======================================
这就是if({0,1},……的规定,
常量=0,即:条件成立选择其第三个参数——区域的第一列,
常量=1,即:条件不成立选择第二个参数——区域的最后一列。(如图所示)

IF({1,0},……,……) 或IF({0,1},……,……)的一个用途是:
弥补了VLOOKUP函数的只能在首列查找的不足。
追问:
额,那个不是只能在首列查找,它通过1,0的位置排列,可以有很多1或0,重排实现建立一个内存数组。0代表区域的第三个参数的最后一列是错误的。它们之间进行了数组运算。数组的列数是由{1,0……}这个数组确定的,行数则是根据其所在的具体公式要求进行的,比如如果在Vlookup公式里,它的行数必须由if函数的第三个参数确定。如果仅仅在if函数里,则由第二参数和第三参数的行数最大值确定。你的回答不是我想要的结果。我想知道数组之间进行的运算是什么样的?目前的猜测是进行了一步中间运算,但没有理论支撑。有兴趣探讨一下吗? 追答:
请问LOOKUP函数是首列查找吗?0代表区域的第三个参数的最后一列是错误的。这恰恰是你大错而特错!1,0变成0,1了,看准了再说话。这世道是怎么了,不让说实话!再见!!!
追问:
为什么就生气了?0在数组{1,0}中的位置代表它取第三个参数数组的相同列数的元素。比如{1,0},它取第三个参数中第二列元素,列数不够,会进行扩展。{1,0,0},内存数组会取第三个参数的第二列和第三列。第三个参数如果是一列,则会扩展到三列。如果是2列,则内存数组第三列返回错误值。Vlookup配合{1,0}理论上可以在原数据的任意列进行查找,因为它生成了一个新的内存数组,摒弃了原数据的排列方式。当然,在内存数组里,还是进行的首列查找,这是不能改变的。
其他回答
其它网友回答:
你试试改成这样看看 =IF(OR({1,0}),A1:A4,B1:C4)=(A1:A4,C1:C4)
追问:
请问{1,0}分别和A1:A4,B1:C4这两个数组间进行了什么运算?可以手写运算过程,拍个图片发上来吗?谢谢
追答:
我只是知道你用{}这个括号是不对的,这个括号只能用在纯数值的函数公式,比如or(A1={1,2,3,4}),A2,A3,) 用在if({1,0},是不对的,if指的是判断单元格区域或者数值,但是括号必须是() 其实我不懂函数,我也是才学的
追答:
我真不知道运算过程,也不管它,只要公式得出的最后结果是我要的就行,我只管复制粘贴来用
追问:
好吧,仍然感谢你。这个数组没错,你可以试着用用,很有用的数组。
其它网友回答:
if ({1,0},A1:A4,B1:C4)={A1:A4,C1:C4},
其它网友回答:
这个公式有问题。
其它网友回答:
因为if函数是IF(条件,成立的公式或结果,不成立的公式或结果)
其它网友回答:
你的公式括号就不匹配:
其它网友回答:
if ( {1,0}, A1:A4,B1:C4)={A1:A4,C1:C4},
其它网友回答:
并且公式不全,不知道这个公式是要达到什么结果。
其它网友回答:
追问:
这是一个数组公式,结果是一个数组。公式是全的,问题请看详细描述内容。
追答:
如果你说这个公式是全的,那可能是我不懂数组公式了。这个数组公式真弄不懂了。
追问:
if ({1,0},A1:A4,B1:C4)这个确实没有问题,{A1:A4,C1:C4}这个可能我表达的不是很清楚,这是返回A1:A4和C1:C4单元格的内容,这些内容组成了一个新的数组。{1,0}和A1:A4,B1:C4这两个数组或区域进行了什么样的运算呢?能否发个运算过程图片,谢谢