昨天有个小伙伴私信我,如何用公式从某个数据区域中获取非空单元格的数值。他的问题大致是这样子的:下图中A1:A10是数据区域,从这个数据区域中用公式拿到非空单元格的数据,也就是C1:C7单元格区域显示的结果。该如何实现呢?
解决该问题的思路并不难,我们要先把A1:A10单元格区域中非空单元格的行号找到并获取到,然后使用INDEX函数取出对应的值即可。
具体操作步骤如下:
选中E1:E10单元格 -- 在编辑栏中输入公式“=IF(A1:A10<>"",ROW(A1:A10))” -- 按“Ctrl+Shift+Enter”回车。
公式的意思是:将A1:A10单元格区域的值与空值进行比较,如果不为空,则显示相应非空单元格数值所在的行号,如果为空,则显示为FALSE。
选中F1:F10单元格 -- 在编辑栏中输入公式“=SMALL(E1:E10,ROW(A1:A10))” -- 按“Ctrl+Shift+Enter”回车。
公式的意思是:ROW(A1:A10)公式得到一个行号的数组{1;2;3;4;5;6;7;8;9;10},用SMALL函数在E1:E10数据区域中按从小到大的顺序取出第1至第10小的值。
选中G1:G10单元格 -- 在编辑栏中输入公式“=INDEX(A1:A10,F1:F10)” -- 按“Ctrl+Shift+Enter”回车。
公式的意思是:INDEX函数分别取出A1:A10数据区域中第1、3、4、6、7、10行的数据。从上图可以看到,单元格为空的数据取出来的值为错误值,所以要把这些错误值给屏蔽。
四、屏蔽错误值。
选中H1:H10单元格 -- 在编辑栏中输入公式“=IFERROR(G1:G10,"")” -- 按“Ctrl+Shift+Enter”回车。
公式的意思是:如果G1:G10数据局区域中有错误值,则返回空值,否则返回公式的结果。
五、组合公式。
选中C1:C6单元格 -- 在编辑栏中输入公式“=IFERROR(INDEX(A1:A10,SMALL(IF(A1:A10<>"",ROW(A1:A10)),ROW(A1:A10))),"")” -- 按“Ctrl+Shift+Enter”回车即可。
上述操作中,有什么不懂之处可以在评论区留言哦!