我有多个列表在excel的不同列中。我需要做的是将这些数据列组合成一个大列。我不在乎是否有重复的条目。下面,我刚刚显示了3列,但实际数据有20列。列不连续,我想避免在最终输出中打印空格。
<> 1
应该像这样结合成一列
A B C
_ _ _
ROW1| R U X
ROW2| S V Y
ROW3| T W Z
答案 0 :(得分:0)
为简单起见,我假设你的原始数据在sheet1中,你想要在sheet2中输出,从A1开始向下。理想情况下,这是一个VBA项目,但您已经要求提供公式版本 - 这是可能的,但数据越动态(更改列,更改行长度等),这就越复杂。
首先,在sheet2上,您需要确定哪些列包含您的数据。因此,在从D开始并向下的D列中,手动键入这些列,如下所示:
="A:A"
="B:B"
="E:E"
除了每个列之外,您还需要计算每个列中的行数。使用COUNTA函数执行此操作,该函数计算所有非空单元格[我假设您的数据在sheet1中是连续的,没有空行]。我们还将使用INDIRECT函数来确定要查看的列。所以把它放在E1中,然后向下拖动:
=COUNTA(INDIRECT("'Sheet1'!"&B1))
然后我们想要总计到目前为止我们有多少行,一列接着另一列。将其放入F2并向下拖动[F1 hardcode as 0]:
=SUM($E$1:E1)+.01
在B列中,我们现在将显示从哪个列中提取行的数据,如[从B1开始并向下复制]:
=INDEX(D:D,MATCH(ROW(),F:F,1))
在C栏中,我们现在将显示从[从C1开始并向下复制]中拉出数据的行:
=COUNTIF($B$1:B1,B1)
在A1中并向下拖动与数据一样多的总单元格,输入以下内容[从A1开始,然后向下拖动]:
=INDEX(INDIRECT("'Sheet1'!"&B1),C1)
这看起来像很多设置 - 因为它是。如果您没有将VBA用于此类操作,则需要进行大量数据操作。