我有多个行的数据范围,例如 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
并向下填充至所需的范围。