[英]Copy a range of filtered cells
我在將數據從工作簿復制到另一個工作簿時遇到問題。 主文件main_sheet
從另一個工作簿的工作表中收集數據,該工作簿按月和年更改其名稱,因此當前Workbookdecember18
(它始終受密碼保護)。
從Workbookdecember18
,我必須首先按0
過濾code
列,然后將data3
列從A
到Z
進行排序。 然后,我必須從第一20行復制data1
, data2
和data3
到main_sheet
從另一個工作簿。
這是源表Workbookdecember18
:
這是另一個帶有main_sheet
工作簿(它通常只有 20 行):
這是我寫的代碼,但它不起作用:
Windows("Workbookdecember18").Activate
Sheets("1").Select
ActiveSheet.Unprotect
Range("A2").Select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$CH$2402").AutoFilter Field:=1, Criteria1:="0"
Range("D3").Select
ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields _
.Clear
ActiveWorkbook.Worksheets("1").AutoFilter.Sort.SortFields _
.Add Key:=Range(D3"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2:D30").Select
Selection.Copy
Windows("Another workbook").Activate
Range("A2:D30").Select
ActiveSheet.Paste
第一個問題是我必須讓它在每個月的名稱更改時識別工作簿,並讓它選擇我需要的 20 行(即使最后一個在過濾后可能位於第 200 行)。
在接下來的三到四個星期內, "Workbook" & Format(Date, "mmmmyy")
應該在 US-EN 區域設置中生成WorkbookDecember18 。
Option Explicit
Sub filterAndTransfer()
Dim target As Range
Windows("Another workbook").Activate
With Worksheets("sheet1")
Set target = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
Windows("Workbook" & Format(Date, "mmmmyy")).Activate
With Worksheet("1")
.Unprotect
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, "A").CurrentRegion
.Sort Key1:=.Cells(1, "D"), Order1:=xlDescending, DataOption1:=xlSortNormal, _
Orientation:=xlTopToBottom, Header:=xlYes
.AutoFilter field:=1, Criteria1:=0
.Offset(1, 0).Copy Destination:=target
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.