问题描述
我一直在到处找解决这个VBA自动筛选的问题,任何想法都是AP preciated:
我有一个命名范围FslList的自动筛选标准的静态列表 - 我已经转换成一个阵列渔政船在数据工作表自动筛选列14:
暗淡FSLArray为Variant
昏暗rngFSL由于范围
设置rngFSL = RawData.Worksheets(1).Range(FslList)
FSLArray = rngFSL.Value 与NewBook.Worksheets(1)
.Cells.AutoFilter现场:= 14,标准1:= Application.Transpose(FSLArray),操作员:= xlFilterValues
在我过滤掉从数组中的值 - 我需要删除它们。
随着.AutoFilter.Range
设置DeleteRange = .Offset(1,0).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
结束与 DeleteRange.EntireRow.Delete
NewBook.Worksheets(1).AutoFilterMode =假
结束与
我的问题是我的数据的列表被永诺变化的,而不是从FSLArray所有值都在列被过滤。因此,自动筛选停止,一旦它遇到的标准是不在名单上 - 并且不包括任何下列条件时,过滤
我想这样做是自动筛选,继续筛选使用其他阵列的标准,如果一个或多个数组中的元素,没有发现当中要过滤的数据。
编辑:我从号码更改的数据在我的数组(它是)字母 - 它正常工作与现在的字母
我曾尝试重新写code和定义一个名为范围的建议:
元素我有数组(范围C11:C14)是:
加
9158
11958(这个人是不是在数据列表present)
15938
15940
命名范围PODCustList的定义如下:
= OFFSET(ACC,1,0,COUNTA($设置C:!$ C)-1,1)
在code是相同的:
暗淡PODCustArray为Variant
昏暗rngPODCust由于范围
设置rngPODCust = RawData.Worksheets(1).Range(PODCustList)
PODCustArray = rngPODCust.Value随着工作表(1)
.Cells.AutoFilter现场:= 7,标准1:= Application.Transpose(PODCustArray),操作员:= xlFilterValues
我所得到的中筛选之后所得的回报是9158的元素在其中过滤。
仅行 解决:我需要通过它来运行我的数组 - 标准1:=斯普利特(加入(Application.Transpose(PODCustArray)))
为自动筛选正确间preT的数据中作为一个字符串数组。
我能适应我的code,或者我需要使用不同的方法?
感谢你在前进,
It depends on how have you defined your Range("FslList")
See this example
I have a workbook which has Sheet1
and Sheet5
. Sheet1
has the list and Sheet5
has the data which needs to be filtered. The workbook can be downloaded from HERE
Now select A1
in Sheet1
and give it a name, say, Criterias
. Next create a name called FslList
in the Name Manager and set the formula as =OFFSET(Criterias,1,0,COUNTA(Sheet1!$A:$A)-1,1)
Now run this code
Option Explicit
Sub Sample()
Dim FslList As Variant
Dim ws1 As Worksheet, ws2 As Worksheet
Dim rngCritList As Range, rngSh5 As Range
Set ws1 = Worksheets("Sheet5")
Set ws2 = Worksheets("Sheet1")
Set rngSh5 = ws1.Range("$A$1").CurrentRegion
Set rngCritList = ws2.Range("FslList")
FslList = rngCritList.Value
rngSh5.AutoFilter Field:=1, _
Criteria1:=Application.Transpose(FslList), _
Operator:=xlFilterValues
End Sub
You will see that the list gets filtered even when eee
is there in the criteria list but not in the list that needs to be filtered.
This is how the Sheet5
gets filtered after you run the macro
这篇关于使用VBA自动筛选数组 - 无视标准,如果它不是在过滤列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!