Как мне просмотреть список рабочих таблиц, которые у меня есть в таблице? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть 200 рабочих листов (с именами 1, 2, 3 и т. Д.), Которые мне нужно циклически проходить, копировать и вставлять различные диапазоны данных из каждого в главную рабочую таблицу. Как я могу это сделать?

У меня есть список всех листов в массиве в редакторе VB, и я попытался перебрать его. У меня есть список имен листов в таблице на другом листе, и я также попытался просмотреть его.

Может ли кто-нибудь привести простой пример того, как можно сделать один из этих методов?

Пример кода показан ниже.

Dim i As Integer
i = 11
Dim SheetList As String
Dim element As Variant
SheetList = Array("Sheet24", "Sheet25")

'Simplified example of Do While loop being used
Do While Sheet1.Cells(i, 2).Value <> ""
    For Each element In SheetList
        If element.Range("C3") = "" Then
            GoTo Next Iteration
        Else
            'copy and paste data in master worksheet
        End If
NextIteration:

    i = i +1
    Next element
Loop

Ожидаемый результат: диапазоны данных из нескольких рабочих листов, которые нужно скопировать и вставить в один объединенный диапазон на главной рабочей таблице.

1 Ответ

1 голос
/ 09 апреля 2019

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

Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets

    'do something
Next sht

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

Если есть определенные листы, которые вы хотите использовать, то вы все равно можете просмотреть все листы.и проверьте, выполняется ли какое-либо условие для определенного листа, например:

For Each sht In ThisWorkbook.Worksheets
    If sht.Name = "something" Then
        'do something
    End If
    If Condition Then
        'do something
    End If
Next sht

Например, на листах, с которых вы хотите скопировать некоторые данные, может быть ячейка «флажка» с определенным значением, назначенным ейкак TRUE или 1.Код проверяет содержимое этой ячейки и действует соответствующим образом.

Теперь, если вы хотите сэкономить время, не просматривая все листы (что в любом случае не должно занимать слишком много времени), и избегатьпроверяя условие для каждого листа, вы можете создать пользовательские collection рабочих листов, состоящих только из тех листов, которые вас интересуют.

Dim sht As Worksheet
Dim shtcol As New Collection
shtcol.Add ThisWorkbook.Worksheets(1)
shtcol.Add ThisWorkbook.Worksheets(2)
shtcol.Add ThisWorkbook.Worksheets(3)
For Each sht In shtcol
    'do something
Next sht
...