Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将多个工作表复制/粘贴到单个工作簿&;合并范围_Excel_Vba - Fatal编程技术网

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
运行良好,速度非常快。谢谢