0

我正在寻找 Excel VBA 代码,因为我想根据 B 列中的更改将序列号分配给 A 列。例如,对于每个 X、Y、Z,我需要 A 列中的答案为 1、2、3。

有人可以帮助发布所需的 VBA 代码吗?

Column A     Coloum B
1             X
1             X
2             Y
2             Y
3             Z
4

2 回答 2

0
Sub Serial()

For i = 1 To 10

 Cells(i, 2).Select

   If ActiveCell.Value = "x" Then
   Cells(i, 1) = 1

   ElseIf ActiveCell.Value = "y" Then
   Cells(i, 1) = 2

   ElseIf ActiveCell.Value = "z" Then
   Cells(i, 1) = 3

   End If

Next i

End Sub

这是超级简单的版本,没有变量或任何类似的东西。

于 2013-08-13T20:24:26.657 回答
0

假设:

  • 您的数据使用第 1 行作为标题行,因此实际数据从第 2 行开始。
  • B列中的值已经排序

必须是宏吗?这可以通过一个公式来完成。将数字 1 放在单元格 A2 中,然后将这个公式放在单元格 A3 中并复制下来:

=A2+(B3<>B2)

如果它必须是一个宏,那么这样的东西应该可以正常工作:

Sub tgr()

    Dim rCell As Range
    Dim arrID() As Long
    Dim arrIndex As Long
    Dim lID As Long
    Dim strTemp As String

    With Range("B2", Cells(Rows.Count, "B").End(xlUp))
        ReDim arrID(1 To .Rows.Count)
        For Each rCell In .Cells
            If rCell.Text <> strTemp Then
                strTemp = rCell.Text
                lID = lID + 1
            End If
            arrIndex = arrIndex + 1
            arrID(arrIndex) = lID
        Next rCell
        .Offset(, -1).Value = Application.Transpose(arrID)
    End With

    Set rCell = Nothing
    Erase arrID

End Sub
于 2013-08-13T20:30:29.340 回答