我有这张表,我应用了一系列潜艇来获得我想要的东西。最后一个是高级过滤器。
您可以看到我的主要表格如下:
我的标准是 C31:K32 ,结果应该从第38行粘贴。它从该表中获取名为 AUX 的信息:
Sub FiltroAloc()
Dim i As Long
Dim j As Long
Dim Lastrow As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim res
Set ws1 = Sheets("CONSULTA")
Set ws2 = Sheets("BASE_TOTAL_ATUAL")
Set ws3 = Sheets("AUX")
For i = 1 To 100
For j = 1 To 11
If ((ws1.Cells(29, 5).Value < ws2.Cells(i, 7).Value) And (ws1.Cells(29, 6).Value > ws2.Cells(i, 7).Value)) Or ((ws1.Cells(29, 5).Value < ws2.Cells(i, 8).Value) And (ws1.Cells(29, 6).Value > ws2.Cells(i, 8).Value)) Then
ws3.Cells(i, j) = ws2.Cells(i, j).Value
ElseIf (ws1.Cells(29, 5) = "") And (ws1.Cells(29, 6) = "") Then
ws3.Cells(i, j) = ws2.Cells(i, j).Value
End If
Next j
Next i
Call Esvaziar
End Sub
Sub Esvaziar()
Dim r As Range, rows As Long, i As Long
Dim ws As Worksheet
Set ws = Sheets("AUX")
Set r = ws.Range("A1:K450")
rows = r.rows.Count
For i = rows To 1 Step (-1)
If WorksheetFunction.CountA(r.rows(i)) = 0 Then
r.rows(i).Delete
End If
Next
Call AutoFilter
End Sub
我的所有代码都运行正常!之后,我开始将高级过滤器记录为具有AutoFilter名称的宏。
当我完成记录时,它工作正常并加载所有信息,因为我在我的标准中没有记录任何信息。
问题是当我向“Filtrar”按钮发出警告时。它给了我
运行时错误'1004' - 对象'_Global'的方法'范围'失败
这就是代码:
Sub AutoFilter()
'
' AutoFilter Macro
'
'
Sheets("AUX").Range("A1:K176").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:="CONSULTA!Criteria", CopyToRange:=Range("CONSULTA!Extract") _
, Unique:=False
ActiveWindow.SmallScroll Down:=-21
Range("G3").Select
End Sub
突出显示的部分:
Sheets("AUX").Range("A1:K176").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:="CONSULTA!Criteria", CopyToRange:=Range("CONSULTA!Extract") _
, Unique:=False
我尝试了很多东西,但我想我错过了一些东西。我不知道在哪里可以找到我的范围问题......任何建议都将受到赞赏。
答案 0 :(得分:2)
使用CriteriaRange:=worksheets("CONSULTA").Range("Criteria")
和CopyToRange:=worksheets("CONSULTA").Range("Extract")
Sheets("AUX").Range("A1:K176").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=worksheets("CONSULTA").Range("Criteria"), _
CopyToRange:=worksheets("CONSULTA").Range("Extract"), Unique:=False