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

Вход

Регистрация

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

 

= Мир MS Excel/VBA_Вставить формулу массива в диапазон - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA_Вставить формулу массива в диапазон (Макросы/Sub)
VBA_Вставить формулу массива в диапазон
sgkorolew Дата: Четверг, 30.11.2017, 12:44 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Подскажите, пожалуйста, как вставить формулу массива в диапазон посредством VBA.
Вставить формулу массива в одну ячейку, а потом копировать в другие ячейки?
Пример во вложении.
К сообщению приложен файл: 1765641.xlsm (15.0 Kb)
 
Ответить
СообщениеДобрый день!
Подскажите, пожалуйста, как вставить формулу массива в диапазон посредством VBA.
Вставить формулу массива в одну ячейку, а потом копировать в другие ячейки?
Пример во вложении.

Автор - sgkorolew
Дата добавления - 30.11.2017 в 12:44
buchlotnik Дата: Четверг, 30.11.2017, 12:56 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Я бы переписал на немассивный вариант
Код
=СУММПРОИЗВ(($B$4:$B$9=B22)*($C$4:$C$9=C22)*($D$4:$D$9=D22)*$E$4:$E$9)
и его уже вводил: [vba]
Код
Sub Макро()
Range("F22:F23").FormulaR1C1 = _
        "=SUMPRODUCT((R4C2:R9C2=RC[-4])*(R4C3:R9C3=RC[-3])*(R4C4:R9C4=RC[-2])*R4C5:R9C5)"
End Sub
[/vba] ну а если исходную формулу массива сохранять, то можно в цикле:[vba]
Код
Sub Макро1()
    For Each cel In Range("F22:F23")
        cel.FormulaArray = "=SUM(IF((R4C2:R9C2=RC[-4])*(R4C3:R9C3=RC[-3])*(R4C4:R9C4=RC[-2]),1)*R4C5:R9C5)"
    Next
End Sub
[/vba]
К сообщению приложен файл: 9993303.xlsm (15.4 Kb)


Сообщение отредактировал buchlotnik - Четверг, 30.11.2017, 13:16
 
Ответить
СообщениеЯ бы переписал на немассивный вариант
Код
=СУММПРОИЗВ(($B$4:$B$9=B22)*($C$4:$C$9=C22)*($D$4:$D$9=D22)*$E$4:$E$9)
и его уже вводил: [vba]
Код
Sub Макро()
Range("F22:F23").FormulaR1C1 = _
        "=SUMPRODUCT((R4C2:R9C2=RC[-4])*(R4C3:R9C3=RC[-3])*(R4C4:R9C4=RC[-2])*R4C5:R9C5)"
End Sub
[/vba] ну а если исходную формулу массива сохранять, то можно в цикле:[vba]
Код
Sub Макро1()
    For Each cel In Range("F22:F23")
        cel.FormulaArray = "=SUM(IF((R4C2:R9C2=RC[-4])*(R4C3:R9C3=RC[-3])*(R4C4:R9C4=RC[-2]),1)*R4C5:R9C5)"
    Next
End Sub
[/vba]

Автор - buchlotnik
Дата добавления - 30.11.2017 в 12:56
sgkorolew Дата: Четверг, 30.11.2017, 13:33 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
buchlotnik, спасибо за ответ!
 
Ответить
Сообщениеbuchlotnik, спасибо за ответ!

Автор - sgkorolew
Дата добавления - 30.11.2017 в 13:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA_Вставить формулу массива в диапазон (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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