我正在寻找 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
我正在寻找 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
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 放在单元格 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