首页 文章

在组内自动连续排序值

提问于
浏览
0

是否可以使用条件(例如“ 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

    试试这个,假设你的值在单元格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中使用类似的内容 . 我提到这个,即使没有显示日期,因为你说你"want to list the orders per day from largest to smallest for each product" .

  • 0

    您可以选择所有数据(也包括 Headers ),然后转到主页 - >查找和过滤(在编辑部分内) .

    • 您可以使用选项自定义排序,当对话框显示时,您可以选择要使用的列以及desc或asc .

    • 可能对您有帮助的另一个选项是在主页中过滤 - >查找和过滤(在编辑部分内)这将向列 Headers 添加按钮,您可以在其中设置排序并过滤 .

    希望这可以帮助 . :)

相关问题