Excel 为每个条目查找行中连续不同条目的数量

Excel 为每个条目查找行中连续不同条目的数量,excel,Excel,我试图自动计算一行中添加了多少连续的不同条目。例如,第一个条目将返回1,而如果与第一个条目相同,则第二个条目将返回1,如果不同,则返回2。我正在努力找到一种方法,让公式沿行“向后”搜索,直到找到它已经看到的条目 我正在努力找到一种方法,让公式沿行“向后”搜索,直到找到它已经看到的条目 我得到的最接近的结果(这几乎不起作用,只是半个公式)是类似于=IF(D2=C2,1,IF(COUNTIF($C2:D2,D2=1,C6+1,”)的东西,其中数据输入到第2行,从B列开始(前两个条目很简单,这之后我正

我试图自动计算一行中添加了多少连续的不同条目。例如,第一个条目将返回
1
,而如果与第一个条目相同,则第二个条目将返回
1
,如果不同,则返回
2
。我正在努力找到一种方法,让公式沿行“向后”搜索,直到找到它已经看到的条目

我正在努力找到一种方法,让公式沿行“向后”搜索,直到找到它已经看到的条目

我得到的最接近的结果(这几乎不起作用,只是半个公式)是类似于
=IF(D2=C2,1,IF(COUNTIF($C2:D2,D2=1,C6+1,”)
的东西,其中数据输入到第2行,从B列开始(前两个条目很简单,这之后我正在努力)。我的公式中的
是我认为会进行一些巧妙检查的地方,但我无法计算出它会是什么

我的目标是实现以下目标:

A A B C D E F G H I A A A J K L B M N O A A A P A Q R A A 
1 1 2 3 4 5 6 7 8 9 9 1 1 2 3 4 5 6 7 8 8 1 1 2 2 3 4 3 1
然而,我的上述公式只在运行3倍“A”之前有效

非常感谢您的帮助-这是我的第一个问题,所以请客气一点

  • 在单元格中键入a
    1
    A2

  • 在单元格B2中,使用以下公式:

    =IF(B1>A1,A2+1,1)
    
  • 填充此公式直到最后一列

  • 在单元格中键入a
    1
    A2

  • 在单元格B2中,使用以下公式:

    =IF(B1>A1,A2+1,1)
    
  • 填充此公式直到最后一列


  • 现在应该可以了,在A3中:

    =MIN(IF(COUNTIFS($A1:A1,$A1:A1,$A2:A2,">="&A2-TRANSPOSE($A2:A2)+1)>1,TRANSPOSE(COLUMN($A2:A2)),99)-1,COLUMNS($A1:A1))
    
    它确实需要一个额外的行,其中包含数字1-29

    必须使用CtrlShiftEnter作为数组公式输入

    这从一个数组的正常countif开始。如果你认为这是列A- D,那么CulTif($a1:d1,$a1:d1),你会得到

    2 2 1 1
    
    (行数组)因为A1和B1中重复了a

    我使用了COUNTIFS并添加了另一个条件,只考虑当前列(D),然后在其前面添加列(C:D),然后添加B:D,最后添加A:D。因此得到了一个二维数组:

    0 0 0 1
    
    0 0 1 1
    
    1 1 1 1 
    
    2 2 1 1 
    
    然后用一个大数字(比如99)替换大于1的任何内容,用数组的行号替换其他内容:

    99 99 99 99 
    99 99 99 99 
    99 99 99 99 
     4  4 99 99
    
    找到数组中的最小数字并减去1

    如果数组包含所有99,则取当前列的列数


    因为Count和Countif只适用于实际范围,我想不出一种方法来使用它们,而不创建一个包含列号的辅助行。

    现在应该可以了,在A3中:

    =MIN(IF(COUNTIFS($A1:A1,$A1:A1,$A2:A2,">="&A2-TRANSPOSE($A2:A2)+1)>1,TRANSPOSE(COLUMN($A2:A2)),99)-1,COLUMNS($A1:A1))
    
    它确实需要一个额外的行,其中包含数字1-29

    必须使用CtrlShiftEnter作为数组公式输入

    这从一个数组的正常countif开始。如果你认为这是列A- D,那么CulTif($a1:d1,$a1:d1),你会得到

    2 2 1 1
    
    (行数组)因为A1和B1中重复了a

    我使用了COUNTIFS并添加了另一个条件,只考虑当前列(D),然后在其前面添加列(C:D),然后添加B:D,最后添加A:D。因此得到了一个二维数组:

    0 0 0 1
    
    0 0 1 1
    
    1 1 1 1 
    
    2 2 1 1 
    
    然后用一个大数字(比如99)替换大于1的任何内容,用数组的行号替换其他内容:

    99 99 99 99 
    99 99 99 99 
    99 99 99 99 
     4  4 99 99
    
    找到数组中的最小数字并减去1

    如果数组包含所有99,则取当前列的列数


    因为Count和Countif只适用于实际范围,所以我想不出一种方法来使用它们,而不创建一个包含列号的辅助行。

    我想我已经知道了怎么做,但这将是一个相当丑陋的数组公式,最好在早上看。我想我已经知道怎么做了,但这将是一个相当丑陋的数组公式,最好在早上看。