多列合并为一列,无空格

多列合并为一列,无空格

我使用的是 Microsoft Excel 2010。我有多个包含数据的列,还有一些空白单元格。我使用以下公式:

=INDEX($A$101:$F$200;MOD(ROW()-ROW($A$201)-1;ROWS($A$101:$F$200))+1;INT((ROW()-ROW($A$201)-1)/ROWS($A$101:$F$200))+1)

将它们合并为一个长列。但是,它也会添加空白单元格。是否可以修改此公式以忽略这些空白单元格,而只合并包含数据的单元格?

示例图片:

例子

答案1

经过多次努力,我终于找到了一种可行的方法,尽管它使用了两个工作列(在使用工作表之前显然会被隐藏)。

我使用 Excel 2007 进行了测试,当或返回0空白单元格时,它会显示而不是空白单元格:我可以使用条件格式删除这些,但我保留了它们,以免掩盖公式的工作方式:-index()indirect()

删除空白单元格

我使用了你的测试数据,因此复制下来的公式D5是:

=INDEX($A$5:$B$8,MOD(ROW()-ROW($A$5),ROWS($A$5:$B$8))+1,INT((ROW()-ROW($A$5))/ROWS($A$5:$B$8))+1)

现在将ColumnD用作工作列,并F创建另一个工作列,其中F5包含:

=MATCH("*",$D$5:$D$12,0)+ROW()-1

并抄录自F6

=MATCH("*",INDIRECT(ADDRESS(F5+1,4,1)&":$D$12"),0)+F5

此处的要点如下:

  • MATCH()当第三个参数为零(无序)时,可以使用通配符。
  • "*"匹配任何内容,但是不是返回空白单元格0INDEX()

最后H5抄下来的是:

=IFERROR(INDIRECT("$D"&F5),"")

这里IFERROR()用于捕获最后找到的条目之后的#N/A列中的条目。F

隐藏工作列后,您将获得想要的内容:-

隐藏的工作列

请注意,为了防止实时列序列中断,工作列可以位于主工作表区域之外(例如YZ)或位于单独的工作表上,尽管后者会通过工作表引用使公式更加复杂。

另外,可能只使用一个工作列,但公式的复杂性会大大增加,从而使得支持非常困难。

还要注意,您的公式可能被视为不必要地复杂,例如ROW($A$201)始终为 201 且ROWS($A$101:$F$200)始终为 100;在这两种情况下,都是因为使用了绝对寻址 -ROW()并且ROWS()在复制使​​用相对寻址的单元格时变得有用。

相关内容