在数组中输入值

时间:2018-01-19 14:38:46

标签: excel excel-vba vba

我正在寻找一种方法将2列中的所有值“转储”为2个独立的数组。目前,这些列中每列包含12k +值(每列具有相同数据量)。

我遇到了一个建议,我可以使用Range函数进行转储(如下所示):

Dim rs  As DAO.Recordset
Dim Top As Integer

Top = 10  ' User input.

Set rs = CurrentDb.OpenRecordset("Select Top " & Str(Top) & " * From YourTable")

但是,当我尝试在While函数中使用代码时,不会生成任何内容。

编辑:有关如何将值放入数组而不必将每个值单独添加到每个数组的任何建议吗?

3 个答案:

答案 0 :(得分:1)

使用for循环。

此外,由于您已经在使用With,因此请包含对该工作表的所有引用。

通过范围直接分配设置的数组是1和2维。

同样,在为数组指定范围时,必须将数组声明为变量

Dim cBIN as Variant, dDealer as Variant
Dim eLastRow as Long, arow as Long
With ActiveSheet
    eLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row    
    cBIN = .Range(.Cells(2, 26), .Cells(eLastRow, 26))
    dDealer = .Range(.Cells(2, 4), .Cells(eLastRow, 4))

    For arow = 2 To eLastRow 
        .Cells(arow, 35) = cBIN(arow - 1, 1) & " - " & dDealer(arow - 1, 1)
    Next arow
End With

答案 1 :(得分:1)

要将范围转储到数组中,请确保您的cBINdDealer变量的类型为variant,然后您需要使用Resize函数。 像这样:

cBIN = Cells(2, 26).Resize(eLastRow, 26)
dDealer = Cells(2, 4).Resize(eLastRow, 4)

然后你有两个数组填充了每个范围的数据。这样做是将第一个范围调整为指定的行和列(最后一行)和列,然后将该信息转储到变量数组中。

答案 2 :(得分:1)

您可以简单地使用公式,因为源数据位于工作表上,然后用值替换公式,这比循环中的处理快得多:

Sub Test()

    Dim i As Long

    With ActiveSheet
        i = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range(.Cells(2, 35), .Cells(i, 35))
            .FormulaR1C1 = "=RC[-9]&"" - ""&RC[-31]"
            .Value = .Value
        End With
    End With

End Sub