如何运用EXCEL函数公式,依次提取某行非空单元格数值或内容?

你好,如何运用EXCEL函数公式,依次提取某行非空单元格数值或内容?如果可以,尽可能不要用数组公式,因为数据量较大。详细描述见图。

本身是1行有空白单元格的数据,要用公式提取,就必然要用到数组公式。如果不想用数组公式,那可以考虑用VBA,或Power Query(简称PQ),PQ简单快捷,且与数据源关联,数据源变化时,刷新即可更新,但得与原表结构稍不同——数据源与结果都必须有标题行,原来没标题的也会自动添加。本问题在PQ中仅3个极基本的操作步骤,对数据量大时更显其优越性,不存在卡的问题。

把光标定位到数据区域中,数据菜单——获取或转换数据——自区域或表格,Excel会自动扩展选择区域,但因为有空格,可能会有部分数据不会选择,这就要重新手动选择一下,选择后的区域自动转换为表格并添加标题行,然后进入PQ编辑器,在PQ中的3个步骤:转置(行转换为列)——筛选(去掉空白数据null)——转置(还原为行),最后在文件菜单中选择“关闭并上载至,选择目标后完成上载。

可以在PQ中修改标题行的标题名称。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-15

C7输入公式,完成后,同时按下ctrl+shift+enter三个键:

  =IFERROR(INDEX($A$6:$M$6,,SMALL(IF($B$6:$M$6>0,COLUMN($B$6:$M$6),10^5),COLUMN(A1))),"")

追问

你好,第五行是公式生成的数值,没有显示数值的单元格并非是没有内容的,只有在设定的范围内才会显示数值而已。
您这个公式只适用于空单元格,不适用于非空单元格,麻烦您再设置一下函数公式。拜托了!

追答

如果空格里是"",可以改成:
=IFERROR(INDEX($A$6:$M$6,,SMALL(IF($B$6:$M$6"",COLUMN($B$6:$M$6),10^5),COLUMN(A1))),"")

本回答被网友采纳
第2个回答  2020-02-16

C7=INDEX($C$6:$AZ$6,SMALL(IF($C$6:$M$6>0,COLUMN($C$1:$M$1)-2,20),COLUMN(A1)))&""

同时按CTRL SHIFT 回车键,然后右拉公式

相似回答