VBA - 复制和粘贴正确的数据

时间:2017-08-22 20:23:54

标签: excel vba excel-vba

我无法将各种范围复制到相应的工作表中。

files.my_file

在这个例子中,每个变量等于^。

dateRng = 12/19/2016 00:00:00 - 12/19/2016 23:59:59
num = 11
NumPts = 33
Sheets.Count = 16

所以目前,我将第一个范围复制到第一个相应的工作表中。但是之后它也会粘贴到所有其余的纸张上。而不是将第二个范围与第二个工作表配对。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我不太明白这个问题。如果你想通过不同的纸张粘贴不同的范围,我相信你的周期已经混淆了。

由于For j在For s中运行,因此在传递到下一张工作表之前,您将浏览第一张工作表中的所有范围。

所以也许:

For s = 1 To Sheets.Count
For y = 1 To NumPts
    With Sheets(s)
        If .Name = s Then
            Sheets("Reporting").Range("A" & (12 * y - 7) & ":" & fConvertToLetter & (12 * y + 1)) _
            .Copy (.Range("A2"))
            .Range("A1") = dateRng
            .Name = Sheets("Point Names").Range("B" & (3 * s - 1))
        End If
        Columns("B:B").EntireColumn.AutoFit
    End With
Next y
Next s

只有在我正确理解并且您希望范围随每张下一张纸移动时,这才适用。

答案 1 :(得分:0)

我能够通过将For Statements分成两个块来解决问题。

For s = 1 To Sheets.Count
    With Sheets(s)
    For j = 1 To num
        If .Name = j Then
            .Range("A1:C1").Merge
            .Range("A1") = dateRng
            .Name = Sheets("Point Names").Range("B" & (3 * j - 1))
        End If
    Next j
    End With
Next s
For s = 1 To Sheets.Count
    With Sheets(s)
    For y = 1 To NumPts
        If .Name = Sheets("Reporting").Range("B" & (12 * y - 5)) Then
            Sheets("Reporting").Range("A" & (12 * y - 6) & _
        ":" & fConvertToLetter & (12 * y + 20)) _
        .Copy (.Range("A2"))
        .Columns("A:A").ColumnWidth = 12
        .Columns("B:B").EntireColumn.AutoFit
    End If
    y = y + 2
    Next y
End With
Next s