Консолидация 650 листов в одной книге на одну страницу - PullRequest
0 голосов
/ 21 марта 2019

Этот код дает мне все со всех листов, и даже не таким образом, что столбцы совпадают.Я создал сценарий VBA, в котором взял все 127 отдельных листов исключений и объединил их в одну рабочую книгу с более чем 600 листами.Я хочу, чтобы только 127 листов, называемых «Зависимость функций», нумерованных пустых - 127 были объединены в один лист.Столбцы иногда содержат бесполезные данные в первой строке, но в остальном имеют похожие столбцы.Есть ли лучший способ сделать это ??

Sub MergeAll()
Dim r As Long, ws As Worksheet, rAll As Long, wsAll As Worksheet
Dim i As Long

Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.name = "All"
Set wsAll = ActiveSheet
rAll = 2
For Each ws In Worksheets
If ws.name <> "All" Then
    r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For i = 1 To r
        wsAll.Cells(rAll, 1) = ws.name
        wsAll.Cells(rAll, 2) = ws.Cells(i, 1)
        wsAll.Cells(rAll, 3) = ws.Cells(i, 2)
        rAll = rAll + 1
    Next i
End If
Next ws
End Sub

1 Ответ

4 голосов
/ 21 марта 2019
Sub MergeAll()

    Dim r As Long, ws As Worksheet, rAll As Long, wsAll As Worksheet
    Dim i As Long, wb As Workbook

    Set wb = ThisWorkbook

    Set wsAll = wb.Worksheets.Add(After:=wb.Worksheets(wb.Worksheets.Count))
    wsAll.name = "All"

    rAll = 2
    For Each ws In Worksheets
        If ws.name Like "Function Dependency*" Then

            r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

            For i = 1 To r

                wsAll.Cells(rAll, 1).Resize(1, 3).value = _
                      Array(ws.name, ws.Cells(i, 1), ws.Cells(i, 2))

                rAll = rAll + 1
            Next i

        End If
    Next ws

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...