Excel 将多个工作表复制/粘贴到单个工作簿&;合并范围
我想从一个工作簿中的每个工作表复制已使用的范围,并仅粘贴值,将其转置到新工作簿中,全部粘贴在一个工作表上。如果可能的话,它们可以相互堆叠而不是并排堆放吗? 这就是我到目前为止所尝试的。我不确定如何堆叠它们,并且“特殊粘贴”(转置或粘贴值)无法正常工作。除了不知道如何连接范围之外,我还做错了什么?不确定Excel 将多个工作表复制/粘贴到单个工作簿&;合并范围,excel,vba,Excel,Vba,我想从一个工作簿中的每个工作表复制已使用的范围,并仅粘贴值,将其转置到新工作簿中,全部粘贴在一个工作表上。如果可能的话,它们可以相互堆叠而不是并排堆放吗? 这就是我到目前为止所尝试的。我不确定如何堆叠它们,并且“特殊粘贴”(转置或粘贴值)无法正常工作。除了不知道如何连接范围之外,我还做错了什么?不确定应用程序.union方法会有多大帮助。 谢谢你的帮助 Sub transposeRange() Dim sourceRange As Range, targetRange As Range Dim
应用程序.union
方法会有多大帮助。
谢谢你的帮助
Sub transposeRange()
Dim sourceRange As Range, targetRange As Range
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Set sourceRange = Workbooks("LBWPL_Jan_Feb.xlsm").Worksheets(1).UsedRange
Set targetRange = Workbooks("janfeb_totals.xlsm").Worksheets(1).Range("A1")
With sourceRange
sourceRange.Copy
targetRange.PasteSpecial _
xlPasteValues, Transpose:=True
' WorksheetFunction.Transpose (targetRange.Value2) << this seems to not execute.
End With
Next ws
End Sub
Sub transportserange()
变暗源范围作为范围,目标范围作为范围
将ws设置为工作表
对于此工作簿中的每个ws。工作表
设置sourceRange=工作簿(“LBWPL\u Jan\u Feb.xlsm”)。工作表(1)。UsedRange
设置targetRange=工作簿(“janfeb_totals.xlsm”)。工作表(1)。范围(“A1”)
使用sourceRange
sourceRange.复制
targetRange.PasteSpecial_
xlPasteValues,转置:=真
'WorksheetFunction.Transpose(targetRange.Value2)类似这样的东西应该是一个好的开始:
Sub transposeRange()
Dim sourceRange As Range, targetRange As Range
Dim ws As Worksheet, data, rng As Range
Set targetRange = Workbooks("janfeb_totals.xlsm").Worksheets(1).Range("A1")
For Each ws In ThisWorkbook.Worksheets
Set rng = ws.Range("A5").CurrentRegion '<< edit
data = Application.Transpose(rng.Value)
targetRange.Resize(rng.Columns.Count, rng.Rows.Count).Value = data
Set targetRange = targetRange.Offset(rng.Columns.Count) 'move destination down
Next ws
End Sub
Sub transportserange()
变暗源范围作为范围,目标范围作为范围
尺寸ws As工作表、数据、rng As范围
设置targetRange=工作簿(“janfeb_totals.xlsm”)。工作表(1)。范围(“A1”)
对于此工作簿中的每个ws。工作表
设置rng=ws.Range(“A5”).CurrentRegion'sourceRange.Copy目的地:=targetRange
,targetRange.PasteSpecial
,xlPasteValues
,转置:=True
。。。有很多问题。哈哈。。。首先删除目标:=targetRange
,否则粘贴将发生两次。您在转置:=True
之前缺少逗号。这意味着您将粘贴两次。。。。当您指定目的地时
,粘贴会立即发生(不带转置)。省略目标
只会复制到剪贴板,如中所述。您可能应该仔细阅读循环。当前,您的循环没有引用ws
,因此将始终在同一张工作表上运行。你应该在“LBWPL\u Jan\u Feb.xlsm”的表格中循环吗?当我执行时,在转置行上收到内存不足错误。你有空的工作表吗?或者工作表中有多少数据出错UsedRange
并不是获取所有数据的最佳方式:如果您知道数据从何处开始,那么您可以使用(例如)Range(“A1”).CurrentRegion
获取表格中从A1开始的所有数据(并且没有空白列或行)。没有空工作表。每张纸从A5开始。有几个空单元格,但数据表中没有空的完整列或行。大约有130行,最多55列。但是,将.UsedRange
替换为范围(“A5”)。CurrentRegion
运行良好,速度非常快。谢谢