自动筛选条件范围不采用数组

时间:2019-06-29 05:02:07

标签: excel vba

1 。我在一张纸上有数据,想在另一列中过滤条件列表

2 。我也想在单独的WS中使用标准

我在下面包括了2个单独的代码

  1. 同一工作表列表数组的代码

    if (isset($_POST['name'])) {
         $Name = $_POST['name'];
         $sql = "DELETE * FROM database WHERE Name = '$Name'";
    
         if ($conn->query($sql) === TRUE) {
              $message = "Successfully Removed " . $Name;
              echo "<center><span style='color: red; font-size: 20px'><b>$message</b></span></center>";
         } else {
              echo "Error: " . $sql . "<br>" . $conn->error;
         }
         mysqli_close($conn); //connection close
    
     }
    
  2. 其他工作表中的
  3. 列表数组 code details

    Sub FilterTeams()
    
    Dim LastRow As Long
    
    LastRow = Range("A" & Rows.Count).End(xlUp).Row
    
    ActiveSheet.Range("A1:H" & LastRow).AutoFilter Field:=3, Criteria1:="=*" & Range("Q1") & "*"
    
    End Sub
    

它只过滤第一个值,而不是列中的所有值

(它应该过滤包含的所有值)

1 个答案:

答案 0 :(得分:0)

问题: 您正在从array定义Range,这给了您2D array,您不能轻松地将其传递到Autofilter中。所以我们必须将其更改为1D Array

解决方案:将第二个代码更改为此:

Sub Filter()

Dim Criteria As Variant
Dim cri() As String

Criteria = Worksheets("Sheet1").Range("A1:A140")

ReDim Preserve cri(UBound(Criteria))

For I = LBound(Criteria) To UBound(Criteria)

    cri(I) = Criteria(I, 1)

Next

Worksheets("AP").Range("$A$1:$h$100").AutoFilter Field:=1, Criteria1:=cri, Operator:=xlFilterValues

End Sub

替代:您使用的代码是固定代码。有一种动态代码也可能对您有用。选中此Answer