#excel #date #excel-formula
#excel #Дата #excel-формула
Вопрос:
У меня есть таблица платежей для расчета процентов. Столбец, в котором применяется платеж, берет свои значения из столбца, в котором перечислены итоговые суммы счета, однако платеж применяется через k дней после окончания периода.
Я добился частичного успеха, используя эту формулу:
IFERROR(INDEX($F$12:$F$25,MATCH(D12,$G$12:$G$25,1)),0)
Где столбец G — вспомогательный столбец с датами платежа, в основном конец периода k, но поскольку он учитывает только конец периода, в месячные и полугодовые периоды иногда ближайшая меньшая дата платежа приходилась на тот же период, поэтому я также ДОЛЖЕН учитывать начало периода, чтобы этоне происходит. Мне помогли использовать формулу массива, подобную этой:
=IFERROR(INDEX(F:F,SMALL(IF(F$12:F12>0,ROW(F$12:F12)),COUNT(1/((C$12:C12-C$12>C$7) (D$12:D12-C$12>C$7))))),0)
И это работает хорошо, и для этого не требуется вспомогательный столбец. Но поскольку это формула массива, и эта таблица не для моего использования, это не подходит.
Я хотел бы знать, могу ли я сделать это без формулы массива и встроенных функций Excel 2013.
Редактировать: эта формула делает это:
=SUMPRODUCT(($D$12:$D$25 $C$7>=C12)*($D$12:$D$25 $C$7<=D12)*($F$12:$F$25))
Но если в столбце D есть пробелы, которые являются результатом формулы, она возвращает ошибку. Таким образом, следующая формула более стабильна:
=SUMIFS($F$12:$F$25,$D$12:$D$25,">="amp;C12-$C$7,$D$12:$D$25,"<="amp;D12-$C$7)
Этот метод эффективно помещает строки платежей в диапазон дат, к которым он принадлежит.
Ответ №1:
По крайней мере, вы можете SMALL
заменить AGGREGATE
следующим образом:
=IFERROR(INDEX(F:F;AGGREGATE(15;6;(ROW(F$12:F12)/(F$12:F12>0));COUNT(1/((C$12:C12-C$12>C$7) (D$12:D12-C$12>C$7)))));0)
AGGREGATE(15;6;;)
аналогично SMALL
, но игнорирует ошибки. Это позволяет вам отключить IF(F$12:F12>0,ROW(F$12:F12))
для частного (ROW(F$12:F12)/(F$12:F12>0))
. Каждый номер строки, деленный на a FALSE
, выдает ошибку, которая игнорируется AGGREGATE
.
Что касается COUNT
-part, я не могу сказать, что он делает, поскольку мои результаты не похожи на ваши (я скопировал вашу формулу). Я думаю, это работает как смещение.
Можете ли вы протестировать мою формулу и сказать мне, работает ли она без cse? Иначе нам нужно найти замену для COUNT
-part . В настоящее время я не могу протестировать его, поскольку я в Office 365 и не знаю, могу ли я активировать старую функциональность CSE.
Комментарии:
1. Часть подсчета заключалась в вычислении
k
аргумента изSMALL
функции. Изнутри наружу,C$12:C12
чтобы оценить от текущей строки до вершины, например, в пятой строке таблицы, это выглядит следующимC$12:C17
образом.C$12:C12-C$12
возвращает прошедшие дни.C$12:C12-C$12>C$7
возвращает дни, прошедшие выше срока оплаты, он будет возвращать 0, пока не найдет один, но как только он найдет один, он найдет следующий и так далее, вот почемуSMALL
была использована функция, потому что она ранжирует их только тогда, когда они выше. Обратный счет используется для игнорирования значений с меньшимDIV/0!
значением.2. Но мне также сложно поддерживать, мне потребовалось слишком много времени, чтобы понять его механизм, поскольку я до сих пор не совсем понимаю, почему он суммирует следующее число. Я не мог этого понять, поэтому я отбросил его. Затем кто-то помог мне найти еще два решения, которые я мог понять. Один с SUMPRODUCT, а другой с SUMIF. Я опубликую их позже, как только смогу, чтобы обновить эту тему. Кстати, ваша формула вернула 0 во всех строках для моего набора данных. Тем не менее, большое вам спасибо. Я опубликую решение в ближайшие часы. Должен ли я проголосовать?
3. Но
C$12:C12-C$12>C$7
с фиксированной строкой вC$12
выдает всегда true, так как на вашем изображенииC12
пусто. Также думал обSUMPRODUCT
этом.4. Работает ли это так, как ожидалось, если вы удалите сумму в середине столбца итог счета?
5. Для набора данных, который вы любезно создали для выполнения своих тестов, эта формула поместит сумму платежа там, где она должна быть, в соответствии со столбцами C и D:
=SUMIFS($E$12:$E$25,$D$12:$D$25,">="amp;C12-$C$7,$D$12:$D$25,"<="amp;D12-$C$7)
Извините за задержку ответа, это была сумасшедшая неделя.