【问题标题】:Copy & Transpose Data from one sheet & create a new sheet then paste the data into the new sheet从一张表中复制和转置数据并创建一个新表,然后将数据粘贴到新表中
【发布时间】:2020-09-23 20:05:34
【问题描述】:

我有某种格式的数据,我一直在尝试复制行值并使用 VBA 转置它们。

我可以让它在一张纸上工作,但不是多张。

用于单张工作表的代码

Sub transform()


Dim wss As Worksheet
Dim rng As Range
Dim i As Integer
Dim j As Integer
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Sheet2")







Cells.MergeCells = False

ws.Range(ws.Cells(1, 271), ws.Cells(9999, 350)).ClearFormats

'Loop to transpose all data

For i = 2 To 62
    ws("Sheet1").Range(Cells(i, 1), Cells(i, 215)).Copy
    ws.Cells(5, i).PasteSpecial transpose:=True
Next i

end sub

我已经完成了为第二部分尝试实现的代码编写代码。

For Each wss In ws
        For i = 1 To 62
             ws.Range(Cells(i, 1), Cells(i, 215)).Copy
             Sheets.Add After:=ActiveSheet
             ws.Cells(5, i).PasteSpecial transpose:=True
        Next i
Next wss

我现在想遍历工作簿中的所有工作表,并将每个工作表中的单元格复制并转置到自己的新工作表中,谁能提供一些指导?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    认为这可能是你想要做的:

    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim i As Integer
    
    For Each sourceSheet In wb.Sheets
        ' Don't transpose transposed sheets
        If Left(sourceSheet.Name, 3) <> "TX_" Then
            ' Add the new sheet
            Set targetSheet = wb.Sheets.Add After:=sourceSheet
            ' Flag the name so it won't get transposed
            targetSheet.Name = "TX_" & sourceSheet.Name
            ' Copy source to target
            For i = 1 To 62
                 sourceSheet.Range(sourceSheet.Cells(i, 1), sourceSheet.Cells(i, 215)).Copy
                 targetSheet.Cells(5, i).PasteSpecial transpose:=True
            Next i
    
        End If
    
    Next sourceSheet
    

    【讨论】:

    • 这工作 100% 谢谢!!!,我只做了一个小改动,那就是设置 targetSheet = wb.Sheets.Add 而不是 After:=wss
    • 太棒了!很高兴您能够修复错误。我已经更新了答案中的代码。
    猜你喜欢
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多