警告:

警告:

我有一组如下的 Excel 列(有 n 行和 n 列)在此处输入图片描述

我希望使用组对其进行排序和重新排序,但我需要使用公式来完成,而不是使用 excel 中的简单排序选项。预期结果如下:

在此处输入图片描述

有没有办法做到这一点?

答案1

我想建议两种可能的方法,1st 是非编程(使用 Excel 公式)和2nd 是 VBA 宏(编程方法)。

警告:

建议使用 VBA 宏的主要原因是1st 方法(使用 Excel 公式)是多重且繁琐的方法。


方法 1:

在此处输入图片描述

怎么运行的:

  • 对于辅助数据,

单元格中的公式F55:

=COUNTIF(B$55:B$60,"<="&B55)

单元格中的公式G55:

=SMALL($F$55:$F$60,ROW(A1))

填写两个公式。

  • 年代按组排序,在单元格中输入公式A63:,然后向下填充。

     =INDEX(B$55:B$60,MATCH(G55,F$55:F60),0)
    
  • 数组(CSE)公式,

    在细胞内B63:

     {=INDEX($A$55:$A$60, MATCH(0, IF($A63=$B$55:$B$60, COUNTIF($B$62:$B62, $A$55:$A$60), ""), 0)}
    

注意:完成Ctrl+年代切换+输入并填写。

在细胞内C63:

  {=INDEX(C$55:C$60, MATCH(0, IF($A63=$B$55:$B$60, COUNTIF(C$62:C62, C$55:C$60), ""), 0))}

注意:完成Ctrl+年代切换+填写然后拥有R好的。

根据需要调整公式中的单元格引用。

  • 为了整洁你可以隐藏Helper 数据。

方法 2:

在此处输入图片描述

怎么运行的:

  • 选择范围A71:D77并在名称框(左上角)中写入名称Mydata
  • 开发者 TAB 命中然后设计插入。
  • 现在,从AactiveX 控件选择C命令按钮然后将其绘制在 Sheet 上。
  • 双击C命令按钮打开 VB 编辑器。
  • 复制并粘贴此代码

rivate Sub CommadButton1_Click()

在此处复制代码

子目录

    Range("MyData").Sort Key1:=Range("MyData").Cells(2, 2), _
Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
  • 年代并返回至工作表。

  • 然后设计模式双击命令按钮。

  • 您按以下顺序获取数据:

在此处输入图片描述

注意:源数据范围A71:D77&Range 名称Mydata是可编辑的。

相关内容