gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:21:12 37 4
gpt4 key购买 nike

我正在尝试创建一个函数 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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com