excel - WorksheetFunction.Filter 中的数据类型错误

标签 excel vba worksheet-function

我正在尝试创建一个函数 MonstersInLevel(),它根据第一列的值过滤我的“LevelMonsters”命名范围的第二列。范围的第一列表示游戏关卡 ID,第二列表示出现在该关卡中的怪物 ID。 Here's what my range looks like.
如果我调用 MonstersInLevel(2),我希望该函数返回一个由“2”、“3”和“4”组成的范围。

Function MonstersInLevel(level As Integer) As Range
    MonstersInLevel = Application.WorksheetFunction.Filter(Range("LevelMonsters").Columns(2), Range("LevelMonsters").Columns(1) = level)
End Function
我得到:

A value used in the formula is of the wrong data type


我将 FILTER 函数用作 Excel 公式。我假设 FILTER 标准的 Excel 和 VBA 语法存在一些差异。

最佳答案

我自己刚遇到这个问题,想发布我的解决方法。
我们需要返回 True 的数组/False到工作表功能。为此,我创建了一个函数,该函数采用二维数组、想要的列和要比较的值。然后它返回必要的True 的二维单列数组。/False .

Function myeval(arr() As Variant, clm As Long, vl As Variant) As Variant()
    Dim temp() As Variant
    ReDim temp(1 To UBound(arr, 1), 1 To 1)
    
    Dim i As Long
    For i = 1 To UBound(arr, 1)
        temp(i, 1) = arr(i, clm) = vl
    Next i
    
    myeval = temp
End Function
所以在这种特殊情况下,它将被称为:
Function MonstersInLevel(level As Integer) As Variant
    MonstersInLevel = Application.WorksheetFunction.Filter(Range("LevelMonsters").Columns(2), myeval(Range("LevelMonsters").Value, 1, level),"""")
End Function

关于excel - WorksheetFunction.Filter 中的数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206989/

相关文章:

java - 使用 Apache POI 通过单元格引用字母标识符获取单元格

class - VBA 给出的方法或数据成员未找到我定义的方法

excel - 如何在word中调用工作表函数

excel - 如何指定 Excel 变量范围?

excel - 如何突出显示指定范围内的日期?

excel - 设置范围不适用于内部的 Cells()

C# Excel 互操作合并不起作用

c# npoi excel 如何获取单元格的公式值?

excel - 如何实例化命名的 Excel.Application 对象以允许在意外情况发生后进行宏后垃圾回收

vba - 仅在选定单元格上运行现有宏,而不是在整个工作表上运行