excel中如何应用函数将符合条件的全部列出来?
假定A列有100行数据,B列有200行数据,均从A1开始,要求把A列中包含在B列的数据列出来。
公式:=index(a:a,small(if(countif(b$1:b$200,a$1:a$100),row($1:$100),4^8),row(a1)))&"" 该公式是数组公式,需要按组合键ctrl+shift+enter结束公式,下拉填充。
输出:
由于数组公式是对数组进行运算,数组可以是一维的也可以是二维的。一维数组可以是垂直的也可以是水平的。经过运算后,得到的结果可能是一维的,也可能是多维的,存放在不同的单元格区域中。
在公式或函数中使用数组常量时,其它运算对象或参数应该和第一个数组具有相同的维数。必要时,Microsoft Excel 会将运算对象扩展,以符合操作需要的维数。每一个运算对象的行数必须和含有最多行的运算对象的行数一样,而列数也必须和含有最多列数对象的列数一样。
例如: = SUM({1,2,3}+{4,5,6})内的第一个数组为1×3,得到的结果为1+2+3 和 4+5+6 的SUM,也就是21。如果将公式写成 = SUM({1,2,3}+4),则第二个数据并不是数组,而是一个数值,为了要和第一个数组相加,Excel 会自动将数值扩充成1 ×3 的数组。使用=SUM({1,2,3}+{4,4,4})做计算,得到的结果为1+4、2+4和3+4的和, 即18。
将数组公式输入单元格区域中时,所使用的维数应和这个公式计算所得数组维数相同。这样,Microsoft Excel 才能把计算所得的数组中的每一个数值放入数组区域的一个单元格内。
如果数组公式计算所得的数组比选定的数组区域还小,则 Microsoft Excel会将这个数组扩展,以便将它填入整个数组区域内。例如:={1,2;3,4}*2扩充后的公式就会变为={1,2;3,4}*{2,2;2,2},则相应的计算结果为“2,4,6,8”。再如:输入公式={1,2;3,4}*{2,3}扩充后的公式就会变为={1,2;3,4}*{2,3;2,3} ,则相应的计算结果为“2,6,6,12”。
如果 Microsoft Excel 将一个数组扩展到可以填入比该数组公式大的区域内,而没有扩大值可用的单元格内,这样就会出现#N/A错误值。
例如:={1,2;3,4}*{1,2,3} 扩充后的公式就会变为={1,2,#N/A;3,4,#N/A}*{1,2,#/A;1.2.#N/A} ,而相应的计算结果为“2,4,#N/A,4,6,#N/A”。
如果数组公式计算所得的数组比选定的数组区域还要大,则超过的值不会出现在工作表上。
由于一个单元格内只能储存一个数值,所以当结果是一组数据时,单元格只返回第一个值,,在其他不同的单元格上能够看到不同元素参与运算得到的不同结果。这一点正是我们所需要的。