Мне нужно автоматически подобрать параметр в ячейках (P2;P10) (16), изменяя значения параметра в ячейках (J2;J10) (10) соответственно. У меня есть программа-макрос подбора параметра в ячейках (G6;G46) (7) при изменении значения параметра в ячейках (D6;D46) (4) соответственно.
[vba]
Код
Sub recount() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) For Each cell In tbl.Cells cell.Offset(, 6).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 3) Next End Sub
[/vba]
Эта программа рабочая. Я записал эту программу под свои данные:
[vba]
Код
Sub recount() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) For Each cell In tbl.Cells cell.Offset(, 15).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 9) Next End Sub
[/vba]
Но она не желает работать. Debug выделяет область [vba]
[/vba] Неверная ссылка ошибка 1004. Не могу найти ошибку. Саму программу могу представить только в зипованном виде, поскольку она «весит» 258 кб. Но если устроит зипованная, я её выложу.
Мне нужно автоматически подобрать параметр в ячейках (P2;P10) (16), изменяя значения параметра в ячейках (J2;J10) (10) соответственно. У меня есть программа-макрос подбора параметра в ячейках (G6;G46) (7) при изменении значения параметра в ячейках (D6;D46) (4) соответственно.
[vba]
Код
Sub recount() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) For Each cell In tbl.Cells cell.Offset(, 6).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 3) Next End Sub
[/vba]
Эта программа рабочая. Я записал эту программу под свои данные:
[vba]
Код
Sub recount() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) For Each cell In tbl.Cells cell.Offset(, 15).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 9) Next End Sub
[/vba]
Но она не желает работать. Debug выделяет область [vba]
[/vba] Неверная ссылка ошибка 1004. Не могу найти ошибку. Саму программу могу представить только в зипованном виде, поскольку она «весит» 258 кб. Но если устроит зипованная, я её выложу.SBK
Sub recountWatch() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)).Select Stop СтрокоКомпенсатор = -5 For Each cell In tbl.Cells cell.Offset(СтрокоКомпенсатор, 15).GoalSeek Goal:=1, ChangingCell:=cell.Offset(СтрокоКомпенсатор, 9) cell.Offset(СтрокоКомпенсатор, 15).Select Stop cell.Offset(СтрокоКомпенсатор, 9).Select Next End Sub
[/vba]
[vba]
Код
Sub recountWatch() Set tbl = ActiveSheet.[a5].CurrentRegion Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)) Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1)).Select Stop СтрокоКомпенсатор = -5 For Each cell In tbl.Cells cell.Offset(СтрокоКомпенсатор, 15).GoalSeek Goal:=1, ChangingCell:=cell.Offset(СтрокоКомпенсатор, 9) cell.Offset(СтрокоКомпенсатор, 15).Select Stop cell.Offset(СтрокоКомпенсатор, 9).Select Next End Sub
[/vba] т.е. на выполнении самой операции подбора параметров и то же заявление об ошибке. С другой стороны, я одну ошибку у себя нашёл в прежнем макросе. Я использовал числовой формат данных, а оказывается нужно было в общем формате считать Кроме того, я заменил [a5] [a6] на [a1] [a2] соответственно. При этом старая программка посчитала первые 20 строк и остановилась, хотя строки не прерывались. Вручную подбор работает в любой строке. Не подскажете почему это может быть?
InExSu, У меня Ваша программка зависла на той же строке [vba]
[/vba] т.е. на выполнении самой операции подбора параметров и то же заявление об ошибке. С другой стороны, я одну ошибку у себя нашёл в прежнем макросе. Я использовал числовой формат данных, а оказывается нужно было в общем формате считать Кроме того, я заменил [a5] [a6] на [a1] [a2] соответственно. При этом старая программка посчитала первые 20 строк и остановилась, хотя строки не прерывались. Вручную подбор работает в любой строке. Не подскажете почему это может быть?SBK
Сообщение отредактировал SBK - Среда, 20.09.2017, 14:26
Вы знаете, "что" вы хотите вычислить, но не знаете как. Мы знаем "как" вычислить, но не знаем "что" Вы вычисляете, как Вы расставили данные. Ошибка Вам пишет, что кончились данные для GoalSeek.
Вы знаете, "что" вы хотите вычислить, но не знаете как. Мы знаем "как" вычислить, но не знаем "что" Вы вычисляете, как Вы расставили данные. Ошибка Вам пишет, что кончились данные для GoalSeek.InExSu
Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
Сообщение отредактировал InExSu - Среда, 20.09.2017, 15:00
Ошибка Вам пишет, что кончились данные для GoalSeek.
Я добавил пример.rar. Можно ли расширить данные? Таблица расчёта по обеим столбцам сплошная, вручную всё считается. Где может быть "стоп"? Может нужно в исходный файл добавить нижнюю строку расчёта? Как это сделать грамотно?
Ошибка Вам пишет, что кончились данные для GoalSeek.
Я добавил пример.rar. Можно ли расширить данные? Таблица расчёта по обеим столбцам сплошная, вручную всё считается. Где может быть "стоп"? Может нужно в исходный файл добавить нижнюю строку расчёта? Как это сделать грамотно?SBK
Сообщение отредактировал SBK - Среда, 20.09.2017, 15:06
Sub recount() Set tbl = ActiveSheet.[e2].CurrentRegion Set tbl = tbl.Columns(1).Offset(1).Resize(tbl.Rows.Count - 1) For Each cell In tbl.Cells cell.Offset(, 11).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 5) Next End Sub
[/vba]
Может, так [vba]
Код
Sub recount() Set tbl = ActiveSheet.[e2].CurrentRegion Set tbl = tbl.Columns(1).Offset(1).Resize(tbl.Rows.Count - 1) For Each cell In tbl.Cells cell.Offset(, 11).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 5) Next End Sub
Pelena, А Вы знаете? Работает. Получается, что ошибка моя была в том, что в квадратных скобках нужно задавать начало массива, а не столбец а, как стандарт. Правильно я понял?
Pelena, А Вы знаете? Работает. Получается, что ошибка моя была в том, что в квадратных скобках нужно задавать начало массива, а не столбец а, как стандарт. Правильно я понял?SBK
CurrentRegion - это текущая область. Её можно увидеть, встав в ячейку и нажав Ctrl+* (звёздочка справа на цифровой клавиатуре). Попробуйте проделать это, встав в A5 или в E2, почувствуйте разницу
CurrentRegion - это текущая область. Её можно увидеть, встав в ячейку и нажав Ctrl+* (звёздочка справа на цифровой клавиатуре). Попробуйте проделать это, встав в A5 или в E2, почувствуйте разницу Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Здравствуйте! Подскажите, а возможно ли задать для подбора не фиксированное значение (как в примере - 1), а разные расположенные например напротив ячейки подбора. Установить в ячейке O7 значение равное S7 Изменяя значение ячейки L7 И так по всем строкам.
Здравствуйте! Подскажите, а возможно ли задать для подбора не фиксированное значение (как в примере - 1), а разные расположенные например напротив ячейки подбора. Установить в ячейке O7 значение равное S7 Изменяя значение ячейки L7 И так по всем строкам.
Образец прикрепил в файле. Заранее спасибо!rusmir76
ячейка L7 никак не влияет на O7 Если взять, к примеру, M7, то как-то так [vba]
Код
Sub recount() lrow = Cells(Rows.Count, "O").End(xlUp).Row For Each cell In Range("O7:O" & lrow) If cell <> "" Then cell.GoalSeek Goal:=cell.Offset(, 4), ChangingCell:=cell.Offset(, -2) Next End Sub
ячейка L7 никак не влияет на O7 Если взять, к примеру, M7, то как-то так [vba]
Код
Sub recount() lrow = Cells(Rows.Count, "O").End(xlUp).Row For Each cell In Range("O7:O" & lrow) If cell <> "" Then cell.GoalSeek Goal:=cell.Offset(, 4), ChangingCell:=cell.Offset(, -2) Next End Sub