在组内自动连续排序值

时间:2016-07-29 21:24:42

标签: excel max

是否可以使用条件列出从最大到最小的项目(例如" SORTIF()"功能)?我列出了许多不同的产品。我想列出每种产品从每天最大到最小的订单。我已经列出了我的列表应该是什么样子的一小部分样本:

1/8  Drill Bits         11   48
1/8  Drill Bits         12   24
1/8  Drill Bits         48   12
1/8  Drill Bits         24   12
1/8  Drill Bits         12   11
1/8 X 6 Drill Bits      12   12
1/8 X 6 Drill Bits       8   12
1/8 X 6 Drill Bits      12   12
1/8 X 6 Drill Bits       4   11
1/8 X 6 Drill Bits      12    8
9/64 X 6  Drill Bit     11    4
DB1/2 Deburring Tool     1    1
5/32  Drill Bits         1    1
3/16  Drill Bits        12   72
3/16  Drill Bits        72   60
3/16  Drill Bits        60   12

我想输入一个公式,列出每个产品的订单,从最大到最小,如上面的第三列。请记住,这是一个包含数千行的大型电子表格,因此我需要能够填写。

2 个答案:

答案 0 :(得分:0)

您可以选择所有数据(也包含标题),然后转到主页 - >找到&过滤器(在编辑部分内)。

  1. 您可以使用选项自定义排序,当对话框显示时,您可以选择要使用的列以及desc或asc。
  2. 可能对您有帮助的另一个选项是过滤器也在主页 - >找到&过滤器(在编辑部分内) 这会将按钮添加到列标题,您可以在其中设置排序并进行过滤。
  3. 希望这会有所帮助。 :)

答案 1 :(得分:0)

尝试此操作,假设您的值在单元格A2和B2中开始并从那里向下移动:

C2 (group index):          =IF(A2=A1, C1+1, 1)
D2 (group length):         =IF(A2=A3, D3, C2)
E2 (sorted version of B):  =LARGE(OFFSET(B2, 1-C2, 0, D2, 1), C2)

然后将这些填写在您的条目旁边。如果您的条目位于工作表上的其他位置,请相应地将所有公式向下移动。

以下是发生的事情:

  • C列中的单元格检查它们是否是新组的开头;如果是这样,他们重新启动该组的行计数器;如果没有,他们将1加到前一行的行计数器上。
  • D栏中的单元格检查它们是否是组的结尾;如果是这样,他们使用当前行的行计数器(即组长度);如果没有,他们会从下面的行继承组长度(在组中更下方)。
  • E列中的单元格使用OFFSET函数创建一个引用当前组中单元格的范围。然后,他们使用LARGE()函数从该范围中选择第n个最大的条目,其中n是组中当前行的位置。

我假设您只对基于A列中的值创建已排序组感兴趣,并且您始终希望在该值更改时开始新组。如果您需要根据多个列(例如,日期和产品列)创建新组,则可以在单元格C2中使用AND(A2=A1, B2=B1)而不是A1=A1,在单元格D2中使用类似的内容。即使没有显示日期,我也提到了这一点,因为您说“想要列出每种产品从最大到最小的订单”。