使用基于行的4个可见数字填充列

时间:2015-07-28 19:31:09

标签: excel-vba vba excel

AS列中,我有一个空白列,我需要为从第3行开始到最后一行的每一行给出一个数字(这已经预定义为VBA中的lastrow(行号)) 。有没有办法在VBA编程中将它们从1编号到最后一行?

例如,在AS列中,我希望

Row 3: 1
Row 4: 2
Row 5: 3
....
Last Row: XXX

如果可能,如何格式化数字以使它们全部为4位

0001,
0002,
0003,
etc

4 个答案:

答案 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栏中有数据