Соберите интересующие данные из таблиц в Excel - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть несколько таблиц на одном листе, как собрать из них интересующие меня данные. например, мне просто нужны данные столбца table1 3 и столбца table2 2. Размер обеих таблиц может быть разным. Мне нужно собрать данные в массив для следующей обработки.

Спасибо.

two tables in one sheet

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Попробуйте (необходимые комментарии в коде):

Option Explicit
Sub CollectData()
    Dim table1Address As String, table2Address As String
    ' here you specify cells that are at the start of a column
    table1Address = "B2"
    table2Address = "C7"

    Dim firstCell As Range, lastCell As Range
    Dim table1Data, table2Data As Variant
    ' determine last cell in column and read whole column at once to an array variable
    Set firstCell = Range(table1Address)
    Set lastCell = Range(table1Address).End(xlDown)
    table1Data = Range(firstCell, lastCell).Value2

    Set firstCell = Range(table2Address)
    Set lastCell = Range(table2Address).End(xlDown)
    table2Data = Range(firstCell, lastCell).Value2

End Sub
0 голосов
/ 08 апреля 2019

Вам нужно найти способ ограничить таблицы в VBA, то есть знать, в какой строке они начинаются и из какого количества строк они состоят. Поскольку таблицы могут появляться в любом месте листа с различными размерами, прямого способа извлечения их данных не существует.

То, что я хотел бы предложить, - это цикл сверху вниз до последней строки листа, и в каждой строке проверять, начинается ли таблица, а затем во внутреннем цикле перебирать строки таблицы до конца таблицы (т. Е. Встречается пустая строка). ).

Код может выглядеть примерно так (не проверено):

Dim LastRow as Long, i as Long, k as Long
Dim sht as Worksheet
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 'Assuming the tables start in column A

For i=1 to LastRow
    If (sht.Range("A" & i) <> "" Then 'table is encountered
        k = i
        Do While sht.Range("A" & k) <> ""
             ... 'Get data from specific column
             k = k + 1
        Loop        
    End if
    i = k
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...