【问题标题】:How to Combine two Lists In Excel如何在Excel中合并两个列表
【发布时间】:2021-08-07 09:46:55
【问题描述】:

我想将两个列表合二为一,例如,如果我们有

List A:
Item 1
Item 2
(empty)
Item 3

List B: 
Item 4
(empty)
Item 5
Item 6

从上面的两个列表中,想要将它们组合起来,不要有任何空格,例如:

Merged List should be:

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6

我们如何在excel中使用一行语法来做到这一点?enter image description here

【问题讨论】:

  • 如果两个列表中存在相同的值,是否需要保持相同的值,或者所有值都是唯一的?
  • 是的,不关心重复,但应该避免空单元格
  • 据我所知,要将两列放在一起并删除空单元格,您需要编写一个宏。但如果您不知道如何操作,您可以使用简单的解决方法。您将列表 A 和列表 B 复制到同一列上,然后通过选择整个列对列表进行排序。 Excel 将对所有值进行排序并删除空单元格。提醒该值将被排序(如上面重新编辑的文本,但不像您附加的图像)。

标签: excel excel-formula excel-2007 excel-2016


【解决方案1】:

假设原始数据位于 A1:B3 类似于图片共享。放:

C1 ->  =COUNTA(A$1:A1)
D1 ->  =COUNTA(B$1:B1)+MAX(C:C)
E1 ->  =IF(ROW()>MAX(D:D),"",IF(ROW()<MIN(D:D),INDEX(A:A,MATCH(ROW(),C:C,0)),INDEX(B:B,MATCH(ROW(),D:D,0))))

然后全部向下拖动。

想法:使用 counta 作为索引匹配公式的“加载器”索引。 C & D 列可以放置在别处/隐藏。

如果可行/可理解/不可行,请分享。

【讨论】:

    【解决方案2】:

    您可以使用公式来完成,但按照 @Michele 在 cmets 中建议的操作可能更容易,只需复制并粘贴在彼此之上并进行排序。

    例如,如果您拥有最新版本的 Excel:

    =INDEX(
    LET(x, $A$1:$A$5, y, $B$1:$B$5, z, $A$1:$B$5, myrows, SEQUENCE(ROWS(x)+ROWS(y),1),
    myarray, INDEX(z, IF(myrows>ROWS(x), myrows-ROWS(x), myrows), IF(myrows>ROWS(x), 2,1)),
    myhelper, IF(myarray=0, 0,1),
    SORTBY(myarray, myhelper,-1)),
    SEQUENCE(COUNTA($A$1:$B$5),1))
    

    【讨论】:

      【解决方案3】:

      如果您需要(一列的)组合列表,您可以使用以下方法计算它们:

      =IFERROR(
               IF(ROW()<=COUNTA($A$2:$A$5),
                  INDEX($A$2:$A$5,
                        LARGE(IF($A$2:$A$5<>"",ROW($A$2:$A$5)-1),
                              COUNTA($A$2:$A$5)-ROW()+1)),
                  INDEX($B$2:$B$5,
                        SMALL(IF($B$2:$B$5<>"",ROW($B$2:$B$5)-1),
                              -COUNTA($A$2:$A$5)+ROW())))
      ,"")
      

      这应该使用ctrl+shift+enter 输入并向下拖动。

      这是基于列表 A 是 A2:A5 和列表 B 是 B2:B5

      使用 Office 365 时,可以使用:

      =LET(dataA,$A$2:$A$5,
                dataB,$B$2:$B$5,
                listA,FILTER(dataA,dataA<>""""),
                listB,FILTER(dataB,dataB<>""""),
                rowsA,ROWS(listA),
                rowsB,ROWS(listB),
                rowsAB,rowsA+rowsB,
                seqB,MOD(SEQUENCE(rowsAB,,rowsB-rowsA),rowsB)+1,
      IF(SEQUENCE(rowsAB)<=rowsA,
           listA,
           INDEX(listB,seqB,)))"
      

      作为期望的结果和范围很容易改变。

      【讨论】:

        猜你喜欢
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-10
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多