在特定列的每个更改中分配序列号

时间:2013-08-13 19:55:37

标签: excel-vba numbers allocation vba excel

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

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

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

2 个答案:

答案 0 :(得分: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

这是超级简单版本,没有变量或任何类型。

答案 1 :(得分: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