Excel 在特定列中的每次更改中分配序列号
我正在寻找Excel VBA代码,因为我想根据B列中的更改将序列号分配给A列。例如,我需要在A列中为每个X、Y、Z的答案为1、2、3 是否有人可以帮助发布所需的VBA代码Excel 在特定列中的每次更改中分配序列号,excel,numbers,allocation,vba,Excel,Numbers,Allocation,Vba,我正在寻找Excel VBA代码,因为我想根据B列中的更改将序列号分配给A列。例如,我需要在A列中为每个X、Y、Z的答案为1、2、3 是否有人可以帮助发布所需的VBA代码 Column A Coloum B 1 X 1 X 2 Y 2 Y 3 Z 这是一个超级简单的版本,没有变量或类似的东西。假设: 您的数据使用第1行作为标题行,因此实际数据从第2行开始 列B中的值
Column A Coloum B
1 X
1 X
2 Y
2 Y
3 Z
这是一个超级简单的版本,没有变量或类似的东西。假设:
- 您的数据使用第1行作为标题行,因此实际数据从第2行开始
- 列B中的值已排序
=A2+(B3<>B2)
=A2+(B3B2)
如果必须是一个宏,那么类似这样的操作应该可以正常工作:
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
Sub-tgr()
变暗rCell As范围
Dim arrID()的长度与
长的指数
暗淡的盖子
将strTemp设置为字符串
带范围(“B2”,单元格(行数,“B”)。结束(xlUp))
ReDim arrID(1到.Rows.Count)
对于每个rCell In.单元格
如果是rCell.Text strTemp,则
strTemp=rCell.Text
盖子=盖子+1
如果结束
arrIndex=arrIndex+1
arrID(arridex)=盖子
下一个rCell
.Offset(,-1).Value=Application.Transpose(arrID)
以
Set rCell=无
清除棱边
端接头
Vengadasmy的值是否为“x”、“y”和“z”非常值得怀疑,他/她可能无法键入所有可能的值。虽然我确信在这种情况下这不是问题,但如果行数超过65573,使用转置将产生类型不匹配错误。这是Excel 2007和2010中函数的一个限制(较低的限制适用于以前的版本)。使用ReDim-arrID(1到.Rows.Count,1到1)
然后将下面的元素引用更改为arrID(arridex,1)
可以避免转置的需要。
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