Добрый день, уважаемые форумчане. В приложенном файлике в столбце H у меня вышла формула, которая практически полностью делает все что нужно =ЕСЛИ(D5>=3;0;ЕСЛИ(ЕСЛИ(E5-D5>0;E5-D5;0)>=3;3;ЕСЛИ(E5-D5>0;E5-D5;0))) - эта формула в ячейке H5
но нужно добавить в нее еще проверку Если сумма D5+H5>3 и Если H5>0 то уменьшаем значение в H5-1 до тех пор пока D5+H5<=3 или H5=0
проблема в том, что эксель отказывается ссылаться на ту ячейку в которой прописана первая формула (в H5) (( это тупик... помогите дополнить формулу или прописать макрос. Макросом конечно, предпочтительней, логику прописал. Ну вот с синтаксисом языка проблемы... Было бы супер еще перевести Если сумма D5+H5>3 и Если H5>0 то уменьшаем значение в H5-1 до тех пор пока D5+H5<=3 или H5=0 на VBA. Спасибо, очень надеюсь на Вашу помощь.
GH5 - это ячейка "GH5", но я предполагаю, что Вы имели ввиду что-то другое. Может быть Вы имели ввиду: уменьшать до тех пор, пока в G5 или H5 не станет ноль, или что-то еще в этом же духе?
Прошу прощения, изначально хотел значения в G5, а потом формулу в H5 в итоге "недоредактировал"
Цитата
Karataev написал: пока в G5 или H5 не станет ноль, или что-то еще в этом же духе?
Нужно что бы сумма D5 и H5 - не превышала 3. Если же превышает то уменьшать значение именно в H5 пока не выполнится условие сумма D5+H5 меньше или равно 3. При этом если вовремя уменьшения значения H5 дойдет до значения 0. То H5 = 0 и переходим к следующей ячейке H6 ... и так до конца таблицы. В моём примере красным выделил те ячейки, где сумма D5+H5 > 3.... Для того что бы сделать доп проверки, нужно ссылаться на результат уже в H5, но эксель при этом ругается ((
Вы неточно пишите - в H5 нет суммы D5+H5. В H5 есть расчет, который делается Вашей формулой. Поэтому перефразируйте пост 5, иначе возникает непонимание.
В H5 уже прописана формула которая выдает результат вычислений.......... далеее нужно проверить Получив результат расчета D5+H5, мы имеем результат в виде числа дальше проверяем этот результат на соответсвие условию если результат вычислений D5+H5 от 0 до 3 значит его вписываем в ячейку H5 если результат вычислений D5+H5 больше 3 значит уменьшаем значение (результат вычислений формулы в H5 - 1 ), делаем это до тех пор пока не удалетворится условие сумма значений в D5 и H5 от 0 до 3. Но если до уменьшаем значение в H5 до 0, значит просто к H5 присваем значение 0 и переходим к следующей строке
Zanzara, еще раз повторюсь. Зачем уменьшать на 1 и проверять, стало меньше или нет 3. Ведь можно сразу рассчитать, сколько должно быть в H5, чтобы в сумме D5 + H5 получилось 3.
сумма D5 + H5 НЕ должна превышать 3. но там могут быть значения 1 ... 2 или 3 в зависимости от пред идущего расчета по формуле в h5 и пост проверки, которую я не могу организовать. Подозреваю что результат вычисления в H5 нужно поместить в переменную а дальше использовать цикл Do Until или Do While. У меня сложность с синтаксисом макроса. Не понимаю как промежуточный результат с ячейки добавить в переменную, а дальше прокручивать его в цикле до наступления условия и результат выводить в H5. А потом тоже самое делать в следующей строчке до конца таблицы.
Формула может проверить: если D5+H5<=3, то оставить как есть в H5. Если же D5+H5>3, то формула может сразу рассчитать, сколько оставить в H5, чтобы сумма D5 + H5 стала равняться 3. То есть для непосвященных в Вашу задачу нет необходимости уменьшать на 1. Но если Вам это действительно надо, то это другое дело. Вот я и пытаюсь выяснить, действительно ли Вам надо уменьшать на 1, может быть Вы пока чего-то не понимаете.
та формула что уже есть в H5 написанная мною, делает все кроме проверки, в котором требуется результат вычисления в H5 сложить с D5 и в случае не удовлетворения "саму себя" Н5 уменьшать.... это формулой я сделать не могу (( помогите макросом плз
Да, нужно уменьшать на -1 пока не наступит 2 условия. Результат вычислений по формуле в H5 > 0 и сумма значения D5 + результат вычислений по формуле в H5 > 3. Если доуменьшаем по -1 в Н5 до 0 то в H5 присваивается 0. Это к примеру если в D5=6 а H5=0 то их сумма 6, но так как Н5 уже 0, то в H5 присваивается 0. Второй пример. D5=2 а H5=3 сумма 5, уменьшаем H5 на 1 и повторяем D5=2 а H5=2, уменьшаем H5 на 1 и повторяем D5=2 а H5=1 О, D5+H5 = 3!!!.... принимаемся к следующей строчке )))
Zanzara, а в чем вообще смысл уменьшать на 1, а затем проверять? Почему сразу нельзя присвоить H5 нужное значение, если D5+H5>3? Можете это объяснить, или Вы никак не можете понять, что я хочу уточнить?
skiv17 написал: Все сделал по условиям, но в 23 и 24 строке не соответствует контрольному результату???Проверьте.
Идеально!! Именно то что и хотел. Спасибо большое, очень помог. А в 23 и 24 строке, делая контролку... я сам допустил ошибку, но Ваш макрос все делает правильно.