Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставить формулу массива через vba - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставить формулу массива через vba
Kongа Дата: Среда, 20.01.2021, 04:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте, подскажите, пожалуйста как перевести формулу массива в vba, чтобы она использовала диапазон со второй до последней заполненной ячейки в столбце С листа1.
Вот формула:
Код
=СУММ(--(ЧАСТОТА(ЕСЛИ(Лист3!C2:C5<>"";ЕСЛИ(Лист3!D2:D5="Мята";ПОИСКПОЗ(Лист3!C2:C5;Лист3!C2:C5;0)));СТРОКА(Лист3!C2:C5)-СТРОКА(Лист3!X2)+1)>0))

Пыталась занести ее через FormulaLocal
[vba]
Код
Лист2.[D3].FormulaLocal = "=СУММ(--(ЧАСТОТА(ЕСЛИ('Лист3'!C2:C" & LastRow & "<>"""";ЕСЛИ('Лист3'!D2:D" & LastRow & "=" & """Мята"";ПОИСКПОЗ('Лист3'!C2:C" & LastRow & ";'Лист3'!C2:C" & LastRow & ";0)));СТРОКА('Лист3'!C2:C" & LastRow & ")-СТРОКА('Лист3'!X2)+1)>0))"
[/vba]
, но так она встает как обычная формула и тогда встает проблема как её заставить сделаться "массивной". Если делаю, через .FormulaArray, то не получается сделать её с LastRow.
К сообщению приложен файл: 1268884.xlsm (16.2 Kb)


Сообщение отредактировал Kongа - Среда, 20.01.2021, 04:47
 
Ответить
СообщениеЗдравствуйте, подскажите, пожалуйста как перевести формулу массива в vba, чтобы она использовала диапазон со второй до последней заполненной ячейки в столбце С листа1.
Вот формула:
Код
=СУММ(--(ЧАСТОТА(ЕСЛИ(Лист3!C2:C5<>"";ЕСЛИ(Лист3!D2:D5="Мята";ПОИСКПОЗ(Лист3!C2:C5;Лист3!C2:C5;0)));СТРОКА(Лист3!C2:C5)-СТРОКА(Лист3!X2)+1)>0))

Пыталась занести ее через FormulaLocal
[vba]
Код
Лист2.[D3].FormulaLocal = "=СУММ(--(ЧАСТОТА(ЕСЛИ('Лист3'!C2:C" & LastRow & "<>"""";ЕСЛИ('Лист3'!D2:D" & LastRow & "=" & """Мята"";ПОИСКПОЗ('Лист3'!C2:C" & LastRow & ";'Лист3'!C2:C" & LastRow & ";0)));СТРОКА('Лист3'!C2:C" & LastRow & ")-СТРОКА('Лист3'!X2)+1)>0))"
[/vba]
, но так она встает как обычная формула и тогда встает проблема как её заставить сделаться "массивной". Если делаю, через .FormulaArray, то не получается сделать её с LastRow.

Автор - Kongа
Дата добавления - 20.01.2021 в 04:14
китин Дата: Среда, 20.01.2021, 08:38 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а если попробовать вместо
[vba]
Код
FormulaLocal =
[/vba]
[vba]
Код
FormulaArray =
[/vba]
поставить?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа если попробовать вместо
[vba]
Код
FormulaLocal =
[/vba]
[vba]
Код
FormulaArray =
[/vba]
поставить?

Автор - китин
Дата добавления - 20.01.2021 в 08:38
skyfors Дата: Среда, 20.01.2021, 09:27 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
    With Worksheets("Лист3")
        LastRow = .Cells(.Rows.Count, 3).End(xlUp).Row
    End With
    
     Лист2.[D3].FormulaLocal = _
        "=СУММ(--(ЧАСТОТА(ЕСЛИ(Лист3!C2:C" & LastRow & "<>"""";ЕСЛИ(Лист3!D2:D" & LastRow & "=" & """Мята""" & ";ПОИСКПОЗ(Лист3!C2:C" & LastRow & ";Лист3!C2:C" & LastRow & ";0)));СТРОКА(Лист3!C2:C" & LastRow & ")-СТРОКА(Лист3!C2" & ")+1)>0))"
     Лист2.[D3].FormulaArray = Лист2.[D3].Formula
[/vba]
 
Ответить
Сообщение[vba]
Код
    With Worksheets("Лист3")
        LastRow = .Cells(.Rows.Count, 3).End(xlUp).Row
    End With
    
     Лист2.[D3].FormulaLocal = _
        "=СУММ(--(ЧАСТОТА(ЕСЛИ(Лист3!C2:C" & LastRow & "<>"""";ЕСЛИ(Лист3!D2:D" & LastRow & "=" & """Мята""" & ";ПОИСКПОЗ(Лист3!C2:C" & LastRow & ";Лист3!C2:C" & LastRow & ";0)));СТРОКА(Лист3!C2:C" & LastRow & ")-СТРОКА(Лист3!C2" & ")+1)>0))"
     Лист2.[D3].FormulaArray = Лист2.[D3].Formula
[/vba]

Автор - skyfors
Дата добавления - 20.01.2021 в 09:27
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!