VBA EXCEL 复制范围

VBA EXCEL copy range

我刚才发布了同样的问题,并被告知我拼写了 sheets 错误。我记下了这个问题;因为我认为我明白我正在尝试调用一个方法..那是我的范围(是的 sheet 被拼写为 sheeet)。我想我还是不明白。我正在尝试将 "A2" 列复制到 "D" 列的最后一个单元格,从 sheet "TEXT" 复制到 Sheet3

Dim TotalRows As Integer
Dim CurrentWorkbook As Workbook ' macro workbook
Dim RangeToCopy As Range
Dim ColumnLetterNumber As String

Set CurrentWorkbook = ThisWorkbook
TotalRows = Sheets("TEXT").UsedRange.Rows.Count
ColumnLetterNumber = "D" & TotalRows


Set RangeToCopy = Range("A2", ColumnLetterNumber)

' Group Last Observed within the first three columns
' Last Observed start in column N
' After Insert end up in column )

 Columns("D:D").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

' Move the Last observed (now column O) to Column D so that they can be fitered together

Sheets("TEXT").Range(Range("O1"), Range("O1").End(xlDown)).Copy Sheets("TEXT").Range("D1")

With Sheets("TEXT")
 .AutoFilterMode = False
 .Range("A1:D1").AutoFilter
End With
'
'Copy Columns to the POAM sheet
Set RangeToCopy = Range("A2", ColumnLetterNumber) 'top left, bottom right
RangeToCopy.Select
CurrentWorkbook.Sheets("Sheet3").Activate


CurrentWorkbook.Sheets("TEXT").Range(RangeToCopy).Copy Action:=xlFilterCopy, _
CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True


End Sub

我回答了你之前更详细的问题。这行不通,因为这条线至少有两个原因行不通:

CurrentWorkbook.Sheets("TEXT").Range(RangeToCopy).Copy Action:=xlFilterCopy, _
    CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True

首先,"RangeToCopy"不是sheet上定义的范围,所以不能这样引用。它是您 VBA 代码中的一个变量,因此您只需要在此范围内使用复制功能即可。其次,Range Class 的 Copy 函数没有所有这些参数。你想要:

RangeToCopy.Copy Destination:=Sheets("Sheet3").Range("A1")

如果你真的想获取唯一值,那么你需要使用"AdvancedFilter"函数。

RangeToCopy.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Sheets("Sheet3").Range("A1"), unique:=True,  criteriarange:= <Insert range that you wish to get unique values from here> 

此外,您应该根据 Sheet 名称定义 RangeToCopy,因此:

Set RangeToCopy = Sheets("TEXT").Range("A2", ColumnLetterNumber)

你做完了吗?

Sub Macro()

    Dim dEnd As Integer

    Sheets("Sheet1").Select

    Range("D1").Select
    dEnd = Selection.End(xlDown).Row

    Range("A2:" & "D" & dEnd).Copy

    Sheets("Sheet2").Select
    Range("A1").Select
    ActiveSheet.Paste

    Application.CutCopyMode = False

End Sub

(我没有理会 sheet 个名字)