尽管听起来很痛苦,但我的任务是实施一个电子表格来计算药物吸收和消除半衰期。我实际上使用 LibreOffice Calc,但在 Excel 中测试的解决方案也会对我有所帮助(因为它可能是可移植的,无论如何)。
我的电子表格目前如下所示:
它必须考虑多剂量摄入(即 D 列中的任意新条目)。例如,要使用此电子表格的人需要每 56 小时服用一次新的 50mg 剂量的药物。
为了在 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 个半衰期)等上返回。换句话说,血液中的药物浓度立即上升。相反,它应该线性上升,根据H2 中的“达到 C max的时间”。= 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),作为肌肉注射给药,“T / TC 比率”是指 TC 上存在的睾酮 (T) 的比率,我真的不知道知道该比率是否实际上是 1。“达到 C最大值的时间”是药物达到血液中最大浓度所需的时间。
有人告诉我吸收可能不是完全线性的,当达到 C max时,药物可能不会 100% 被吸收,这意味着之后会继续吸收一些药物;尽管如此,我可以假设它是线性的,并且在 C max处 100% 被吸收,因为对于将要使用电子表格的人来说,这是一个足够好的近似值。
我将电子表格放在 Google 云端硬盘上,以便其他人更轻松地为我提供帮助。
谢谢。