将不同范围的数字从一个工作表复制并粘贴到另一个工作表

时间:2016-07-21 09:52:47

标签: excel vba excel-vba

我希望Excel将数据从我的第一个工作表(Job!)复制到另一个工作表(Einfügen!),但问题是我的两个工作表都有很多不连续性。例如:
Sample data

在从网络分析仪中提取的每个AV,AF,AN,...中有1600列,但它们从第11列或任何其他列开始随机。

在另一张工作表(Einfügen!)中我想自动粘贴这些数据 这是这样的:

enter image description here

例如我想从Job中复制AV中的所有数据!到Einfügen的Eingabe a(C11:F1611)!来自Job的AF!到Einfügen的Eingabe a(U11:Z1611)!等等但是AV和其他东西在Job中的位置!当我应用新文档时会发生更改,因此如何根据以下文本复制和粘贴此数据的程序:AV或AN或我的Job中写​​的任何其他内容!

我是excel的VBA新手,但我尝试过这样但是因为Job中的数据位置!更改,它无法正常工作。'在此示例中,我将数据从Sheet1(源)复制到Sheet2(目标)

Sub sbCopyRangeToAnotherSheet()
    'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C17659"), Range("F19259")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("C11"), Range("F1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C9639"), Range("H11239")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("C11"), Range("L1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C6431"), Range("H8031")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("U11"), Range("Z1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C12847"), Range("F14447")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("Q11"), Range("T1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C20867"), Range("F22467")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("AA11"), Range("AD1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
'Copy the data
Sheets("Job").Activate
Sheets("Job").Range(Range("C28887"), Range("F30487")).Copy
'Activate the destination worksheet
Sheets("Einfügen").Activate
'Select the target range
Range(Range("M11"), Range("P1611")).Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False

End Sub

2 个答案:

答案 0 :(得分:0)

Ela,你可以在这里找到一个很好的起点:

http://www.excel-easy.com/vba/range-object.html

基本上你需要定义要复制的范围,然后复制粘贴,这是一个未经测试的例子:

Sub CopyPaste()
Dim rngCopy As Range, rngPaste As Range

Set rngCopy = Worksheets("Sheet1").Range("a1")
Set rngPaste = Worksheets("Sheet2").Range("a1")
rngCopy.Copy rngPaste

End Sub

如果范围移动(我认为你试图说),研究dlookup函数和range.end(xlup)

抱歉,我对你的特定例子无能为力 - 不太了解它

答案 1 :(得分:0)

如果您要复制的区域仅包含数字,那么您可以尝试这样做:
在工作表中,转到HOME>>找到&选择>>转到特殊并选择常量>>数字>>好。

http://excel.officetuts.net/images/2014-12-29/go-to-special.png

如果所选区域仅 您要复制的区域,则可以尝试使用此宏:

Sub sbCopyRangeToAnotherSheet()
    Dim rngFrom As Range, rngTo As Range, rngNumbers As Range

    Set rngTo = Sheets("Einfügen").Range("C11")

    Set rngNumbers = Sheets("Job").UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers)

    For Each rngFrom In rngNumbers.Areas

        rngFrom.Copy
        rngTo.PasteSpecial

        Set rngTo = rngTo.Offset(rngFrom.Columns.Count)
    Next

    Application.CutCopyMode = False
End