Как вернуть несколько значений в массиве - Excel VBA - PullRequest
3 голосов
/ 28 февраля 2020

Я пытаюсь вернуть несколько значений, хранящихся в массиве. [Image of array] Я не совсем уверен, как это описать, но я хочу вывести такие значения, как 0 в A1, 37,2 в B1, 5,51 в C1, 0,498 в D1, 4,17 в A2, 36,7 в B2 и др. c.

Мой текущий код:

For j = 1 to nw
    For k = 1 to 4
       tWB.Sheets("Data").Cells(j, k) = A(j)
    Next k
Next j

Это мой первый пост, поэтому я не уверен в этом, поэтому, если потребуется дополнительная информация, я могу попытаться предоставить ее .

Вот весь код

    Option Explicit
    Option Base 1
    Sub DataMerge()
    Dim FileNames As Variant, A() As Variant
    Dim i As Integer, nw As Integer, j As Integer, k As Integer
    Dim UserRange As Range, ImportRange As String
    Dim tWB As Workbook, aWB As Workbook
    Set tWB = ThisWorkbook
    FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter(*.csv),*.csv", Title:="Open File(s)", MultiSelect:=True)
    Workbooks.Open FileNames(1)
    Set UserRange = Application.InputBox(Prompt:="Select Range: ", Title:="Import Range", Type:=8)
    ImportRange = UserRange.Address
    nw = UBound(FileNames)
    ReDim A(nw) As Variant
    For i = 1 To nw
        Workbooks.Open FileNames(i)
        Set aWB = ActiveWorkbook
        A(i) = aWB.Sheets(1).Range(ImportRange)
        aWB.Close SaveChanges:=False
    Next i

    tWB.Activate
    For j = 1 to nw
        For k = 1 to 4
           tWB.Sheets("Data").Cells(j, k) = A(j)
        Next k
    Next j
   End Sub

1 Ответ

4 голосов
/ 28 февраля 2020

Ваш код ОЧЕНЬ близок. Вместо:

For j = 1 to nw
    For k = 1 to 4
       tWB.Sheets("Data").Cells(j, k) = A(j)(k,1)
    Next k
Next j
...