powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / формула массива в WorksheetFunction
5 сообщений из 5, страница 1 из 1
формула массива в WorksheetFunction
    #36396744
m (MaximuS)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто знает, как можно формулу массива засунуть в код в качестве WorksheetFunction?
Тоесть вот например как написать такую формулу с помощью WorksheetFunction:
=ИЛИ(СОВПАД("F078";AE6:AE11))
Ну или другой пример привиде, пожалуйста, спасибо!

P.S. Интересует именно использование формулы в коде, а не в ячейке.
...
Рейтинг: 0 / 0
формула массива в WorksheetFunction
    #36396769
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берешь и используешь как обычную формулу, ничего особенного не нужно для формул массива или я не понял вопрос?

Еще любую формулу в коде можно вычислить, засунув ее в evaluete("...") , например:
Код: plaintext
debug.print evaluate("OR(EXACT(""F078"",AE6:AE11))")
...
Рейтинг: 0 / 0
формула массива в WorksheetFunction
    #36396872
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
Спасибо большое за evaluete!
Получается ставить скобки {} нужно только на листе?
И, может быть Вы подскажите, почему не работает такое
Код: plaintext
?worksheetfunction.if(max(range("A1:A5"))= 3 , 3 , 0 )
то есть как делать вложеные функции при использовании worksheetfunction?
Но, в любом случае, мне кажется предложенный Вами метод evaluete удобней.
...
Рейтинг: 0 / 0
формула массива в WorksheetFunction
    #36397049
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mСпасибо большое за evaluete!
Пожалуйста. Сам просто обожаю этот метод.

mПолучается ставить скобки {} нужно только на листе?
При использовании функций рабочего листа в коде, если подразумевается массив, то и считается как массив, как и в именах например.
Конкретное указание что формула массива является таковой в ячейке насколько я понимаю связана с тем, что в ячейке можно указывая массив подразумевать не формулу массива, а также адрессацию на позицию в массиве, соотвествующую текущей ячейке, например если написать в ячейке b2 формулу =A1:A4=4, то результатом будет сравнение ячейки a2 и цифры 4 . Возможно есть что-то еще, т.к. это мои домыслы.

m
И, может быть Вы подскажите, почему не работает такое
Код: plaintext
?worksheetfunction.if(max(range("A1:A5"))= 3 , 3 , 0 )
то есть как делать вложеные функции при использовании worksheetfunction?
не работает, потому что не все функции рабочего листа можно использовать в коде.
например if используемый оператор в VBA.
Тем более некоторые функции имеют свои аналоги в VBA, например в VBA есть функция IIF, аналог функции If на рабочем листе.
Чтобы использовать вложенные функции требуется следующая запись
Код: plaintext
1.
?worksheetfunction.Max(worksheetfunction.Max(range("A1:A5")),worksheetfunction.Max(range("b1:b5")))
В итоге, чтобы ваш пример посчитать, нужна запись
Код: plaintext
?  iif(worksheetfunction.Max(range("A1:A5"))= 3 , 3 , 0 )

mНо, в любом случае, мне кажется предложенный Вами метод evaluete удобней.
У каждого способа есть свои плюсы и минусы, нужно смотреть конкретно, например вышеописанная iif(), как и функция рабочего листа if(), вычисляет 2 и 3 параметры несмотря на значение параметра 1(истина или ложь) и потом подставляет нужный. Если эти вычисления громоздкие, то можно экономить время заменив обычным оператором If...Then...Else .
...
Рейтинг: 0 / 0
формула массива в WorksheetFunction
    #36397520
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
Все ясно, спасибо большое за помощь!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / формула массива в WorksheetFunction
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]