Я пытался сохранить комбинацию функций рабочего листа как UDF, потому что я склонен забывать, как именно это происходит.Я использую эту комбинацию для сравнения списков:
=IF(ISNA(MATCH([value], [range], [match_type])),False,True)
Но в моей попытке исправить простой двухстрочный макрос a возникла небольшая проблема.Кажется, что код VBA, который я написал, чтобы имитировать комбо рабочего листа, вернет истину просто отлично, но не ложь.Вместо этого для значения, не входящего в данный диапазон, возвращается # значение!ошибка.Насколько я понимаю, это операция с несоответствием типов данных, но я не понимаю, почему.
В качестве примечания, IF в приведенном выше комбинированном листе используется для обратного вывода из функции ISNA.Это немного сбивает с толку, если ваш поиск возвращает ложь для положительного результата.
Спасибо за вашу помощь, если у вас есть что-то лучше, дайте мне знать.Вот мой код.
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
** Для тех из вас, кто просит ввод, это может быть что угодно.Я обычно использую это, чтобы сравнить идентификационные номера для сотен вещей.Иногда они содержат буквы и цифры.
Примером может быть попытка найти число 3 в списке 1,2,3,4,5,6,7,8, где 3 находится на одном листе, и списокнаходится на другом.