您的位置: 首页 > EXCEL技巧 > Excel函数 >

用数组公式获取一列中非空(非零)值

时间:2013-12-10 整理:docExcel.net

假如在A1:A10区域中有一列数据,其中包含数值“0”和空的单元格,现在需要将其中非零、非空的数据提取出来,并且按原数据的顺序排列,如图所示,可以使用下面的数组公式。

在B1单元格中输入数组公式:

=OFFSET($A$1,SMALL(IF($A$1:$A$10<>0,ROW($1:$10),""),ROW(A1))-1,0)

公式输入完毕后,按Ctrl+Shift+Enter结束,然后向下填充即可。

公式说明:上例A1:A10区域中,第1、2、4、10行包含非零、非空数据,先用“IF($A$1:$A$10<>0,ROW($1:$10),"")”来产生一个数列“{1;2;"";4;"";"";"";"";"";10}”,然后用SMALL函数来获取非空数值,最后用OFFSET函数返回单元格数据。OFFSET函数也可以用INDEX函数代替,如B1单元格中的数组公式可以写成:

=INDEX($A$1:$A$10,SMALL(IF($A$1:$A$10<>0,ROW($1:$10),""),ROW(A1)))

如果要仅仅获取A列中非空数据,即返回的数据中包括数值“0”,将上述公式中的“$A$1:$A$10<>0”改为“$A$1:$A$10<>""”即可:

=OFFSET($A$1,SMALL(IF($A$1:$A$10<>"",ROW($1:$10),""),ROW(A1))-1,0)

用数组公式获取一列中每隔N行的值 问题:用数组公式获取一列中每隔N行的值
回答:...连续地放到E列中从E4单元格开始的区域中,可以用下面的数组公式: 在E4单元格中输入数组公式: =IF((ROW()-ROW($E$4))*4>=(ROWS($A$1:$A$100)), ,OFFSET($A$1:$A$100,(ROW()-ROW($E$4))*4,0,1,1)) 输入完毕后,按Ctrl+Shift+Enter结束。然后向下拖动填充...
用数组公式获取一列中最接近0的数 问题:用数组公式获取一列中最接近0的数
回答:...数(绝对值最小但不等于0的数),在Excel中可以用下面的数组公式。假如数值在A1:A15区域,,其中包含正数、负数、0和空单元格,如图所示。 在C3单元格中输入数组公式: =INDEX(A1:A15,MATCH(MIN(IF(A1:A15,ABS(A1:A15))),ABS(A1:A15),)) 公式...
数组公式获取某列包含数据的最后一行行号 问题:数组公式获取某列包含数据的最后一行行号
回答:...一个包含数据的单元格所在行的行号,可以用下面的几个数组公式,以A列为例: =MAX(NOT(ISBLANK(A1:A65535))*ROW(1:65535)) 公式输入完毕按Ctrl+Shift+Enter结束(下同),该公式对A列中每个包含数据的单元格指定其行号,对空单元格返回...
用数组公式获取字符在字符串中最后出现的位置 问题:用数组公式获取字符在字符串中最后出现的位置
回答:...获取字符串中的某个字符最后出现的位置,可以用下面的数组公式。假如A1单元格中的字符串为“Microsoft Office Word”,要查找字符“o”最后出现的位置,在单元格B1中输入数组公式公式输入完毕后按Ctrl +Shift +Enter结束。 =MAX((MI...
用数组公式获取一列中非空非零值 问题:用数组公式获取一列中非空非零值
回答:...,并且按原数据的顺序排列,如图所示,可以使用下面的数组公式。 在B1单元格中输入数组公式: =OFFSET($A$1,SMALL(IF($A$1:$A$10<>0,ROW($1:$10), ),ROW(A1))-1,0) 公式输入完毕后,按Ctrl+Shift+Enter结束,然后向下填充即可。 公式说明...
用数组公式获取一列中的第一个非空单元格值 问题:用数组公式获取一列中的第一个非空单元格值
回答:...取一列或一行中的第一个非空单元格值,例如下面的几个数组公式获取一列中第一个非空单元格值,假设数据在A1:A10区域中: =INDEX(A1:A10,MATCH(TRUE,LEN(A1:A10)<>0,0),1) =INDEX(A1:A10,MATCH(,0/(A1:A10<> ),)) =INDEX(A1:A10,SMALL(IF(A1:A10&...
相关推荐: