VBA是否存在等价于in运算符的语法?
VBA中类似Python
in/R %in% 的等价实现 VBA本身没有像Python in 或 R %in% 那样的原生运算符,但可以通过以下几种方式实现相同的布尔判断效果:
方法1:利用WorksheetFunction.Match实现自定义函数
借助Excel工作表的Match函数,找不到匹配值时会抛出错误,我们可以捕获这个错误来返回布尔结果:
Function IsIn(value As Variant, arr As Variant) As Boolean On Error Resume Next ' 用Match查找精确匹配,找不到则返回错误 IsIn = Not IsError(WorksheetFunction.Match(value, arr, 0)) On Error GoTo 0 ' 恢复错误处理 End Function
调用示例:IsIn(5, Array(1, 2, 3, 4)) 会返回FALSE,符合需求。
方法2:纯VBA数组遍历实现
如果不想依赖工作表函数,可以直接遍历数组元素进行匹配:
Function IsIn(value As Variant, arr As Variant) As Boolean Dim elem As Variant For Each elem In arr If elem = value Then IsIn = True Exit Function ' 找到匹配后立即退出 End If Next elem IsIn = False ' 遍历完未找到则返回FALSE End Function
同样,调用IsIn(5, Array(1, 2, 3, 4)) 会返回FALSE。
方法3:工作表公式直接使用
如果是在Excel单元格公式中使用,无需写VBA函数,直接组合内置函数即可:
=NOT(ISERROR(MATCH(5, {1,2,3,4}, 0)))
这个公式会直接返回FALSE。
内容的提问来源于stack exchange,提问作者Jindra Lacko
相关产品推荐
相关产品推荐

