如何检查范围内的空单元格是否为空然后检入selectVBA?

我有下面的代码,将通过用户selection过滤表。

  1. 我想首先检查range A3:T3如果他们有值,如果他们做我会join我的arrays,并开始过滤,并忽略Range A3:T3所有空单元格。

  2. 如果范围A3:T3为空,则按用户selection进行过滤。

  3. 我注意到有一个错误,如果我过滤一个单元格,该单元格有2行数据1将显示和1不是因为它前面有一个空间,我认为它有一个ChrW有任何方法来使filter部分匹配包括两个版本? 我知道我可以replaceChrW并将其replace,但是数据总是会从Outlook粘贴,所以发生的频率ChrW ,所以如果我能部分匹配,可能会解决很多问题。

任何帮助将非常感激。

 Sub advancedMultipleCriteriaFilter() Dim cellRng As Range, tableObject As Range, subSelection As Range Dim filterCriteria() As String, filterFields() As Integer Dim i As Integer Application.ScreenUpdating = False 'Call removeSpace If Selection.Rows.Count > 1 Then MsgBox "Cannot apply filter to multiple rows within the same column. Please make another selection and try again.", vbInformation, "Selection Error!" Exit Sub End If i = 1 ReDim filterCriteria(1 To Selection.Cells.Count) As String ReDim filterFields(1 To Selection.Cells.Count) As Integer Set tableObject = Selection.CurrentRegion For Each subSelection In Selection.Areas For Each cellRng In subSelection filterCriteria(i) = cellRng.Text filterFields(i) = cellRng.Column - tableObject.Cells(1, 1).Column + 1 i = i + 1 Next cellRng Next subSelection With tableObject For i = 1 To UBound(filterCriteria) .AutoFilter field:=filterFields(i), Criteria1:=filterCriteria(i) Next i End With Call GetLastRow Set tableObject = Nothing Application.ScreenUpdating = True End Sub Sub resetFilters() Dim sht As Worksheet Dim LastRow As Range Application.ScreenUpdating = False On Error Resume Next If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If Range("A3:T3").ClearContents Application.ScreenUpdating = True Call GetLastRow End Sub Private Sub GetLastRow() 'Step 1: Declare Your Variables. Dim LastRow As Long 'Step 2: Capture the last used row number. LastRow = Cells(Rows.Count, 8).End(xlUp).Row 'Step 3: Select the next row down Cells(LastRow, 8).Offset(1, 0).Select End Sub 

如果您想要在单个字段中过滤多个标准,则需要如下所示的数组:

 .AutoFilter Field:=1, Criteria1:=Array("val 2", "val 3", "val 4"), Operator:=xlFilterValues 

所以filterCriteria(i)必须是一个数组,你可以这样做,如下所示:

 filterCriteria(i) = Array("item1","item2") .AutoFilter Field:=filterFields(i), Criteria1:=filterCriteria(i), Operator:=xlFilterValues