You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用VBA及内置阶乘函数时如何在Excel中实现阶乘计算

Excel无VBA、无内置阶乘函数的阶乘计算方案

原有迭代方案的问题修正

你之前的公式无法生效的核心原因是把迭代计数逻辑、阶乘乘积逻辑合并在单个单元格内,没有给迭代变量D5设置正确的自增循环引用规则,按以下步骤调整即可正常使用(需保持迭代计算功能开启,建议将最大迭代次数设置为你需要计算的最大阶乘值,比如计算10!就设为10次):

  • 单元格定义:
    • C5:待求阶乘的输入单元格,要求输入≥1的正整数
    • D5:迭代计数变量,初始值手动输入1
    • E5:阶乘结果输出单元格,初始值手动输入1
  • D5单元格输入迭代计数公式:
    =IF(OR(C5<1;D5>=C5);C5;D5+1)
  • E5单元格输入阶乘计算公式:
    =IF(C5<1;"Wrong number!!!";IF(D5<=C5;IF(D5=1;1;E5*D5);E5))

注意:该方案依赖迭代设置,如果迭代次数配置错误会出现计算结果偏差,更推荐使用下面的无迭代方案。

无需开启迭代的稳定实现方案

该方案不需要额外配置迭代参数,不需要单独的迭代变量单元格,全程不使用VBA、不调用FACT()内置阶乘函数,直接在结果单元格输入公式即可:

  • 适用于Excel 2019及更早版本(无动态数组支持):输入公式后按Ctrl+Shift+Enter三键确认数组公式
=IF(C5<1;"Wrong number!!!";PRODUCT(ROW(INDIRECT("1:"&C5))))
  • 适用于Excel 365/2021及以后版本(支持动态数组):直接输入按回车即可
=IF(C5<1;"Wrong number!!!";PRODUCT(SEQUENCE(C5)))

公式逻辑说明:

  • 第一层IF判断先校验输入值,小于1时直接返回错误提示
  • 旧版本用ROW(INDIRECT("1:"&C5))、新版本用SEQUENCE(C5)生成从1到输入值C5的连续整数序列
  • 用PRODUCT()对序列内所有数值做连乘,直接得到阶乘结果,逻辑完全符合阶乘数学定义。

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:45:45