Добрый день! Прошу помощи в решении сложной для меня задачи: Необходимо составить формулу, сколько сотрудник получит пропорционально, за период в промежутке дат (с 01 по 10 число, с 11 по 20, с 21 до конца месяца, а так же за каждый месяц и за каждый квартал), при условии, что общая сумма договора с ним (столбец В), а период действия этого договора (столбцы С и D). Главное условие - это точность подсчёта формулы, при разных датах договоров. И конечно, суммы должны быть пропорционально распределены по периоду действия договора. Были попытки вычисления кол-ва дней, месяцев и кварталов (в ед.) в периоде действия договора, успешно, но дальше этого продвинуться не удалось, т.к. не получилось привязать их к датам месяцев внутри срока действия договора.
Добрый день! Прошу помощи в решении сложной для меня задачи: Необходимо составить формулу, сколько сотрудник получит пропорционально, за период в промежутке дат (с 01 по 10 число, с 11 по 20, с 21 до конца месяца, а так же за каждый месяц и за каждый квартал), при условии, что общая сумма договора с ним (столбец В), а период действия этого договора (столбцы С и D). Главное условие - это точность подсчёта формулы, при разных датах договоров. И конечно, суммы должны быть пропорционально распределены по периоду действия договора. Были попытки вычисления кол-ва дней, месяцев и кварталов (в ед.) в периоде действия договора, успешно, но дальше этого продвинуться не удалось, т.к. не получилось привязать их к датам месяцев внутри срока действия договора.Woltaren
Светлый, спасибо за интересный пример! Можно уточнить, несколько моментов: С какой целью используется «ЕСЛИОШИБКА», если «Значение_если_ошибка» не используется? Почему используется «СЧИТАТЬПУСТОТЫ», если пустых ячеек тут нет, а идет 0. И как правильно прочитать индексы, указанные Вами далее в формулах. Заранее благодарю за ответы.
Светлый, спасибо за интересный пример! Можно уточнить, несколько моментов: С какой целью используется «ЕСЛИОШИБКА», если «Значение_если_ошибка» не используется? Почему используется «СЧИТАТЬПУСТОТЫ», если пустых ячеек тут нет, а идет 0. И как правильно прочитать индексы, указанные Вами далее в формулах. Заранее благодарю за ответы.Woltaren
В моём прикидочном решении принцип определения совпадения интервалов двух событий (договора и периода расчёта) заключается в пересечении двух массивов. Массивы созданы функцией ИНДЕКС от начала одной даты до конца другой даты. Между ними пробел, который выполняет функцию пересечения этих массивов. Если есть несколько дней пересечения, то будет столько же ячеек пересечения, иначе пересечение будет пустое. Эта ошибка устраняется функцией ЕСЛИОШИБКА. Когда функция заканчивается ";)" это равнозначно ";0)". Значения дат больше 43000, поэтому ячейки пересечения лежат за 43000 строкой, а там пусто. Считаем пустые ячейки, это количество дней пересечения. Его умножаем на среднее значение договора. Среднее значение рассчитываем поделив сумму договора на число дней этого договора. А "прикидочный" - это без обдумывания и оптимизации формул. Если бы были в ячейках номера месяца, можно было бы сделать формулу немного сложнее, но только одну - протягиваемую. Сейчас в каждой ячейке своя формула. Или можно по другому принципу количество дней подсчитывать.
В моём прикидочном решении принцип определения совпадения интервалов двух событий (договора и периода расчёта) заключается в пересечении двух массивов. Массивы созданы функцией ИНДЕКС от начала одной даты до конца другой даты. Между ними пробел, который выполняет функцию пересечения этих массивов. Если есть несколько дней пересечения, то будет столько же ячеек пересечения, иначе пересечение будет пустое. Эта ошибка устраняется функцией ЕСЛИОШИБКА. Когда функция заканчивается ";)" это равнозначно ";0)". Значения дат больше 43000, поэтому ячейки пересечения лежат за 43000 строкой, а там пусто. Считаем пустые ячейки, это количество дней пересечения. Его умножаем на среднее значение договора. Среднее значение рассчитываем поделив сумму договора на число дней этого договора. А "прикидочный" - это без обдумывания и оптимизации формул. Если бы были в ячейках номера месяца, можно было бы сделать формулу немного сложнее, но только одну - протягиваемую. Сейчас в каждой ячейке своя формула. Или можно по другому принципу количество дней подсчитывать.Светлый
krosav4ig, спасибо! Но у меня в дальнейшем и так должен формироваться свод из основной таблицы, поэтому хотел иметь данные внутри имеющейся таблицы, чтобы не городить свод из сводов.
krosav4ig, спасибо! Но у меня в дальнейшем и так должен формироваться свод из основной таблицы, поэтому хотел иметь данные внутри имеющейся таблицы, чтобы не городить свод из сводов.Woltaren
Светлый, спасибо Вам! Оч. крутые формулы получились! Но в чём принципиальное отличие "массива" и "не массива" (Ваших двух вариантов) в конкретном случае, если, например таблица из 2-3 тыс. строк? Что предпочтительнее использовать? Что будет корректнее, логичнее, надёжнее, стабильнее, кроме личных предпочтений пользователя?
Светлый, спасибо Вам! Оч. крутые формулы получились! Но в чём принципиальное отличие "массива" и "не массива" (Ваших двух вариантов) в конкретном случае, если, например таблица из 2-3 тыс. строк? Что предпочтительнее использовать? Что будет корректнее, логичнее, надёжнее, стабильнее, кроме личных предпочтений пользователя?Woltaren
Светлый, Светлый, здравствуйте! Помогите, пожалуйста, решить задачу, которая находится в теме, переда данной - "Выбор по двум значениям, одно из которых интерполируется!".
Светлый, Светлый, здравствуйте! Помогите, пожалуйста, решить задачу, которая находится в теме, переда данной - "Выбор по двум значениям, одно из которых интерполируется!".Eegorkka
в чём принципиальное отличие "массива" и "не массива"
Отличие в некотором неудобстве ввода - для массивных формул надо одновременно нажать три клавиши Ctrl+Shift+Enter. Если нажать просто Enter, формула перестаёт работать. У массивных формул проблемы с объединёнными ячейками. Их не удаётся записать. Приходится снимать объединение, вписывать формулу и снова объединять.
Если предполагается частое изменение формул, то проще изменить одну формулу и скопировать её во все остальные ячейки. Формула должна быть протягиваемой. Если Вы один раз создали удовлетворяющую все потребности форму или таблицу, то можно обойтись более простыми и быстродействующими формулами. Но при правке таких формул может возникнуть ошибка, которую трудно будет обнаружить.
в чём принципиальное отличие "массива" и "не массива"
Отличие в некотором неудобстве ввода - для массивных формул надо одновременно нажать три клавиши Ctrl+Shift+Enter. Если нажать просто Enter, формула перестаёт работать. У массивных формул проблемы с объединёнными ячейками. Их не удаётся записать. Приходится снимать объединение, вписывать формулу и снова объединять.
Если предполагается частое изменение формул, то проще изменить одну формулу и скопировать её во все остальные ячейки. Формула должна быть протягиваемой. Если Вы один раз создали удовлетворяющую все потребности форму или таблицу, то можно обойтись более простыми и быстродействующими формулами. Но при правке таких формул может возникнуть ошибка, которую трудно будет обнаружить.Светлый
в свою таблицу, и изменив все буквы, в соответствии со столбцами, формула не работает. Возможно там идёт ещё какой-то учёт по столбцам? Поясните пожалуйста, как адаптировать формулу, если столбцы перемещены:
Вариант А: A = Z B = AD C = AI D = AJ
Вариант В: A = Z B = AE C = AI D = AJ
Заранее большое спасибо!
Светлый, при перенесении формулы (которая не массив, вот эта):
в свою таблицу, и изменив все буквы, в соответствии со столбцами, формула не работает. Возможно там идёт ещё какой-то учёт по столбцам? Поясните пожалуйста, как адаптировать формулу, если столбцы перемещены: