Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于其他列重复的自动增量_Excel_Vba - Fatal编程技术网

Excel 基于其他列重复的自动增量

Excel 基于其他列重复的自动增量,excel,vba,Excel,Vba,我需要一个宏或公式可以做到这一点: Column A Values: 1 1 1 2 2 2 3 3 4 4 4 5 5 6 6 我需要B栏来做: 1 2 3 1 2 3 1 2 1 2 3 1 2 1 2 因为列B必须有一个增量编号,而列A具有相同的重复值,例如1 2,当它变为2或3等时。当A重复下一个值1 2 3 1时,列B上的计数器必须重置并自身递增 谢谢编辑 看一看bzimor的答案,因为他以更一般的方式解决了B1列中没有硬值的问题 原始答案 在不使用VBA的情况下,可以通过以下方

我需要一个宏或公式可以做到这一点:

Column A Values:

1
1
1
2
2
2
3
3
4
4
4
5
5
6
6
我需要B栏来做:

1
2
3
1
2
3
1
2
1
2
3
1
2
1
2
因为列B必须有一个增量编号,而列A具有相同的重复值,例如1 2,当它变为2或3等时。当A重复下一个值1 2 3 1时,列B上的计数器必须重置并自身递增

谢谢

编辑

看一看bzimor的答案,因为他以更一般的方式解决了B1列中没有硬值的问题

原始答案

在不使用VBA的情况下,可以通过以下方式解决此问题:

在B1列中输入硬值1。这是您的起始值,应该始终正确,因为您以1开始计数

然后在B2中输入以下公式

=IF($A2=$A1;$B1+1;1)
只需将公式向下拖动到B的其他行,就完成了

所以B3应该是这样的

=IF($A3=$A2;$B2+1;1)

依此类推……

您可以使用单一公式:

    Here is your desired macros
    Sub jkjainGenerateSerialNumber20161124()
        readcol = Val(InputBox("type ref col#"))
        writecol = Val(InputBox("type dest col#"))
        ts = 0
        Range("A1000000").Select
        Selection.End(xlUp).Select
        lastrow = ActiveCell.Row

        For n = 2 To lastrow
        prev = Cells(n - 1, readcol)
        curr = Cells(n, readcol)

        If prev <> curr Then
        ts = 1
        End If

        If prev = curr Then
        ts = ts + 1
        End If

        Cells(n, writecol) = ts
        Next
     End Sub
=COUNTIF($A$1:A1,A1)

将其放入B1单元格并填写

您是否有任何代码可供共享,您已经尝试使用这些代码来解决问题?很好的解决方案!