excel vba填充列从1到N.

时间:2017-02-10 12:05:47

标签: excel vba excel-vba

我正在尝试编写VBA代码以自动填充范围A1:A10000,编号为1到10000,但不在A1中输入1,在A2中输入2以创建范围。

基本上,我需要一个看起来像这样的代码:

Set fillRange = Worksheets("Sheet1").Range("A1:A10000")
(1,2).AutoFill Destination:=fillRange

当然这不起作用,但你得到了它。

5 个答案:

答案 0 :(得分:2)

Dim fillRange As Range
Dim i As Long

Set fillRange = Worksheets("Sheet1").Range("A1:A10000")
With fillRange
    For i = .Cells(1, 1).Row To .Cells(.Rows.Count, 1).Row
        .Cells(i, 1).Value = i
    Next i
End With 'fillRange

或使用自动填充:

With Worksheets("Sheet1")
    Range("A1").Value = 1
    Range("A2").Value = 2
    Range("A1:A2").AutoFill Destination:=Range("A1:A10000")
End With 'Worksheets("Sheet1")

答案 1 :(得分:2)

这应该足够快

您可以使用以下功能

Function FillNumbers(rng As Range) As Variant
    Dim i As Long
    ReDim nmbrs(1 To rng.Rows.Count)

    For i = 1 To UBound(nmbrs)
        nmbrs(i) = i
    Next
    FillNumbers = Application.Transpose(nmbrs)
End Function

以下列方式

With Worksheets("Sheet1").Range("A1:A10000")
    .Value = FillNumbers(.Cells)
End With

答案 2 :(得分:1)

你不能使用简单的循环吗?

For i = 1 to 10000
    Worksheets("Sheet1").Cells(i, 1) = i
Next i

答案 3 :(得分:1)

写入和读取工作表是您可以执行的一些最慢的操作。编写节省时间的代码意味着在内存中尽可能多地做。

尝试将所有值写入数组,然后一次性将整个内容写入工作表,如下所示:

Sub printRange(total As Integer)
Dim i, myRange() As Integer
ReDim myRange(1 To total)
    For i = 1 To total:
        myRange(i) = i
Next i

'Use Transpose to shift the 1d array into a column

Worksheets("Sheet1").Range("A1:A" & UBound(myRange)).Value = _ 
Application.WorksheetFunction.Transpose(myRange)

End Sub

总计= 10000,即使在十年前的恐龙桌面上也能立即运行。

答案 4 :(得分:0)

Dim fillRagne As Range
Set fillRange = Range(Cells(1, 1), Cells(1000, 1))
For Each cell in fillRange
    cell.value = cell.Row
Next cell