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 个名字)
我刚才发布了同样的问题,并被告知我拼写了 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 个名字)