Excelmacros对已sorting列中的相同单元格进行增量编号,当单元格内容更改时,将计数重置为1

这是从前一个问题的后续( 如果单元格包含值n,如何创build一列n个单元格,每个单元格包含值n(然后再与另一个单元格重复)? )。 我有一列由x行x值组成的数字,然后是y行的y值,依此类推; 举个简单的例子:

2
2





2
2
3
3
3
(等 – 实际列表超过2500行,包含2和200之间的值。)

我需要的是一个macros,它会逐渐给每个数字的出现编号,每当数值发生变化时,将计数值重置为1。 所以上面的列表会产生一个如下的列:

2 – 1
2 – 2
5 – 1
5 – 2
5 – 3
5 – 4
5 – 5
2 – 1
2 – 2
3 – 1
3 – 2
3 – 3
..等等。

我猜测这个列是x行的价值x,y行的价值y(等)是不是那么重要,但我提到它的情况下,它是有用的。 我正在使用Excel 2000(而且几乎完全不了解VBA)。 任何帮助非常欢迎。

如果你需要更早的macros来包含这个要求,你可以使用这个版本,其中包括在每个重复旁边的出现ID。

Public Sub Test() PopulateColumn Range("A1"), Range("B1") End Sub Public Sub PopulateColumn(ByVal rngSourceStart As Range, ByVal rngTargetStart As Range) Dim rngSource As Range Dim rngTarget As Range Set rngSource = rngSourceStart Set rngTarget = rngTargetStart Dim iValue As Integer Dim i As Integer While rngSource.Value <> "" iValue = rngSource.Value For i = 1 To rngSource.Value rngTarget.Value = iValue rngTarget.Offset(0, 1).Value = i Set rngTarget = rngTarget.Offset(1, 0) Next Set rngSource = rngSource.Offset(1, 0) Wend End Sub 

如果你可以使用公式,你可以使用这个:

=if(A2=A1,B1+1,1)

把它放在B2单元格中,假设第一个数字(2)在单元格A1中。 你只需要在B1单元格中input1 ,然后在下面填入公式。