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

Вход

Регистрация

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

 

= Мир MS Excel/макрос, меняющий диапазоны ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос, меняющий диапазоны ячеек (Макросы/Sub)
макрос, меняющий диапазоны ячеек
Isay7 Дата: Четверг, 16.07.2015, 18:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

Буду очень благодарен за помощь. Необходимо сделать макрос, который бы менял значения в некоторых диапазонах ячеек на другие значения, а затем для каждого сценария вытаскивал результирующий показатель.

Чтобы было более понятно прилагаю файл с примером. Надо чтобы значения в строчках 3-6, подменялись значениями в диапазонах, расположены правее. И для каждого сценария (1-6) считался итоговый показатель, который потом вытаскивался на лист в ячейки B14-B19.

Если кто-то знает, каким должен быть макрос, буду очень благодарен за ответ. Спасибо! )
К сообщению приложен файл: 01.xlsx (11.0 Kb)
 
Ответить
СообщениеДобрый день!

Буду очень благодарен за помощь. Необходимо сделать макрос, который бы менял значения в некоторых диапазонах ячеек на другие значения, а затем для каждого сценария вытаскивал результирующий показатель.

Чтобы было более понятно прилагаю файл с примером. Надо чтобы значения в строчках 3-6, подменялись значениями в диапазонах, расположены правее. И для каждого сценария (1-6) считался итоговый показатель, который потом вытаскивался на лист в ячейки B14-B19.

Если кто-то знает, каким должен быть макрос, буду очень благодарен за ответ. Спасибо! )

Автор - Isay7
Дата добавления - 16.07.2015 в 18:17
Pelena Дата: Четверг, 16.07.2015, 18:42 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Необходимо сделать макрос

