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

Вход

Регистрация

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

 

= Мир MS Excel/Выполнение подбора параметра для диапазона - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнение подбора параметра для диапазона (Формулы/Formulas)
Выполнение подбора параметра для диапазона
NiZiM Дата: Среда, 29.08.2018, 16:55 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ребята, есть большой массив данных B7:ANQ35.
Он содержит в себе константы и формулы (в т.ч. обновляющиеся из других таблиц).
При изменении 7-й строки меняется значение 35ой в каждом столбце.
Необходмо выполнять в каждом столбце подбор параметров.
Проблема в том, что когда столбцов было около 100 я прописал макросом поочередное выполнения подбора:
[vba]
Код
Range("B34").Select
Range("B34").GoalSeek Goal:=0.03, ChangingCell:=Range("B7")
...
Range("AM34").Select
Range("AM34").GoalSeek Goal:=0.03, ChangingCell:=Range("AM7")
[/vba]
Но теперь диапазон слишком большой и хоть я и прописал его руками (через автозамену на 30 страниц:), но мне выдало ошибку procedure too large.
Есть же простой выход из ситуации? VB не изучал просто, эксель использую на уровне пользователя.
Помогите плз!:) Спасибо!


Сообщение отредактировал NiZiM - Среда, 29.08.2018, 17:04
 
Ответить
СообщениеРебята, есть большой массив данных B7:ANQ35.
Он содержит в себе константы и формулы (в т.ч. обновляющиеся из других таблиц).
При изменении 7-й строки меняется значение 35ой в каждом столбце.
Необходмо выполнять в каждом столбце подбор параметров.
Проблема в том, что когда столбцов было около 100 я прописал макросом поочередное выполнения подбора:
[vba]
Код
Range("B34").Select
Range("B34").GoalSeek Goal:=0.03, ChangingCell:=Range("B7")
...
Range("AM34").Select
Range("AM34").GoalSeek Goal:=0.03, ChangingCell:=Range("AM7")
[/vba]
Но теперь диапазон слишком большой и хоть я и прописал его руками (через автозамену на 30 страниц:), но мне выдало ошибку procedure too large.
Есть же простой выход из ситуации? VB не изучал просто, эксель использую на уровне пользователя.
Помогите плз!:) Спасибо!

Автор - NiZiM
Дата добавления - 29.08.2018 в 16:55
_Boroda_ Дата: Среда, 29.08.2018, 17:01 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Автор - _Boroda_
Дата добавления - 29.08.2018 в 17:01
NiZiM Дата: Среда, 29.08.2018, 17:07 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, дело в том, что у меня исходный файл 400кб+ и содержит связи с другими файлами. Попробую для примера сделать отдельную таблицу, но обязательно ли это? Так решение не видно? Остальное исправил.
 
Ответить
Сообщение_Boroda_, дело в том, что у меня исходный файл 400кб+ и содержит связи с другими файлами. Попробую для примера сделать отдельную таблицу, но обязательно ли это? Так решение не видно? Остальное исправил.

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

Excel 2016
Скопировал часть своей таблицы. Он во вложении. Оставил десяток столбцов, а их около 1000. Спасибо!
К сообщению приложен файл: 8609275.xlsx (27.8 Kb)
 
Ответить
СообщениеСкопировал часть своей таблицы. Он во вложении. Оставил десяток столбцов, а их около 1000. Спасибо!

Автор - NiZiM
Дата добавления - 29.08.2018 в 17:11
StoTisteg Дата: Среда, 29.08.2018, 17:32 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
NiZiM, для начала уберите все Селекты, они абсолютно не нужны и очень медленны. Потом организуйте всё циклом:[vba]
Код
    Dim i As Integer

    For i=2 To 39
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
[/vba]Может и поможет...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеNiZiM, для начала уберите все Селекты, они абсолютно не нужны и очень медленны. Потом организуйте всё циклом:[vba]
Код
    Dim i As Integer

    For i=2 To 39
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
[/vba]Может и поможет...

