Пишет какой-то Invalid... и указывает на первую фигурную скобку хотя в справке черным по английскому
Цитата
MATCH returns the position of the matched value within lookup_array, not the value itself. For example, MATCH("b",{"a","b","c"},0) returns 2, the relative position of "b" within the array {"a","b","c"}.
Потому что нет обращения к WorksheetFunction, которое происходит более медленно, чем ко встроенной в VBA InStr. На больших массивах эту разницу можно увидеть невооруженным взглядом
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Чуть расширю ответ Алексея. В формулах фигурные скобки означают массив. Т.е. формулу массива когда вводим - фигурные скобки означают, что диапазоны и операции в формулах производятся в массиве. ВПР, ПОИСКПОЗ и еще некоторые - могут в качестве таблиц принимать именно массив. Если мы указываем на диапазон ячеек - то он внутри формулы все равно преобразуется в массив. Но так же можно указать массив явно - заключив его элементы в фигурные скобки. Это будет указатель формуле, что внутри элементы массива, а не просто перечисление.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Sanja написал: не понимаю почему VBA не воспринимает значения в фигурных скобках
Еще раз: это синтаксис исключительно формул. Вы же текст в кавычках не можете прямо так указать из VBA? Надо еще кавычки добавлять. Как бы пояснить: формула понимает, что ей передали массив только тогда, когда он в фигурных скобках. Т.е. внутри она сама преобразует его в Array. VBA же не может напрямую передать массив как текст со скобками, потому что есть специальный объект Array и использовать надо именно его. Вот как Вы передаете в WorksheetFunction.Match диапазон ячеек? Не просто же текст указываете - "A1:A10"? Вы же его через объект Range будете передавать - Range("A1:A10"). Вот так и здесь - надо работать по законам VBA, а не формул. Или уж вписывайте кодом формулу в ячейку, вычисляйте и считывайте значение. Тогда да, можно и скобками указывать...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Нет. Используется семейство WorksheetFunction, члены которого не являются непосредственно функциями листа. Это функции класса, которые принимают аргументы по законам функций, вызываемых из VBA. Вы же не напрямую на лист это записываете.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...