在Microsoft Excel中计算阶乘的7种方法
您需要在 Excel 中计算一个数字的阶乘吗?
Excel 是一个非常大且灵活的计算器,因此有些人用它来解决数学问题是有道理的。
在统计事件的排列组合时,阶乘经常出现。因此,在 Excel 中进行任何统计工作时,你很可能需要大量计算阶乘。
这篇文章将向您展示在 Excel 中查找整数阶乘的所有方法。
推荐:如何在Linux Mint中使用工作区和热点来提高生产力
什么是阶乘?
整数的阶乘是该数以下所有整数的乘积。数字的阶乘 n 通常用感叹号表示 n!
在数字后。
以下是几个阶乘计算的例子。
- 5 的阶乘表示为
5!
这只是5 * 4 * 3 * 2 * 1
= 120。 - 6 的阶乘表示为
6!
这只是6 * 5 * 4 * 3 * 2 * 1
= 720。 - 7 的阶乘表示为
7!
这只是7 * 6 * 5 * 4 * 3 * 2 * 1
= 5040。
正如您所见,值很快变大。
⚠️ 警告:您最多只能计算 170!
在 Excel 中,此后,计算将返回 #数字! 错误,因为结果太大。
使用 FACT 函数计算阶乘
Excel 有一个专门用于计算数字阶乘的函数。
= FACT ( number )
FACT 函数采用正整数值并返回该数字的阶乘。
number
是返回阶乘所依据的数字。
= FACT ( B3 )
上述公式将返回单元格中值的阶乘 B3。
传递给 事实 函数需要是一个正整数值。
- 负数将导致 #数字! 错误。
- 0 和 1 的阶乘结果为 1。
- 在计算阶乘之前,正小数值会被截断。
使用 FACTDOUBLE 函数计算阶乘
Excel 中还有另一个阶乘函数,称为 事实双重。
从函数名称来看,您可能会认为它将阶乘取去并乘以 2。但这并不是它的作用。
这 双阶乘 (或者 半因子) 是另一种数学计算,其定义方式与阶乘类似。
- 为了 甚至 数字,双阶乘是该数字及以下所有偶数的乘积。
- 为了 奇怪的 数字,双阶乘是该数字及以下所有奇数的乘积。
双阶乘 n 用两个感叹号字符表示 n!!
。
以下是一些例子 双阶乘 计算。
- 5 的双阶乘表示为
5!!
这只是5 * 3 * 1
= 15。 - 6 的双阶乘表示为
6!!
这只是6 * 4 * 2
= 四十八。 - 7 的双阶乘表示为
7!!
这只是7 * 5 * 3 * 1
= 105。
这意味着阶乘 n 和 双阶乘 的 n 乘以 双阶乘 的 n-1。
用符号表示就是 n!
= n!! * (n-1)!!
。
= FACTDOUBLE ( B3 ) * FACTDOUBLE ( B3 - 1 )
上述公式将返回单元格中值的阶乘 B3。
此公式计算 双阶乘 单元格中的数字 B3 和 双阶乘 的数量 B3 减 1,然后将两者相乘 双阶乘 其结果是阶乘。
使用 SEQUENCE 函数计算阶乘
虽然有一个专门的函数来计算阶乘值,但还有一些其他可用的创造性选项。
您可以使用以下组合 产品 和 顺序 函数来创建阶乘计算。
= PRODUCT ( SEQUENCE ( B3 ) )
上述公式将返回单元格中数字的阶乘 B3。
这 顺序 函数允许您创建一个动态数组,该数组从 1 开始,以 1 为增量,直到单元格中给定的数字 B3。这些正是计算阶乘所需要的值。
这 产品 然后可以使用函数将 SEQUENCE 中的每个值相乘。此结果恰好是单元格中数字的阶乘 B3。
推荐:WordPress网站分析插件Independent Analytics
使用 Power Query 计算阶乘
Power Query 有许多可用的高级数学函数,其中还包括阶乘函数。
您将能够使用 Power Query 计算 Excel 表内任意一列数字的阶乘。
- 选择您的 Excel 表格数据。
- 前往 数据 标签。
- 点击 来自表/范围 命令。
这将打开 Power Query 编辑器,您可以在其中将阶乘计算添加到数据中。
- 选择要用阶乘运算进行转换的数字列。
- 前往 转换 Power Query 编辑器的选项卡。
- 点击 科学 在命令中找到 数字列 部分。
- 选择 阶乘 从选项中。
= Table.TransformColumns(#"Changed Type",{{"Number", Number.Factorial, Int64.Type}})
这将应用类似于上述 M 代码公式的内容作为查询中的一个步骤,并且您的列现在将在数据预览中显示阶乘值。
您现在可以将数据重新加载到 Excel 中。
- 前往 家 Power Query 编辑器的选项卡。
- 点击 关闭并加载。
这将打开 导入数据 菜单,您可以选择将数据导入到 桌子 然后选择表格的位置。
使用 LAMBDA 函数计算阶乘
阶乘计算是递归的。这意味着你可以根据前一个值来定义当前值。
n 的阶乘实际上是 n 乘以 n-1 的阶乘。用符号表示就是 n!
= n * (n-1)!
。
Excel 中有一个函数可以处理递归计算。这就是 拉姆达 功能。
这 拉姆达 函数允许您构建自己的自定义函数。您可以使用它来构建自己的阶乘函数版本。
要使用 拉姆达 函数递归,您首先需要使用名称管理器定义自定义函数。
- 前往 公式 标签。
- 点击 姓名经理 命令。
这将打开 姓名经理 其中列出了 Excel 工作簿中的所有命名对象。
- 按 新的 按钮。
- 添加 阶乘 进入 姓名 输入。
=LAMBDA(n,LET(integer,INT(n),IF(integer
- 将上述公式粘贴到 参考 输入。
- 按 好的 按钮关闭 新名字 菜单。
- 按 关闭 按钮关闭 姓名经理 菜单。
📝 笔记: 这 姓名 用于 新名字 菜单必须与 参考 输入 拉姆达 公式以便递归引用计算。
这 integer*FACTORIAL(integer-1)
是公式计算的主体部分,以递归方式计算阶乘。
这 如果 函数首先测试数字,如果它大于 1,则应用递归计算,否则阶乘结果将为 1。
这 让 函数只是通过定义来帮助简化公式 integer
作为 INT(n)
这是数字的整数部分 n。这在后面阶乘计算中有多处使用。
=LAMBDA(n,IF(INT(n)
或者,没有 让 函数 拉姆达 公式可以写成如上形式。 让 函数将保存 智力 函数被多次使用。
现在新的 阶乘 函数定义在 姓名经理 它可以像工作簿中任何地方的任何其他函数一样使用。
= FACTORIAL ( B3 )
上述习惯 拉姆达 函数将根据单元格中的值返回阶乘 B3。
使用 VBA 计算阶乘
VBA 有很多内置函数,但没有阶乘函数。
但是您可以创建一个函数,该函数可以在任何其他过程中调用来计算阶乘(如果需要)。
Public Function Factorial(ByVal myNumber As Integer) As Long
If myNumber
上述代码创建了一个阶乘函数,该函数以数字作为参数并返回阶乘。
正如您所见,此代码是递归定义 Factorial()
函数调用自身来执行计算。
使用 Office 脚本计算阶乘
Office Scripts 中的基于 TypeScript 的语言也没有可用的内置阶乘函数。
但是您也可以以递归方式构建自己的阶乘计算,然后可以从主函数中调用它。
function factorial(myNumber: number): number {
if (myNumber == 0) {
return 1
}
else {
return myNumber * factorial(myNumber - 1)
}
};
上述 Office Script 函数将返回给定数字的阶乘。
该函数是递归定义的。你可以看到 factorial()
在计算中调用自身。
结论
您可能需要在 Excel 中计算数字的阶乘的原因有很多。
这篇文章向您展示了可以使用的不同方法。
获得阶乘的最直接方法是使用 事实 函数。但你也可以使用其他一些涉及 事实双重, 顺序, 和 产品 功能。
Power Query 还提供了可从编辑器功能区轻松使用的阶乘 M 代码公式。
由于阶乘可以递归定义,因此你甚至可以使用 拉姆达 函数的递归能力。
可以使用类似的递归逻辑来构建 虚拟专用网络 和 办公室脚本 函数也可以得到阶乘。