Автор - StoTisteg
Дата добавления - 29.08.2018 в 17:32
Pelena Дата: Среда, 29.08.2018, 17:37 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Вариант с автоматическим определением последнего заполненного столбца
[vba]
Код
Public Sub Param()
    Dim lastcol&, i&
    lastcol = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 2 To lastcol
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
End Sub
[/vba]
К сообщению приложен файл: 8609275.xlsm (36.6 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВариант с автоматическим определением последнего заполненного столбца
[vba]
Код
Public Sub Param()
    Dim lastcol&, i&
    lastcol = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 2 To lastcol
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
End Sub
[/vba]

Автор - Pelena
Дата добавления - 29.08.2018 в 17:37
StoTisteg Дата: Среда, 29.08.2018, 17:47 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Pelena, только я бы искал последний заполненный в той строке, с которым реально будем работать...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеPelena, только я бы искал последний заполненный в той строке, с которым реально будем работать...

Автор - StoTisteg
Дата добавления - 29.08.2018 в 17:47
Pelena Дата: Четверг, 30.08.2018, 09:05 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
я бы искал

Дык, кто ж мешает-то ;)


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

Дык, кто ж мешает-то ;)

Автор - Pelena
Дата добавления - 30.08.2018 в 09:05
NiZiM Дата: Четверг, 30.08.2018, 10:45 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ребята, огромное спасибо за помощь! Скачал ВБА для чайников. Буду осваивать:)
А такой еще момент подскажите, плз.
У меня главная таблица с запуском просчета на одном листе, а процедура выполняется на другом. Как мне это отразить в коде?
Сейчас раелизовал это так:
[vba]
Код
Sub newnew()

Dim i As Integer
Sheets("System1").Select
    Range("B7:ANQ7") = "0"
    For i = 2 To 1057
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
Sheets("Main").Select
'
End Sub
[/vba]

Я предположил, что можно сделать, так, но выдает ошибку:
[vba]
Код
Sub newnew()
Dim i As Integer
    Range("System1. B7:ANQ7") = "0"
    For i = 2 To 1057
        Cells("System1. 34, i").GoalSeek Goal:=0.03, ChangingCell:=Cells("System1.7, i")
    Next i
'
End Sub
[/vba]

Спасибо!
 
Ответить
СообщениеРебята, огромное спасибо за помощь! Скачал ВБА для чайников. Буду осваивать:)
А такой еще момент подскажите, плз.
У меня главная таблица с запуском просчета на одном листе, а процедура выполняется на другом. Как мне это отразить в коде?
Сейчас раелизовал это так:
[vba]
Код
Sub newnew()

Dim i As Integer
Sheets("System1").Select
    Range("B7:ANQ7") = "0"
    For i = 2 To 1057
        Cells(34, i).GoalSeek Goal:=0.03, ChangingCell:=Cells(7, i)
    Next i
Sheets("Main").Select
'
End Sub
[/vba]

Я предположил, что можно сделать, так, но выдает ошибку:
[vba]
Код
Sub newnew()
Dim i As Integer
    Range("System1. B7:ANQ7") = "0"
    For i = 2 To 1057
        Cells("System1. 34, i").GoalSeek Goal:=0.03, ChangingCell:=Cells("System1.7, i")
    Next i
'
End Sub
[/vba]

Спасибо!

Автор - NiZiM
Дата добавления - 30.08.2018 в 10:45
_Boroda_ Дата: Четверг, 30.08.2018, 10:56 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Это
Cells("System1.7, i")
пишется так
[vba]
Код
Sheets("System1").Cells(7, i)
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЭто
Cells("System1.7, i")
пишется так
[vba]
Код
Sheets("System1").Cells(7, i)
[/vba]

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

Excel 2016
_Boroda_, спасибо!!!
 
Ответить
Сообщение_Boroda_, спасибо!!!

Автор - NiZiM
Дата добавления - 30.08.2018 в 11:12
StoTisteg Дата: Четверг, 30.08.2018, 12:47 | Сообщение № 12
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
NiZiM, [offtop]а чего у Вас данные так странно организованы? Обычно добавляются строки, а не столбцы — их больше на листе и прокручивать легче.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеNiZiM, [offtop]а чего у Вас данные так странно организованы? Обычно добавляются строки, а не столбцы — их больше на листе и прокручивать легче.

Автор - StoTisteg
Дата добавления - 30.08.2018 в 12:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнение подбора параметра для диапазона (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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