Excel动态级数求和公式需求:基于可变计数n自动计算B1+B1/2+…+B1/n的和
解决方案:自动适配计数的级数求和
嗨,你的需求其实很好实现,核心是计算B1乘以前n项调和数的和(这里n就是B3里的计数值),下面给你两种可行的方案,分别适配不同版本的Excel:
方案1:兼容绝大多数Excel版本(包括旧版)
直接用SUMPRODUCT结合INDIRECT和ROW函数,公式如下:
=B1 * SUMPRODUCT(1/ROW(INDIRECT("1:"&B3)))
公式拆解:
INDIRECT("1:"&B3):根据B3的数值动态生成一个从1到n的行号范围(比如B3=4时,就是1:4)ROW(...):提取这个范围的行号,得到数组{1,2,3,4}1/ROW(...):生成调和级数的每一项,即{1, 1/2, 1/3, 1/4}SUMPRODUCT(...):对这个数组求和,得到前n项调和数的总和- 最后乘以B1,就得到你需要的
B1 + B1/2 + ... + B1/n的结果
验证示例:
当B1=5,B3=4时,计算结果为5*(1+0.5+0.3333333+0.25)=10.41666665,和你给出的示例结果几乎一致(微小误差是浮点运算的正常现象)。
可选优化(错误处理):
如果担心B3输入非正整数导致报错,可以添加判断逻辑:
=IF(AND(ISNUMBER(B3), B3>0, INT(B3)=B3), B1 * SUMPRODUCT(1/ROW(INDIRECT("1:"&B3))), "请输入正整数计数")
方案2:Excel 365/2021+ 简洁版
如果你用的是支持动态数组的Excel版本,直接用SEQUENCE函数生成序列,公式更简洁:
=B1 * SUM(1/SEQUENCE(B3))
公式拆解:
SEQUENCE(B3):直接生成从1到n的整数序列(比如B3=4时,就是{1,2,3,4})1/SEQUENCE(B3):生成调和级数项,再用SUM求和,最后乘以B1得到结果
这个方案更直观,而且运算效率也不错,n=1000时完全能快速计算。
两种方案都能满足你“修改计数n时自动调整求和项”的需求,且都支持n取值到1000的场景,你可以根据自己的Excel版本选择合适的公式~
内容的提问来源于stack exchange,提问作者SAPARO
相关产品推荐
相关产品推荐

