【问题标题】:implementation of excel function 'filter' in vba在vba中实现excel函数“过滤器”
【发布时间】:2021-11-11 15:16:12
【问题描述】:

我在 excel 中有过滤功能,它在 excel 电子表格中运行良好。我在单元格 G7 中编写了这个函数。以下是功能。 Click here for reference image

=FILTER(A3:C19,ISNUMBER(SEARCH("nut",B3:B19)),"Not found")

我需要在 VBA 中实现它。所以我在vba中写了以下代码:

Sheets("Sheet1").Range("G7").Value = Filter(Sheets("Sheet1").Range("A3:C19"), WorksheetFunction.IsNumber(WorksheetFunction.Search("nut", Sheets("Sheet1").Range("B3:B19"))), "Not found")

但是,这给了我错误“运行时错误 13:类型不匹配”。我的错误是什么?需要专家建议。

谢谢..

【问题讨论】:

  • VBA Filter函数和Excel FILTER函数是两个完全不同的函数。

标签: excel vba excel-formula


【解决方案1】:

您应该使用Application.Filter 而不是FilterFilter 是一个 VBA 函数,您应该将结果返回给一个变体变量。

Dim Res As Variant

    With Application
        Res = .Filter(Sheets("Sheet1").Range("A3:C19"), .IsNumber(.Search("nut", Sheets("Sheet1").Range("B3:B19"))), "Not found")
    End With
    
    If Not IsError(Res) Then
        Sheets("Sheet1").Range("G7").Resize(UBound(Res, 1), 3).Value = Res
    End If
    

【讨论】:

  • 非常感谢......它按预期工作
  • 它有效,但是当我在搜索函数中输入“asdf”而不是“nut”(即搜索数组中不存在的值)时,它返回“类型不匹配”错误而不是“未找到”
猜你喜欢
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 2012-05-14
  • 2021-12-19
相关资源
最近更新 更多