【问题标题】:Sequence Unique Values Within Another Unique Value in Excel在 Excel 中对另一个唯一值中的唯一值进行排序
【发布时间】:2020-06-18 15:17:49
【问题描述】:

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

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

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

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 你好,我试过类似这样的公式,=IF(COUNTIF(A$2:A2,A2)=1,MAX(B$1:B1)+1,VLOOKUP(A2,A $1:B1,2,0)),但是当 A 列有唯一值时,我无法调整它以在 B 列中查找唯一值。
  • 数据是否总是像您显示的那样排序?
  • C 列是我希望公式返回的内容。它不在实际数据集中。数据并不总是这样排序,我只是为了清楚起见而排序。

标签: excel excel-formula excel-2010


【解决方案1】:

所以,我们要做的第一件事就是检查一个号码是否已经被分配了。由于要检查 2 列,我们需要使用带有数组条件的 INDEX MATCH 而不仅仅是 VLOOKUP

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

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

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

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

关于替换那些问号!

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

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

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

然后,加 1:

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

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

【讨论】:

    【解决方案2】:

    您的数据似乎已按列 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))
    

    并向下复制:

    如果您的数据没有按照图片所示的方式组织,请忽略此解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2018-08-05
      • 2020-02-26
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多