【问题标题】:Merge two lists in Excel in ascending or descending order在 Excel 中按升序或降序合并两个列表
【发布时间】:2014-12-11 07:10:15
【问题描述】:

我在 Excel 中有两个独立的列表。我需要将它们组合成一个列表,并让该列表按升序或降序排序。

例如如何合并这两个列表(Excel中的命名范围List1List2

List1      List2
AA         BB
DD         EE
FF         GG
KK

在一个列表中

AA
BB
DD
EE
FF
GG
KK

我设法合并列表,但没有使用以下公式进行升序或降序排序:

=IFERROR(INDEX(List1, ROWS(AH4:$AH$4)), IFERROR(INDEX(List2, ROWS(AH4:$AH$4)-ROWS(List1)), ""))

结果看起来像这样

能否仅使用公式(无 VBA)实现排序合并列表?

【问题讨论】:

    标签: excel list sorting merge


    【解决方案1】:

    您可以只使用公式进行merge sort,但我能想到的任何实现都需要额外的临时列。我得到的最简单的实现使用 5 个额外的列 - 您可以轻松地将其减少到 3 个,甚至 2 个,但 IMO 您最好保持公式简单并隐藏额外的列。

    在此示例中,我们将合并已排序的范围 A1:A14 和 C4:C14。实际上,它是 A 列和 C 列的全部——我使用的公式通过查找空白来确定范围的结尾,以便稍后添加数据,而不是使用明确的范围大小。但如果你愿意,你可以改变它。

    输出在 E 列。公式很简单:=IF(ISBLANK(G1),,INDIRECT(G1))。 “if”只是为了避免数据用完时出错,并不是必须的。

    所有实际工作都在 G 列中完成:

    =IF(ISBLANK(H1),IF(ISBLANK(I1),,"C"&K1),IF(ISBLANK(I1),"A"&J1,IF(H1<=I1,"A"&J1,"C"&K1)))

    其中大部分是边界检查,以检查我们是否在一个或两个列表中用完了数据。比较出现在表达式的末尾:如果是

    H 列和 I 列反映了基于 J 和 K 列中的列表索引的列表值。因此它们具有简单的公式:

    =INDIRECT("A"&J1)
    =INDIRECT("C"&K1)
    

    J 列和 K 列也很简单。它们根据 G 列中发生的结果递增。第一行是静态的,并根据您的数据所在的位置进行设置。 (在最简单的情况下,它只是 1 1。)然后,公式是:

    =J1+IF(LEFT($G1)="A",1,0)
    =K1+IF(LEFT($G1)="C",1,0)
    

    【讨论】:

      【解决方案2】:

      如果你从两个列表中创建一个所有单元格的新范围,并将其命名为 BothLists,那么你可以使用 this-

      =INDEX(BothLists,IF(ISODD(ROW()-ROW(List1))=TRUE,((ROW()-ROW(List1)+1)/2)+1,(ROW()-ROW( List1)+2)/2),IF(ISODD(ROW()-ROW(List1))=TRUE,1,2))

      这假设,就像您的示例一样,您的两列“平铺”中的所有值在列表中移动时总是从最低到最高。 (例如,A2 中的最低值,B2 中的第二低,A3 中的第三低,B3 中的第四低等)

      也就是说,这两件事都是真的-

      (1) 在同一行中,第一列中的每个值都小于第二列中的值。

      (2) 第一列中的每个值都大于其正上方行中的值,但在第二列中

      如果不是这样,请告知。

      参考 - 我必须弄清楚我在哪里工作的类似工作的个人经验。

      【讨论】:

        【解决方案3】:

        请尝试:

        =IF(ROW()<=COUNTA(A:A), INDEX(A:A,ROW()), IF(ROW()>COUNTA(A:B), "", INDEX(B:B,ROW()-COUNTA(A:A))))
        

        直接从Jerry Beaucaire抢断。

        【讨论】:

          猜你喜欢
          • 2019-11-18
          • 2018-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          • 2018-05-03
          • 2014-02-06
          • 1970-01-01
          相关资源
          最近更新 更多