Excel 中的行号和分区

MCP*_*tor 5 excel

我在Excel中有数据,例如:

ID        | Fee
123456789 | 100
987654321 | 100
987654321 | 75
987654321 | 50
Run Code Online (Sandbox Code Playgroud)

我需要计算非最高价格的商品的费用减免。电子表格按 ID 排序,然后按所需的方式按费用排序。我不知道该怎么做是在 excel 中使用类似的 row_number() over(partition by) ,就像我通常在 SQL 中所做的那样

期望的输出是

ID        | Fee   | rn
123456789 | 100   | 1
987654321 | 100   | 1
987654321 | 75    | 2
987654321 | 50    | 3
Run Code Online (Sandbox Code Playgroud)

小智 10

这个公式可以完成这项工作:

=COUNTIF($A$2:INDIRECT("A"&ROW(A2)),A2)
Run Code Online (Sandbox Code Playgroud)

无需对数据进行排序,也不会超出范围。

ROW()用于使范围动态化,因此如果我们向下拖动公式,ROW()总是会给出终点:

Excel 表格的屏幕


小智 5

您可以使用=COUNTIF($A$2:A2,A2); 请注意,只有第一个 $A$2 不会移动。


JNe*_*ill 4

可能有一个更复杂的公式,人们可以直接输入数据,而不必对数据进行胡闹,但我认为这可能是一个更简单的解决方案:

  1. 按 ID(从小到大)和费用(从小到大)对数据进行排序 在此输入图像描述

  2. 使用公式计算当前单元格及其下方每个单元格的数据中出现=Countif(A2:A5, A2)相同内容的次数。id复制此内容以填写缺失的列。 在此输入图像描述

  • 我最终做了以下事情,在一个单独的列中我做了 `=IF(B2=B3,1,0)` 然后在相邻的列中我做了 `=IF(B2=B1,N1+O1,1)` ,它之所以有效,是因为所有内容都按照我需要的顺序排序 (3认同)