У меня довольно сложная проблема с формулой, которую я пытаюсь решить с помощью Excel, но не уверен, возможно ли это.
По сути, я хочу сделать следующее для всех моих пациентов, пролеченных по продукту, который я хочу сделать:
Препарат А: 24 января = Пациенты, получавшие лечение, по продукту (текущий месяц, в данном случае январь) – прекращение приема (24 января) 24 февраля = пациенты с 24 января + пациенты, получавшие лечение по продукту (с февраля) – прекращение участия (24 февраля) 24 марта = Пациенты с 24 января + Пациенты с 24 февраля + Пациенты, пролеченные по продукту (с марта) – Исключение (март)
24 апреля я хочу начать все сначала, как Ян, потому что лечение рассчитано всего на 3 месяца. Таким образом, по сути, 24 апреля будет = Текущие леченные пациенты (апрель) - Выбывшие (апрель) 24 мая = Пациенты с 24 апреля + Пациенты, пролеченные по продукту (с мая) – Выпадение (24 мая) 24 июня = Пациенты с 24 апреля + Пациенты с 24 мая + Пациенты, пролеченные по продукту (с июня) – Выбывает (июнь)
И это каждые 3 месяца, и я хотел бы ввести в ячейку формулу для 24 января, и когда я ее перетаскиваю, этот процесс просто автоматизируется, не уверен, возможно ли это.
Обратите внимание, что мои данные указаны на рисунке. Обратите внимание, что я пытаюсь разместить эту формулу на C52.
Если у кого-то есть идеи, как это сделать, буду очень признателен! Я боролся с этим последние две недели
Лучшее, что я мог сделать, это следующее:
=OFFSET(D36,0,MAX(0,C55-2),1,1)-OFFSET(D49,0,MAX(0,C55-2),1,1)+OFFSET(D24,0,MAX(0,C55-2),1,1)
Но правильно сделал только на 24 февраля, ибо 24 марта уже не работало
Как получить скидку за определенный месяц?
Посмотрите, та ли это вещь, которую вы ищете. Подведение итогов возобновляется через три месяца.
=LET(startCol,COLUMN($C:$C),startIndex,QUOTIENT(COLUMN()-startCol,3)*3+1,SUM(INDEX($C34:$N34,startIndex):C34)-SUM(INDEX($C46:$N46,startIndex):C46))
Единственное, в чем я не уверен, это то, что процент неудач лечения применим ко всему 2024 году. Я так и предполагал, но на вашем скриншоте это неясно.
Да, неудача лечения относится ко всему 2024 году, у нас есть данные только за год, поэтому мы будем применять их к различным месяцам 2024 года. Большое спасибо за вашу помощь, ваша формула работает хорошо. Спасибо, очень ценю!
=LET(
treated_patients_by_product, $C$34:$P$37,
months, $C$33:$P$33,
n_months, 3,
treatment_failure_by_product_as_percentage, $C$40:$G$43,
treatment_failure_for_year, LAMBDA(y,
INDEX(treatment_failure_by_product_as_percentage, , XMATCH(y, $C$39:$G$39))
),
inital_totals, EXPAND(0, ROWS(treated_patients_by_product), , 0),
net_patients_for_month, LAMBDA(accumulated, year_month,
HSTACK(
accumulated,
IF(
MOD(MONTH(year_month), n_months) = 1,
inital_totals,
TAKE(accumulated, , -1)
) +
INDEX(treated_patients_by_product, , XMATCH(year_month, months)) *
(1 - treatment_failure_for_year(YEAR(year_month)))
)
),
DROP(REDUCE(inital_totals, months, net_patients_for_month), , 1)
)
Ух ты, спасибо большое, я не знал о функции REDUCE. И, кстати, на самом деле очень хорошая идея использовать LET, чтобы упростить его и классифицировать каждый параметр. Спасибо, очень ценю!
Я избегаю offset(), обычно поиск() или index() с match() работают лучше, ведут себя лучше и легко редактируются.