Как я могу зациклить листы в книге Excel и транспонировать данные на каждом листе? - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь написать макрос VBA, который будет транспонировать данные на каждом листе в книге Excel (превращать столбцы в строки, а строки в столбцы).

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

Dim WS_Count As Integer
Dim i As Integer

WS_Count = ActiveWorkbook.Worksheets.Count

For i = 1 To WS_Count
    Worksheets(i).UsedRange.Copy
    Worksheets(i).Cells.ClearContents
    Worksheets(i).Range("A1").PasteSpecial Transpose = True
Next i

Это дает мне ошибку во время выполнения «1004»: сбой метода PasteSpecial класса Range.

1 Ответ

0 голосов
/ 02 октября 2019

Вы получаете эту ошибку, потому что эта строка выводит вас из режима Вырезать / Копировать:

Worksheets(i).Cells.ClearContents


Это транспонирует UsedRange каждого рабочего листа вActiveWorkbook и вмещает любое количество столбцов или строк.

Sub TransposeIt()
    Dim ws As Worksheet
    Dim c As Long
    Dim r As Long
    Application.ScreenUpdating = False
    For Each ws In ActiveWorkbook.Worksheets
        With ws.UsedRange
            c = .Columns.Count
            r = .Rows.Count
            .Copy
        End With
        With ws
            .Cells(1, c + 1).PasteSpecial Transpose:=True
            .Range(.Cells(1, 1), .Cells(1, c)).EntireColumn.Delete
        End With
    Next ws
    Application.ScreenUpdating = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...