在AS
列中,我有一个空白列,我需要为从第3行开始到最后一行的每一行给出一个数字(这已经预定义为VBA中的lastrow(行号)) 。有没有办法在VBA编程中将它们从1编号到最后一行?
例如,在AS
列中,我希望
Row 3: 1
Row 4: 2
Row 5: 3
....
Last Row: XXX
如果可能,如何格式化数字以使它们全部为4位
0001,
0002,
0003,
etc
答案 0 :(得分:2)
MatthewD的代码很好,但我的str
方法更清晰,我没有使用有问题的.NumberFormat
。
UsedRange
答案 1 :(得分:1)
Dim lRow As Long
Dim lCount as Long
Dim ws as excel.worksheet
Set ws = Application.ActiveSheet
Dim strCount As String
lRow = 3
lCount = 1
Do While lRow <= ws.UsedRange.Rows.count
strCount = Trim(str(lCount))
If Len(strCount) = 1 Then
ws.Range("AS" & lRow).Value = "'000" & strCount
ElseIf Len(strCount) = 2 Then
ws.Range("AS" & lRow).Value = "'00" & strCount
ElseIf Len(strCount) = 3 Then
ws.Range("AS" & lRow).Value = "'0" & strCount
Else
ws.Range("AS" & lRow).Value = "'" & strCount
End If
lCount = lCount + 1
lRow = lRow + 1
Loop
答案 2 :(得分:1)
有一个更好的解决方案,提供了什么。 Excel具有Fill Series
功能,可以执行趋势和线性进度。这是对VBA中DataSeries()
的一个简单的单行函数调用:
Range("AS3") = 1 ' Set the starting value
With Range("AS3:AS" & intLastRow)
.DataSeries xlColumns, xlLinear, , 1 ' Linear series, step = 1
.NumberFormat = "0000" ' Pad with zeros
End With
答案 3 :(得分:0)
这是一个解决方案,可以将数字作为文本提供,而不需要循环:
ROW()
使用excel中的{{1}}功能,然后复制并粘贴为值。
假设您在B栏中有数据