Excel vba自动筛选并将结果复制到另一个工作表:我可以';不要复制正确的范围
我有一个代码,用于过滤工作表ANAF CONTURI中的信息(第G3列上的标准,向下至G10000),并将结果(从A3:F3开始向下)复制到工作表ANAF BANCI中,从C2:H2开始向下 问题是:如果我没有在A3中的工作表ANAF CONTURI中输入任何信息,它将不会从该行复制任何内容(即使条件是匹配的,并且该行的其余单元格直到F3都有数据) 如果它在单元格B3上这样做就可以了,因为如果我没有关于单元格B3的数据,行的其余部分是不相关的,但它只考虑单元格A3 解决办法是什么Excel vba自动筛选并将结果复制到另一个工作表:我可以';不要复制正确的范围,excel,vba,Excel,Vba,我有一个代码,用于过滤工作表ANAF CONTURI中的信息(第G3列上的标准,向下至G10000),并将结果(从A3:F3开始向下)复制到工作表ANAF BANCI中,从C2:H2开始向下 问题是:如果我没有在A3中的工作表ANAF CONTURI中输入任何信息,它将不会从该行复制任何内容(即使条件是匹配的,并且该行的其余单元格直到F3都有数据) 如果它在单元格B3上这样做就可以了,因为如果我没有关于单元格B3的数据,行的其余部分是不相关的,但它只考虑单元格A3 解决办法是什么 Private
Private Sub CommandButton1_Click()
' TRIAZA INFORMATIA INTRODUSA SI O INAINTEAZA SPRE PRELUCRARE IN ANAF BANCI
Application.ScreenUpdating = False
Sheet8.Unprotect Password:="online07"
Sheets("ANAF BANCI").Range("C2:H1000").ClearContents
With Sheets("ANAF CONTURI") '<--| reference your sheet
With .Range("G2", .Cells(.Rows.Count, 1).End(xlUp)) '<--| reference its column "A:G" range from row 1 down to column "A" last not empty row
.AutoFilter Field:=7, Criteria1:="Da" ''<--| filter referenced range on its 7th column (i.e. column "G") with "Da" values
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1, 6).Offset(1).SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("ANAF BANCI").Range("C2")
End With
If (Sheets("ANAF CONTURI").AutoFilterMode And Sheets("ANAF CONTURI").FilterMode) Or Sheets("ANAF CONTURI").FilterMode Then
Sheets("ANAF CONTURI").ShowAllData
End If
End With
Sheet8.Range("A3:F20000").Locked = False
Sheet8.Protect Password:="online07"
' SortareAlaZ Macro
ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort.SortFields. _
Add Key:=Range("O3:O16571"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
End Sub
Private子命令按钮1\u单击()
“在ANAF BANCI中,三合一信息介绍是一项初步研究
Application.ScreenUpdating=False
Sheet8.取消密码保护:=“online07”
纸张(“ANAF BANCI”)。范围(“C2:H1000”)。清晰目录
对于工作表(“ANAF CONTURI”)”我找到了另一种工作方式,并且做了同样的事情:
Dim src As Worksheet
Dim tgt As Worksheet
Dim filterRange As range
Dim copyRange As range
Dim lastRow As Long
Set src = ThisWorkbook.Sheets("ANAF CONTURI")
Set tgt = ThisWorkbook.Sheets("ANAF BANCI")
' turn off any autofilters that are already set
src.AutoFilterMode = False
' find the last row with data in column A
lastRow = src.range("B" & src.Rows.Count).End(xlUp).Row
' the range that we are auto-filtering (all columns)
Set filterRange = src.range("A2:G" & lastRow)
' the range we want to copy (only columns we want to copy)
' in this case we are copying country from column A
' we set the range to start in row 2 to prevent copying the header
Set copyRange = src.range("A3:F" & lastRow)
' filter range based on column B
filterRange.AutoFilter Field:=7, Criteria1:="Da"
' copy the visible cells to our target range
' note that you can easily find the last populated row on this sheet
' if you don't want to over-write your previous results
copyRange.SpecialCells(xlCellTypeVisible).Copy tgt.range("C2")
If (Sheets("ANAF CONTURI").AutoFilterMode And Sheets("ANAF CONTURI").FilterMode) Or Sheets("ANAF CONTURI").FilterMode Then
Sheets("ANAF CONTURI").ShowAllData
End If
你写了“如果我没有在A3的工作表ANAF CONTURI中输入任何信息”:你的意思是A列是空的吗?是的。我最后用了另一种方法来做同样的事情,因为我找不到解决办法:)哪个列实际上总是设置数据“长度”?我是vba的新手(一周前),但我认为这是缺少的,可能默认情况下以A列为参考?大学教师;不知道..在OP的代码范围(“G2”中,.Cells(.Rows.Count,1).End(xlUp))
语句将列“A”(即,列索引1
)作为参考,以获取最后一个未使用的单元格。如果您知道“数据库”长度总是由“B”列数据决定的,那么只需将该语句更改为.Range(“G2”、.Cells(.Rows.Count,2).End(xlUp))