在Excel中的另一个唯一值中对唯一值进行排序

在Excel中的另一个唯一值中对唯一值进行排序,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我试图创建一个公式,检查a列的唯一值,然后获取该值,检查B列的唯一值,并在C列中顺序排列。C列是公式的所在。它不在实际数据集中 这就是我想要的数据集的样子 例如,我想找到唯一的条目号“123-A”。然后我想在该条目号内查找,并在B列中找到唯一的代码,然后按顺序排列。前两个相同,因此它们都是顺序1。然后第三行作为新代码“Y09”,因此将得到序列2。一旦识别出下一个唯一条目号,我想重置顺序计数。谢谢 因此,我们要做的第一件事是检查是否已经分配了一个号码。由于有2列要检查,我们需要使用索引匹配和数组

我试图创建一个公式,检查a列的唯一值,然后获取该值,检查B列的唯一值,并在C列中顺序排列。C列是公式的所在。它不在实际数据集中

这就是我想要的数据集的样子


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

因此,我们要做的第一件事是检查是否已经分配了一个号码。由于有2列要检查,我们需要使用
索引匹配
和数组条件,而不仅仅是
VLOOKUP

INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0))
这些公式适用于单元格C2-请注意,我们如何在每个范围引用中保留第二个单元格,而不使用
$
将其锁定到位。这意味着它将始终停止在公式上方的行

如果这行得通,我们就完了。如果没有,我们会得到一个错误-因此,我们可以使用
IFERROR

=IFERROR(INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0)), ???)
继续替换那些问号

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

然后,添加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列要检查,我们需要使用
索引匹配
和数组条件,而不仅仅是
VLOOKUP

INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0))
这些公式适用于单元格C2-请注意,我们如何在每个范围引用中保留第二个单元格,而不使用
$
将其锁定到位。这意味着它将始终停止在公式上方的行

如果这行得通,我们就完了。如果没有,我们会得到一个错误-因此,我们可以使用
IFERROR

=IFERROR(INDEX($C$1:$C1, MATCH(1, ($A$1:$A1=$A2)*($B$1:$B1=$B2), 0)), ???)
继续替换那些问号

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

然后,添加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)

您的数据似乎已经按照列AB值进行了组织/排序。如果是这种情况,我们可以构造一个实现以下规则的公式:

  • 如果相邻的AB值与其上方的值匹配,则从上方向下复制C
  • 如果相邻的A值与其上方的值匹配,但B值不匹配,则从上方增加C
  • 如果A值与上面的值不匹配,则将C值设置为1
  • C2中输入
    1
    。在C3中输入:

    =IF(AND(A3=A2,B3=B2),C2,IF(A3=A2,C2+1,1))
    
    并向下复制:


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

    您的数据似乎已经按照列AB值进行了组织/排序。如果是这种情况,我们可以构造一个实现以下规则的公式:

  • 如果相邻的AB值与其上方的值匹配,则从上方向下复制C
  • 如果相邻的A值与其上方的值匹配,但B值不匹配,则从上方增加C
  • 如果A值与上面的值不匹配,则将C值设置为1
  • C2中输入
    1
    。在C3中输入:

    =IF(AND(A3=A2,B3=B2),C2,IF(A3=A2,C2+1,1))
    
    并向下复制:


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

    到目前为止您尝试了什么?您好,我尝试了类似的公式,=if(COUNTIF(a$2:A2,A2)=1,MAX(B$1:B1)+1,VLOOKUP(A2,a$1:B1,2,0)),但是当A列有唯一值时,我很难调整它以在B列中查找唯一值。数据是否总是像您所示那样排序?C列是我希望公式返回的。它不在实际数据集中。数据并非总是按这种方式排序,我只是为了清晰起见对其进行排序。到目前为止,您尝试过什么?嗨,我尝试过类似的公式,=IF(COUNTIF(a$2:A2,A2)=1,MAX(B$1:B1)+1,VLOOKUP(A2,a$1:B1,2,0)),但是当A列有唯一值时,我很难调整它以在B列中查找唯一值。数据是否总是像您所示那样排序?C列是我希望公式返回的。它不在实际数据集中。数据并非总是按这种方式排序,我只是为了清晰起见对其进行了排序。