2015-04-28 2 views
2

У меня колонки структура, аналогичная приведенные нижеВыбор/Назначение нескольких столбцов и строк в массив

Author Book 
    ---- ---- 
    ---- ---- 
    Vicky Book1 
    Vicky Book2 
    Giri Book1 
    Giri Book3 

Колонна author находится в column B и Book колонке может прийти в любом столбце на основе других DATAS столбцов

Я хочу, чтобы выбрать значения в этих двух столбцах

Я попытался

fileArray = Range("B4:B" & finalRow & "," & endColumn).Value 

Здесь первая часть работает нормально, finalRow содержит номер строки, до которой запись есть, и endColumn где книжные детали будут доступны

Если я использую

fileArray = Range("B4:B" & finalRow) 

это получать значения, но когда я пытаюсь добавить еще один столбец, он бросает ошибку

Также я тоже

пытался ниже одного

Но он не получает значения S4:S9

Как можно получить требуемые значения?

+1

Попробуйте 'fileArray = Range (" B4: "& endColumn & finalRow)'. (Предполагая, что endColumn - это буква, а не число.) – nhee

ответ

1

Вы можете сделать это следующим образом:

Dim fileArray 
Dim finalRow As Long 
Dim targetCol As Long 

With Sheets("SheetName") ' change to your actual sheet name 
    finalRow = .Range("B" & .Rows.Count).End(xlUp).Row 
    ' assuming "Book" is the column header and headers are in 3rd row 
    ' find the correct column number 
    targetCol = .Range("B3").EntireRow.Find("Book").Column 
    fileArray = Array(.Range("B4:B" & finalRow), _ 
       .Range(.Cells(2, targetCol), .Cells(finalRow, targetCol))) 
End With 

Чтобы получить значение:

Debug.Print fileArray(0)(1) ' returns Vicky 
Debug.Print fileArray(1)(1) ' returns Author1 

Так что это как первая скобку закрытом номер является номер столбца, вторая строка.

Смежные вопросы