1

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

2
2
5
5
5
5
5
2
2
3
3
3
(等等 - 实际列表长度超过 2500 行,包含 2 到 200 之间的值。)

我需要的是一个宏,它将递增地对数字的每次出现进行编号,每当值更改时将计数重置为 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 几乎一无所知)。非常欢迎任何帮助。

4

2 回答 2

1

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

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

将其放在单元格 B2 中,假设第一个数字 (2) 在单元格 A1 中。您只需要1输入单元格B1,然后将公式填写到底部。

于 2013-04-27T15:36:59.057 回答
1

如果您需要较早的宏来满足此要求,则可以使用此版本,其中包括每个重复旁边的出现 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
于 2013-04-27T15:51:28.183 回答