excel 将多列合并为一列

exdqitrt  于 2023-11-20  发布在  其他
关注(0)|答案(3)|浏览(121)

你能建议什么是最好的方法来创建一个联合列的12个单独的列(位于12个不同的Excel工作表内的工作簿)与或不带删除?
有很好的手册如何做到这一点,为两列没有搜索(使用MATCH函数),但我不知道如何处理的情况下,多列。

a1o7rhls

a1o7rhls1#

我认为可以实现与多个合并范围为一个目录。将需要标签的列和一个以上的每表列(可以克隆现有的)。应排序和删除重复的列表自动(如果克隆)。

x7rlezfr

x7rlezfr2#

编辑:
我假设你的ID都是数字(否则,如果没有空格,排序将非常棘手)。你可以修改下面的数组公式以满足你的需要(选择一个有足够行的区域来容纳整个ID堆栈,输入公式,然后使用空格+shift+enter提交公式):

=SMALL(IFERROR(CHOOSE(COLUMN(INDIRECT("C1:C12",FALSE)),Sheet1!A1:A73,Sheet2!A1:A70,Sheet3!A1:A79,Sheet4!A1:A58,Sheet5!A1:A51,Sheet6!A1:A94,Sheet7!A1:A50,Sheet8!A1:A89,Sheet9!A1:A75,Sheet10!A1:A89,Sheet11!A1:A70,Sheet12!A1:A94),FALSE),ROW(INDIRECT("1:"&COUNT(Sheet1!A1:A73,Sheet2!A1:A70,Sheet3!A1:A79,Sheet4!A1:A58,Sheet5!A1:A51,Sheet6!A1:A94,Sheet7!A1:A50,Sheet8!A1:A89,Sheet9!A1:A75,Sheet10!A1:A89,Sheet11!A1:A70,Sheet12!A1:A94))))

字符串
我将使用一个较小的版本(2列)来解释它是如何工作的:

=SMALL(IFERROR(CHOOSE(COLUMN(A1:B1),A1:A73,C1:C70),FALSE),ROW(1:143))


首先,COLUMN(A1:B1)返回一个1到2之间的整数水平数组。将其传递给具有两个单列范围的CHOOSE函数,从A1:A73C1:C70创建一个73 x 2数组(而不是创建一个锯齿数组,第二列的最后三个值将用#NA填充)。
IFERROR Package 结果,将三个#NA值转换为FALSE(否则,SMALL将返回错误)。
接下来,ROW(1:143)返回一个1到143之间的整数垂直数组。将73 x 2数组和1到143之间的整数数组传递给SMALL将返回一个143 x 1数组(垂直)的排序值(忽略三个FALSE值)。
关于INDIRECT的注意:以这种方式使用INDIRECT可以使公式稳定,即使删除了行/列;但是,它也会使公式不稳定,这将导致每次工作簿中发生更改时都要重新计算公式,这可能会大大降低速度。另一个选项是INDEX(例如,ROW(A1:INDEX(A:A,COUNT(...))),这可能会受到行/列删除的影响,但不是易失性的。

dbf7pr2w

dbf7pr2w3#

如果您不介意进行一些手工操作,这对数字和非数字ID都有效:
1.使用Ctrl-C + Ctrl-V手动堆叠列
1.转到数据选项卡-->过滤器-->高级过滤器-->仅勾选唯一记录-->选择您的副本位置
这个简单的两步过程将给你给予两列唯一的并集。显然,列数越多,交集方法的效用就越大。

相关问题