Как бы болезненно это ни звучало, мне было поручено внедрить электронную таблицу для расчета времени всасывания и элиминации лекарств. Я на самом деле использую LibreOffice Calc, но решение, протестированное в Excel, также помогло бы мне (так как оно, вероятно, в любом случае будет переносимым).
Моя электронная таблица в настоящее время выглядит так:
Он должен учитывать несколько приемов дозы (т.е. произвольные новые записи в столбце D). Например, человек, который собирается использовать эту электронную таблицу, должен принимать новую дозу препарата 50 мг каждые 56 часов.
Чтобы написать рабочую формулу в столбце C, я выполнил много шагов:
(все примеры приведены для C3; для C2 вручную установлено значение 0
)
= ( C2 * 0,5 ^ ( (B3 - B2) / $H$3 ) ) + D2 * J$2
- это учитывает прием нескольких доз, но делаетне учитывать время поглощения. Вместо этого он возвращает 50
на C3 (через 8 часов) , 48.577
на C4 (16 часов) , (...) и 25.000
на C27 (192 часа или 1 период полураспада) и т. Д. Другими словами, концентрация лекарственного средства в крови немедленно возрастает. Вместо этого он должен расти линейно, согласно «Время до C max » на H2.
= IFERROR( ( ( INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) * J$2 ) * MIN( ( B3 - ( INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) ) / $H$2; 1 ) ); 0 )
- это вычисляет всего поглощение со временем, оно линейно возрастает до достижения 50
на C16 (112 часов) и остается там впоследствии. Она отличается от предыдущей формулы, так как эта находит последнее значение, введенное в столбце D (с комбинацией INDEX и MATCH). Но из-за этого он больше не учитывает многократное потребление - только последнее.
= IFERROR( ( ( ( INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) * J$2 ) * MIN( ( B3 - ( INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) ) / $H$2; 1 ) ) - ( ( INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) * J$2 ) * MIN( ( B2 - ( INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) ) / $H$2; 1 ) ) ); 0 )
- это возвращает количество препарата, которое было поглощено за последние 8-часовой (1 ряд) период. То есть C3 3.704
, C4 также 3.704
, (...) C15 (104 часа) также 3.704
, а C16 (112 часов) 1.852
и C17 и ниже равны 0
(при условии, что нет другого приема дозы, кроме как в D2). Он имеет тот же недостаток, что и предыдущая формула.
= ( C2 * 0,5 ^ ( (B3 - B2) / $H$3 ) ) + IFERROR( ( ( ( INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) * J$2 ) * MIN( ( B3 - ( INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) ) / $H$2; 1 ) ) - ( ( INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) * J$2 ) * MIN( ( B2 - ( INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) ) / $H$2; 1 ) ) ); 0 )
- этот равен был моим текущим состояниемформула. Он учитывает как линейное поглощение, так и логарифмическое исключение поглощенного количества.
2019-10-11 обновление: Я придумал улучшение производительности до шага3 выше, в виде: = IFERROR( ( ( IF( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) <= H$2; (B3 - B2); IF( ( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) - H$2 ) < (B3 - B2); ( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) - H$2 ); 0 ) ) * INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) ) / H$2 ); 0 )
.
Обновленная, полная формула и текущая современная , как видно на скриншоте выше, то есть: = ( C2 * 0,5 ^ ( (B3 - B2) / $H$3 ) ) + IFERROR( ( ( IF( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) <= H$2; (B3 - B2); IF( ( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) - H$2 ) < (B3 - B2); ( ( B3 - INDEX( $B$2:$B2; MATCH(1E+306; $D$2:$D2; 1) ) ) - H$2 ); 0 ) ) * INDEX( $D$2:$D2; MATCH(1E+306; $D$2:$D2; 1) ) ) / H$2 ); 0 )
.
Однако эта формула все еще не учитывает последующие дозы , в любом случае не правильно. Т.е. если я введу новое значение 50
в ячейку D9, значение в ячейке C10 должно увеличиться, но это не так.
После долгих раздумий и поиска помощи в другом месте , ядо сих пор не знаю, как это можно сделать так.
Кто-нибудь может помочь?
В качестве дополнительного контекста, лекарство в этом примере - ципионат тестостерона (TC), вводится как внутримышечная инъекция, и «отношение Т / ТС» относится к отношению тестостерона (Т), который присутствует на ТК, и я не знаю, действительно ли это соотношение равно 1. «Время к С max '- количество времени, необходимое для достижения наркотиком максимальной концентрации в крови.
Мне сказали, что абсорбция может быть не совсем линейной, и препарат можетне быть поглощенным на 100% при достижении C max , что означает, что часть его будет продолжать поглощаться после этого;тем не менее, я могу предположить, что он линейный и на 100% поглощается при C max , поскольку это достаточно хорошее приближение для целей человека, который собирается использовать электронную таблицу.
Я помещаю электронную таблицу на Google Drive , чтобы другим было проще помочь мне.
Спасибо.