Excel 中另一个唯一值内的唯一值序列

Sequence Unique Values Within Another Unique Value in Excel

我正在尝试创建一个公式来检查 A 列的唯一值,然后获取该值并检查 B 列的唯一值并在 C 列中按顺序对它们进行排序。C 列是公式所在的位置。它不在实际数据集中。

这就是我希望我的数据集的样子。

例如,我想找到唯一的条目号“123-A。然后我想在该条目号内查找并找到 B 列中的唯一代码并按顺序排列它们。前两个相同,所以它们都是序列 1。然后第三行作为新代码,"Y09",因此它将得到序列 2。一旦识别出下一个唯一条目编号,我想重置序列计数。谢谢!

所以,我们要做的第一件事是检查号码是否已经已经分配。由于要检查 2 列,我们需要将 INDEX MATCH 与数组条件一起使用,而不仅仅是 VLOOKUP:

INDEX($C:$C1, MATCH(1, ($A:$A1=$A2)*($B:$B1=$B2), 0))

这些公式适用于单元格 C2 - 请注意我们如何在每个范围引用中保留 second 单元格而没有 $ 将其锁定到位。这意味着它将始终停在公式 上方的

如果成功,我们就完成了。如果它 我们得到一个错误 - 所以,我们可以使用 IFERROR:

=IFERROR(INDEX($C:$C1, MATCH(1, ($A:$A1=$A2)*($B:$B1=$B2), 0)), ???)

关于替换那些问号!

由于没有匹配项,我们需要为条目号找到最大匹配项,并为其加1。如果你有Office365或者Office2019,我们直接使用MAXIFS功能即可。否则,我们将不得不使用 SUMPRODUCTMAX 来获得相同的结果:(如果条目号不存在,这将 return 0)

MAXIFS($C:$C1, $A:$A1, $A2)

SUMPRODUCT(MAX($C:$C1 * ($A:$A1=$A2)))

然后,加1:

=IFERROR(INDEX($C:$C1, MATCH(1, ($A:$A1=$A2)*($B:$B1=$B2), 0)), MAXIFS($C:$C1, $A:$A1, $A2) + 1)

=IFERROR(INDEX($C:$C1, MATCH(1, ($A:$A1=$A2)*($B:$B1=$B2), 0)), SUMPRODUCT(MAX($C:$C1 * ($A:$A1=$A2))) + 1)

看来您的数据已经 organized/sorted AB 列值。如果是这种情况,我们可以构造一个公式来实现以下规则:

  1. 如果相邻的 AB 值与它们上方的值匹配,则向下复制 C 上面的值
  2. 如果相邻的 A 值与其上方的值匹配,但 B 值不匹配,则递增 C 上面的值。
  3. 如果 A 值不是它上面的值,则将 C 值设置为 1

C2中输入1。在 C3 中输入:

=IF(AND(A3=A2,B3=B2),C2,IF(A3=A2,C2+1,1))

并向下复制:

如果您的数据组织方式与图片所示不同,请忽略此解决方案。