基于其他列重复自动递增

时间:2016-11-24 07:25:14

标签: excel excel-vba 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 1 1 2),所以当它更改(到2或3等)时,列B上的计数器必须重置并且当A重复下一个值(1 2 3 1

时,自行递增

感谢

3 个答案:

答案 0 :(得分:2)

修改

看看bzimor的答案,因为他在B1栏中没有硬性值的情况下以更一般的方式解决了这个问题!

原始答案

如果没有VBA,您可以通过以下方式解决问题:

在B1列中加上1的硬值。这是您的起始值,应始终正确,因为您从1开始计数。

然后在B2

中输入以下公式
=IF($A2=$A1;$B1+1;1)

只需将公式向下拖动到B的其他行,即可完成

所以B3看起来应该是这样的

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

依旧......

答案 1 :(得分:1)

您可以使用单一公式:

=COUNTIF($A$1:A1,A1)

将其放入单元格B1并填写

答案 2 :(得分:0)

    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