【发布时间】:2011-11-17 12:42:27
【问题描述】:
我试图将工作表函数的组合保存为 UDF,因为我往往会忘记它是如何进行的。我使用这个组合来比较列表:
=IF(ISNA(MATCH([value], [range], [match_type])),False,True)
但是在我尝试纠正一个简单的两行宏时遇到了一点问题。似乎我为模仿工作表组合而编写的 VBA 代码将返回 true 但不会返回 false。相反,对于不在给定范围内的值,它返回#value!错误。据我了解,这是对数据类型不匹配的操作,但我不明白为什么。
作为旁注,上述工作表组合中的 IF 用于反转 ISNA 函数的输出。如果您的搜索返回 false 以获得肯定结果,这有点令人困惑。
感谢您的帮助,如果您有更好的建议,请告诉我。这是我的代码。
Public Function CompareLists(variable As Variant, list As Range, match_type As String) As Boolean
If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.Match(variable, list, match_type)) = False Then
CompareLists = True
Else
CompareLists = False
End If
End Function
** 对于那些要求输入的人来说,它可以是任何东西。我通常用它来比较数百个东西的 ID 号。它们有时包含字母和数字。
例如,尝试在列表 1、2、3、4、5、6、7、8 中查找数字 3,其中 3 在一张纸上,而列表在另一张纸上。
【问题讨论】:
-
数据输入的例子是什么,比如variable=????,list例子,match_type例子?
-
我们所说的示例是指提供示例输入、用于函数的示例参数以及这些输入的预期和实际输出的测试用例或演练。