powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подбор параметра для диапазона в соответствии со значением ячейки
8 сообщений из 8, страница 1 из 1
Подбор параметра для диапазона в соответствии со значением ячейки
    #38563453
nikko_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, плз, как решить следующую задачу.

Если значение в ячейке из диапазона <= "0", то подбор параметра, изменяя соответствующую ячейку в одном диапазоне. Если больше нуля, то подбор параметра с изменением другой соответствующей ячейки. (если денежный поток меньше нуля, то беру кредит, если больше нуля, то возвращаю. получение кредита и возвращение - 2 разные строки соответственно).
Нужно чтобы макрос циклично прошелся по каждому году и подобрал такие параметры, чтобы у меня денег на балансе осталось 1000 (как раз сам подбор параметра).

Для одной ячейки написал (работает):
Sub Кредит()

If Range("O83") <= 0 Then
Range("O105").GoalSeek Goal:=1000, ChangingCell:=Range("O100")
Else: Range("O105").GoalSeek Goal:=1000, ChangingCell:=Range("O101")
End If

End Sub

Соответственно, вопрос - как мне это дело зациклить в рамках диапазонов? Столбец О - первый в диапазоне. нужно до AN. Экспериментировал долго, но ничего не вышло.

Заранее спасибо.
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38563798
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikko_shar,

Простейший пример.
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564049
nikko_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iMrTidy, спасибо за отклик.

Посмотрел ваш макрос - спасибо.
Теперь осталось срастить ваше творение и мое.
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564081
nikko_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iMrTidy, в общем, ваш макрос не помог.
Пример слишком простой.
Сослаться на один диапазон для выполнения одной функции для каждой ячейки - это действительно просто.
Но вот сослаться на диапазон, и выполнить действие для ячеек соответствующего диапазона непонятно как.
Попробовал ссылаться на заведенные диапазоны, но ссылка неправильная. Попытку описываю ниже:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Sub Кредит()

Dim wb As Workbook
Dim sh As Worksheet
Set wb = ThisWorkbook
Set sh = wb.Worksheets("Кредит")

Dim CF As Range, Cash As Range
    Set CF = sh.Range("O83:AN83")
    Set Cash = sh.Range("O105:AN105")

Dim GetCredit As Range, ReturnCredit As Range

    Set GetCredit = sh.Range("O100:AN100")
    Set ReturnCredit = sh.Range("O101:AN101")

For Each cell In CF
    If cell.Value <= 0 Then
    Cash.GoalSeek Goal:=1000, ChangingCell:=GetCredit
    Else: Cash.GoalSeek Goal:=1000, ChangingCell:=ReturnCredit
    End If
Next
    

End Sub



Модератор: Учимся использовать тэги оформления кода - FAQ

В чем ошибка? Как правильно сослаться в GoalSeek на ячейки в диапазоне, соответствующем диапазону с условием?

Заранее спасибо.
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564774
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Свойство cells есть не только у листа, но и у диапазона. Если диапазон состоит из одной строки или одного столбца, можно брать ячейки по одному индексу
Код: vbnet
1.
2.
3.
4.
5.
6.
For i = 1 To CF.Count
    If CF.Cells(i).Value <= 0 Then
    Cash.Cells(i).GoalSeek Goal:=1000, ChangingCell:=GetCredit.Cells(i)
    Else: Cash.Cells(i).GoalSeek Goal:=1000, ChangingCell:=ReturnCredit.Cells(i)
    End If
Next
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564784
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Свойство cells является свойством диапазона по умолчанию, поэтому можно использовать короткую запись rng(i), но для этого переменная должна быть определена as Range, как у Вас. Итого
Код: vbnet
1.
2.
3.
For i = 1 To CF.Count
    Cash(i).GoalSeek Goal:=1000, ChangingCell:=IIf(CF(i).Value <= 0, GetCredit(i), ReturnCredit(i))
Next
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564817
nikko_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,

Огромнейшее спасибо!
Сейчас попробую осознать все и воспользоваться.
Не могли бы еще объяснить, как работает функция IIf?

Заранее спасибо.
...
Рейтинг: 0 / 0
Подбор параметра для диапазона в соответствии со значением ячейки
    #38564959
nikko_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,

Во все вник, все понял, получилось!!! СПАСИБО ОГРОМНОЕ!
П.с. До этого еще и с абсолютными формулами сделал.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подбор параметра для диапазона в соответствии со значением ячейки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]