Формула не устроит?
Код
=СУММПРОИЗВ((N3:U3*X3:AE3*AH3:AO3+AS3:AZ3)*$B$8:$I$8)
К сообщению приложен файл: 1435632.xlsx (11.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Необходимо сделать макрос

Формула не устроит?
Код
=СУММПРОИЗВ((N3:U3*X3:AE3*AH3:AO3+AS3:AZ3)*$B$8:$I$8)

Автор - Pelena
Дата добавления - 16.07.2015 в 18:42
Isay7 Дата: Четверг, 16.07.2015, 18:55 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, что уделили внимание.

Но формула, к сожалению, не подойдет, так как этот пример условный. Взаимосвязь гораздо сложнее с кучей дополнительных факторов (их количество исчисляется тысячами), которые влияют друг на друга, и 1 формулой это невозможно описать. Да и сценариев предполагается не 6, а больше 1000.

Поэтому составил такой простенький примерчик, чтобы понять суть, а потом уже инкорпорировать логику в сложную финансовую модель.
 
Ответить
СообщениеСпасибо, что уделили внимание.

Но формула, к сожалению, не подойдет, так как этот пример условный. Взаимосвязь гораздо сложнее с кучей дополнительных факторов (их количество исчисляется тысячами), которые влияют друг на друга, и 1 формулой это невозможно описать. Да и сценариев предполагается не 6, а больше 1000.

Поэтому составил такой простенький примерчик, чтобы понять суть, а потом уже инкорпорировать логику в сложную финансовую модель.

Автор - Isay7
Дата добавления - 16.07.2015 в 18:55
nilem Дата: Четверг, 16.07.2015, 20:38 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот, например:
[vba]
Код
Sub ertert()
Dim i&
With Range("B2:I2")
     For i = 1 To 6
         .Offset(1).Value = .Offset(i, 12).Value
         .Offset(2).Value = .Offset(i, 22).Value
         .Offset(3).Value = .Offset(i, 32).Value
         .Offset(4).Value = .Offset(i, 42).Value
         Range("B13").Offset(i).Value = WorksheetFunction.Sum(.Offset(7).Value)
     Next i
End With
End Sub
[/vba]
К сообщению приложен файл: _01.xlsm (18.1 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот, например:
[vba]
Код
Sub ertert()
Dim i&
With Range("B2:I2")
     For i = 1 To 6
         .Offset(1).Value = .Offset(i, 12).Value
         .Offset(2).Value = .Offset(i, 22).Value
         .Offset(3).Value = .Offset(i, 32).Value
         .Offset(4).Value = .Offset(i, 42).Value
         Range("B13").Offset(i).Value = WorksheetFunction.Sum(.Offset(7).Value)
     Next i
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 16.07.2015 в 20:38
KSV Дата: Четверг, 16.07.2015, 21:17 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Вот так будет быстро считать:
К сообщению приложен файл: 01.xlsm (18.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеВот так будет быстро считать:

Автор - KSV
Дата добавления - 16.07.2015 в 21:17
sv2014 Дата: Пятница, 17.07.2015, 00:09 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
nilem, доброго времени суток,ваш очень хороший макрос дает одинаковый результат с нижеуказанным макросом,
с уважением ко всем участникам обсуждения.

[vba]
Код
Sub itogs()
      Dim i&, n1&, n2&
      n1 = 14: n2 = 19
   For i = n1 To n2
      i1 = i - 11: i2 = 8
      Range("B" & i).Formula = _
      "=SUMPRODUCT(N" & i1 & ":U" & i1 & "*X" & i1 & ":AE" & i1 & "*AH" & i1 & ":AO" & i1 & "+AS" & i1 & ":AZ" & i1 & ")*$B$" & i2 & ":$I$" & i2 & ""
   Next i
   Range("B" & n1 & ":B" & n2).Value = Range("B" & n1 & ":B" & n2).Value
End Sub
[/vba]
[moder]
макрос дает одинаковый результат с нижеуказанным макросом

И что? Можно еще сотню написать, одинаковые результаты дающих.
К сообщению приложен файл: scenario_1_6.xlsm (18.1 Kb)


Сообщение отредактировал _Boroda_ - Пятница, 17.07.2015, 00:12
 
Ответить
Сообщениеnilem, доброго времени суток,ваш очень хороший макрос дает одинаковый результат с нижеуказанным макросом,
с уважением ко всем участникам обсуждения.

[vba]
Код
Sub itogs()
      Dim i&, n1&, n2&
      n1 = 14: n2 = 19
   For i = n1 To n2
      i1 = i - 11: i2 = 8
      Range("B" & i).Formula = _
      "=SUMPRODUCT(N" & i1 & ":U" & i1 & "*X" & i1 & ":AE" & i1 & "*AH" & i1 & ":AO" & i1 & "+AS" & i1 & ":AZ" & i1 & ")*$B$" & i2 & ":$I$" & i2 & ""
   Next i
   Range("B" & n1 & ":B" & n2).Value = Range("B" & n1 & ":B" & n2).Value
End Sub
[/vba]
[moder]
макрос дает одинаковый результат с нижеуказанным макросом

И что? Можно еще сотню написать, одинаковые результаты дающих.

Автор - sv2014
Дата добавления - 17.07.2015 в 00:09
Isay7 Дата: Пятница, 17.07.2015, 10:55 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем спасибо за попытку помочь. В особенности спасибо nilem, в итоге решил пользоваться его макросом, так как там нету привязки к тому, какой формулой считается итоговое значение, что было важно для меня. Единственное, не подскажите, можно ли как-то сделать так, чтобы изначальный сценарий, которого нету в списке сценариев для перебора, все равно оставался после прогонял макроса?) Понимаю, что данные изначального сценария можно просто дополнительно поставить в качестве последнего сценария, но хотелось бы к этому не прибегать, если можно.
Спасибо!


Сообщение отредактировал Isay7 - Пятница, 17.07.2015, 14:55
 
Ответить
СообщениеВсем спасибо за попытку помочь. В особенности спасибо nilem, в итоге решил пользоваться его макросом, так как там нету привязки к тому, какой формулой считается итоговое значение, что было важно для меня. Единственное, не подскажите, можно ли как-то сделать так, чтобы изначальный сценарий, которого нету в списке сценариев для перебора, все равно оставался после прогонял макроса?) Понимаю, что данные изначального сценария можно просто дополнительно поставить в качестве последнего сценария, но хотелось бы к этому не прибегать, если можно.
Спасибо!

Автор - Isay7
Дата добавления - 17.07.2015 в 10:55
nilem Дата: Пятница, 17.07.2015, 11:04 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Прочитал несколько раз. Непонятно как-то...
Может, примерчик покажете?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеПрочитал несколько раз. Непонятно как-то...
Может, примерчик покажете?

Автор - nilem
Дата добавления - 17.07.2015 в 11:04
KSV Дата: Пятница, 17.07.2015, 11:10 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
так?[vba]
Код
Sub ertert()
     Dim i&, v()
     With Range("B2:I2")
         v = .Resize(7).Formula  ' запоминаем данные сценария, которого нет в списке
         For i = 1 To 6
             .Offset(1).Value = .Offset(i, 12).Value
             .Offset(2).Value = .Offset(i, 22).Value
             .Offset(3).Value = .Offset(i, 32).Value
             .Offset(4).Value = .Offset(i, 42).Value
             Range("B13").Offset(i).Value = Range("B11").Value ' чтоб уж прям совсем уйти от привязки к сценарию (вернее, почти совсем)
         Next
         .Resize(7).Formula = v  ' восстанавливаем данные сценария, которого не было в списке
     End With
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Пятница, 17.07.2015, 11:15
 
Ответить
Сообщениетак?[vba]
Код
Sub ertert()
     Dim i&, v()
     With Range("B2:I2")
         v = .Resize(7).Formula  ' запоминаем данные сценария, которого нет в списке
         For i = 1 To 6
             .Offset(1).Value = .Offset(i, 12).Value
             .Offset(2).Value = .Offset(i, 22).Value
             .Offset(3).Value = .Offset(i, 32).Value
             .Offset(4).Value = .Offset(i, 42).Value
             Range("B13").Offset(i).Value = Range("B11").Value ' чтоб уж прям совсем уйти от привязки к сценарию (вернее, почти совсем)
         Next
         .Resize(7).Formula = v  ' восстанавливаем данные сценария, которого не было в списке
     End With
End Sub
[/vba]

Автор - KSV
Дата добавления - 17.07.2015 в 11:10
Isay7 Дата: Пятница, 17.07.2015, 11:56 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да, то что нужно, спасибо!

Как я понимаю 7 - это количество строк с начала листа, которые запоминаются?
 
Ответить
СообщениеДа, то что нужно, спасибо!

Как я понимаю 7 - это количество строк с начала листа, которые запоминаются?

Автор - Isay7
Дата добавления - 17.07.2015 в 11:56
KSV Дата: Пятница, 17.07.2015, 13:32 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Да, только не с начала ЛИСТА, а с начала диапазона Range("B2:I2").
Т.е., в Вашем случае запоминается диапазон B2:I8


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДа, только не с начала ЛИСТА, а с начала диапазона Range("B2:I2").
Т.е., в Вашем случае запоминается диапазон B2:I8

Автор - KSV
Дата добавления - 17.07.2015 в 13:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос, меняющий диапазоны ячеек (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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