Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подбор параметра для диапазона в соответствии со значением ячейки / 8 сообщений из 8, страница 1 из 1
17.02.2014, 17:47
    #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
18.02.2014, 01:49
    #38563798
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор параметра для диапазона в соответствии со значением ячейки
nikko_shar,

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

Посмотрел ваш макрос - спасибо.
Теперь осталось срастить ваше творение и мое.
...
Рейтинг: 0 / 0
18.02.2014, 11:01
    #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
18.02.2014, 15:58
    #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
18.02.2014, 16:03
    #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
18.02.2014, 16:29
    #38564817
nikko_shar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор параметра для диапазона в соответствии со значением ячейки
Казанский,

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

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

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


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