关于在Excel动态区域计算剂量反应动力学函数f(n)的技术咨询
动态计算剂量反应动力学函数f(n)的Excel方案
针对你需要在动态扩展的工作表E列计算剂量反应动力学函数f(n)的需求,我整理了直接可用的Excel公式方案,完美适配新行输入后自动计算的场景:
核心逻辑回顾
先明确函数f(n)的计算规则(对应第n天的数值):
- 第1天(n=1):
f(1) = w(1)(无求和项,直接取当日的w值) - 第n天(n>1):
f(n) = w(n) + Σ(i=1到n-1)w(i) * e^(-(n-i)),其中指数项-(n-i)会让越近的历史w(i)权重越高(比如n=3时,i=2的权重是e(-1),i=1的权重是e(-2))
Excel公式实现(适配动态扩展)
假设:
- A列是天数(A1=1, A2=2,...,新行自动递增)
- B列是每日的w值(B1对应第1天的w(1),B2对应w(2),以此类推)
- E列是要计算的f(n)值(E1对应f(1),E2对应f(2))
方法1:Excel 365/2021 动态数组公式(推荐)
在E1单元格输入以下公式,下拉后会自动适配新添加的行:
=IF(A1=1,B1,B1+SUMPRODUCT(B$1:INDEX(B:B,A1-1),EXP(-(A1-ROW(B$1:INDEX(B:B,A1-1))))))
公式拆解:
IF(A1=1,B1,...):处理第1天的特殊情况,直接返回B1B1+SUMPRODUCT(...):计算当日w值加上历史加权求和B$1:INDEX(B:B,A1-1):动态获取从第1天到前一天的所有w值范围(新行添加时自动扩展)EXP(-(A1-ROW(B$1:INDEX(B:B,A1-1)))):计算每个历史w(i)的权重,A1-ROW(...)就是n-i,取负指数后实现近高远低的权重
方法2:兼容旧版Excel的公式
如果使用的是Excel 2019及更早版本,可在E1输入,然后下拉填充:
=IF(A1=1,B1,B1+SUMPRODUCT(B$1:B(A1-1),EXP(-(A1-ROW(B$1:B(A1-1))))))
注:旧版Excel中B(A1-1)需要确保A列的天数是连续的整数,否则可替换为INDEX(B:B,A1-1)来稳定获取范围。
动态扩展验证
当你在表格底部添加新行(比如第5行,A5=5,B5输入新的w值),只需把E列的公式下拉到E5,公式会自动识别并计算前4天的加权求和,完全无需手动调整范围。
内容的提问来源于stack exchange,提问作者RonGeorge
相关产品推荐
相关产品推荐

