如何提取一行中的数据列表(忽略空白)(Excel 2013)

如何提取一行中的数据列表(忽略空白)(Excel 2013)

我有多个行的数据范围,例如 B:G;A 是标题。范围内的一些单元格是空白的:

     |   A    |   B    |   C    |   D   |    E    |    F   |    G   |  
  1  | HEADER |        | Green  |       |  Blue   |        |        | 

我需要一个公式将所有值复制到另一个地方,因此从 B 开始,忽略空白单元格:

     |   A    |   B    |   C    |   D   |    E    |    F   |    G   |  

  2  | HEADER | Green  | Blue   |       |         |        |        |

有人能帮帮我吗?

答案1

在 Excel 2013 中,以下数组公式应该有效:

I1: =INDEX($A1:$G1,1,AGGREGATE(15,6,1/(LEN($A1:$G1)>0)*COLUMN($A1:H$1),COLUMN(INDEX($1:$1,1):INDEX($1:$1,COUNTA($A1:$G1)))))

AGGREGATE函数返回包含数据的列号数组(并且该函数有一个排除错误的参数,所以我们不会返回空列),并且该INDEX函数返回这些列中的值。

在 Excel 2013 中,您可能需要“确认”这一点数组公式选择后 I1:O1),方法是按住ctrl+shift并点击enter。如果你操作正确,Excel 会将公式括{...}在括号中,如公式栏中所示,你应该会看到所有结果

然后您可以根据需要向下填充。

在此处输入图片描述

笔记如果您不想使用 CSE 公式,您可以使用 INDEX 函数返回数组的每个元素。例如:

I1: =IFERROR(INDEX(INDEX($A1:$G1,1,AGGREGATE(15,6,1/(LEN($A1:$G1)>0)*COLUMN($A1:H$1),COLUMN(INDEX($1:$1,1):INDEX($1:$1,COUNTA($A1:$G1))))),COLUMNS($A:A)),"")

向右填充至O1。然后选择I1:O1并向下填充至所需的范围。

答案2

如果您使用最新版本的 Excel,则可以使用 FILTER 函数:

=FILTER(A1:G1,A1:G1<>"")

在此处输入图片描述

答案3

您可以使用“转到”来选择非空单元格。

选择从 B1 到 G1 的单元格 > 按 Ctrl+G > 特殊键 > 勾选常量 > 确定。然后将非空单元格复制到第 2 行。

在此处输入图片描述

相关内容