如何计算每个客户的订单

如何计算每个客户的订单

我有一个客户列表,其中列出了所有下过订单的客户。我想创建一个新列,告诉我每个客户的订单是第 1 个、第 2 个、第 3 个等等,例如:

Customer   Order #  New Flag 
customer 1  12345    1st Order
customer 1  12346    2nd Order
Customer 2  12347    2nd Order
Customer 2  12344    1st Order
Customer 3  11112    1st Order
Customer 3  12332    3rd Order
Customer 3  11123    2nd Order

答案1

如果我正确理解了您的问题。请尝试此解决方案。可以在单元格中创建单个公式,但它太长了,所以我使用两列方法。如果您有 Excel 365,您可以使用 LET 函数缩短它。

请参阅下面的截图。

在此处输入图片描述

在此处输入图片描述

E3 中的公式是

 =1+SUMPRODUCT(($C$3:$C$12=C3)*($D$3:$D$12<D3))

并按您的需要使用 F3 将其转换为序数系统。

=E3&IF(OR(VALUE(RIGHT(E3,2))={11,12,13}),"th",IF(OR(VALUE(RIGHT(E3,1))={1,2,3}),CHOOSE(RIGHT(E3,1),"st","nd","rd"),"th")) & " Order"

请注意,在旧版本的 Excel 中,第二个公式可能需要通过同时在公式栏中按CTRL+ SHIFT+来创建数组公式。否则可能无法正常工作。ENTER

如果您所在地区的列表分隔符是;而不是,则您需要在相同的公式中用分号替换逗号。

答案2

如果您有 Office 365,您可以尝试:

C2: ="Order # " & MATCH(B2,SORT(FILTER($B:$B,$A:$A=A2),1))

并向下填充

为了提高效率,我建议将公式转换为使用具有结构化引用的表,例如:

="Order # " & MATCH([@[Order '#]],SORT(FILTER([Order '#],[@Customer]=[Customer]),1,1))
  • 过滤订单号以仅返回与同一行上的客户相关的订单号。
  • 对订单号进行升序排序
  • 使用MATCH函数返回订单号的位置

在此处输入图片描述

如果你必须在输出中显示序数,我会把这个转换留给你

相关内容