如何在 Microsoft Excel 中使用 ISOMITTED 函数
使用 LAMBDA 创建自己的函数是 Excel 的一项重要高级技能,但这些自定义工具缺乏 Excel 内置功能的“智能”感觉。像 XLOOKUP 这样的函数通常可以直接支持可选参数,而 LAMBDA 函数不会自动检测参数是否被省略——它们通常必须依赖手动检查或额外逻辑。
ISOMITTED 弥补了这一差距。它为你的 LAMBDA 函数提供了一种方式来发现缺失的参数,使公式能够在标准默认值和自定义覆盖之间自动切换。
要创建可重复使用的自定义函数,必须在桌面版 Excel 或 Excel 网页版中使用 名称管理器。定义后,可以在 Excel for Microsoft 365、Excel 2024、Excel 网页版,以及最新版本的 Excel 移动和平板应用中在同一工作簿中使用它们。
ISOMITTED 函数的工作原理
这是一个逻辑检查
从本质上讲,ISOMITTED 就像是你公式的开关。它会检查你自定义函数中的特定参数是被提供还是被跳过。如果该值缺失,函数返回 TRUE;如果存在,则返回 FALSE。
语法如下:
=ISOMITTED(argument)ISOMITTED 只能在 LAMBDA 函数内使用——不能单独使用。参数 是你想要检查的 LAMBDA 函数的参数。
要有效使用它,请遵循以下两条规则:
- 方括号: 要使参数可选,请在 LAMBDA 定义中用方括号括起参数名称。这表示该参数可以省略,并允许 ISOMITTED 检测其未被提供的情况。
- 双重检查:由于用户经常将公式指向空单元格而不是让参数真正缺失,最佳做法是将 ISOMITTED 与使用 OR 函数的空值检查(="")配对。
在我们查看一些现实世界的使用案例之前,让我给你展示一个基本示例。
开始使用 ISOMITTED
"hello world" 示例
在这个示例中,A 列包含人的姓名,而在 B 列,你想使用自定义函数向该人问候“Hello, [姓名]”。如果 A 列中没有姓名,你希望函数默认为“Hello, Guest”。
以下是你将要采取的步骤:
- 通过 公式 选项卡打开 名称管理器。
- 点击 新建。
- 在 Name 字段中,将自定义函数命名为 GreetUser,在 Refers to 字段中,输入以下公式——该公式指示 Excel 如果省略 name 参数则返回“Hello, Guest”,如果提供则返回“Hello, [name]”,然后点击 OK:
=LAMBDA([name], IF(ISOMITTED(name), "Hello, Guest", "Hello, " & name))
然而,如果你随后在 Greeting 列中使用这个自定义函数,并使用对 Name 列的结构化引用([@Name]),即使 A3 是空的,公式在 B3 单元格中也不会恢复为“Hello, Guest”。
=GreetUser([@Name])这是因为,在第3行,GreetUser 在技术上有一个参数——对 Name 列的引用——所以 ISOMITTED 返回 FALSE。
要解决此问题,在 名称管理器 中,将公式更改为:
=LAMBDA([name], IF(OR(ISOMITTED(name), name=""), "Hello, Guest", "Hello, " & name))添加 OR 函数会创建一个两层安全网:
- ISOMITTED 处理结构:如果你输入 =GreetUser() 而不带任何参数,它会返回 TRUE 并提供默认的访客信息。
- name="" 处理内容:如果你将公式指向一个空单元格,该检查将返回 TRUE,从而触发相同的默认值。
一次性解决方法的诱惑
当你的表格中的某一行需要不同的计算时,你的第一反应可能是直接点击该单元格并手动更改公式。然而,这被认为是不良做法,原因有几个:
- 如果你以后需要更新一列的逻辑,你必须记得去查找并手动修复你更改的每一个单独的单元格。
- 在一个有500行的表格中几乎不可能发现人工覆盖,这会导致众所周知难以审计的错误。
- 如果你或队友不小心把公式从标准行向下拖动,你的手动覆盖将被覆盖并丢失,且不会有任何警告。
通过使用 ISOMITTED,你可以让整列的公式保持 100% 一致。你不是在为某一行破坏公式——你是在教公式如何处理不同的情况。
实际用例 1:定义一个常量回退值
在不破坏你的数学的情况下处理可选修饰符
ISOMITTED 允许函数在辅助列中未提供特定修饰符时,使用硬编码的默认值进行计算。
场景:您表格中的大多数项目使用标准的8%税率。然而,对于第二行的人体工学鼠标,您需要在TaxOverride列中使用10%的税率。
首先,在 名称管理器 中创建一个名为 AddTax 的 新名称,并在 引用位置 字段中输入以下公式:
=LAMBDA(price, [rate], IF(OR(ISOMITTED(rate), rate=""), price * 1.08, price * (1 + rate)))这告诉 Excel,如果 rate 参数缺失或指向一个空单元格,则将价格乘以 1.08 以应用 8% 的税率增加。如果提供了具体的税率,Excel 则使用自定义的 price * (1 + rate)。
然后,在“总计”列的第一个单元格中,输入此公式并按 Enter 键:
=AddTax([@Price], [@TaxOverride])- [@Price] 告诉你的自定义函数使用哪个值作为计算的起点。
- [@TaxOverride] 告诉你的函数去哪里查找自定义税率。如果此单元格为空,你在 AddTax 函数中构建的 OR(ISOMITTED...) 逻辑会自动触发 1.08 的回退值。
对于机械键盘,TaxOverride 单元格是空的。公式会检测到这个空白,OR 检查返回 TRUE,然后自动应用乘数。然而,对于符合人体工学的鼠标,你在 TaxOverride 列中输入了 10%(0.1),所以公式会看到这个值,OR 检查返回 FALSE,然后切换到你指定的覆盖计算:65.00 * (1 + 0.1)。
使用 ISOMITTED 意味着你不必调整单独的行:名称管理器会自动处理所有逻辑,保持你的列一致。它还可以保持你的电子表格整洁:嵌套的 IF 语句不会占用单元格和公式栏,复杂性会整齐地隐藏在自定义函数中。
真实世界用例 2:不同行为的逻辑分支
根据缺失数据更改函数的返回值
虽然第一个例子使用 ISOMITTED 在数学题中交换数字,但你也可以用它在两个完全不同的结果之间进行选择,例如静态日期与计算日期。
场景: 通常,物品会在其完成日期发货。然而,对于复杂订单,你需要在 BufferOverride 列中添加额外的缓冲天数。具体来说,处理超宽显示器订单需要额外五天。
要设置此项,在 名称管理器 中,使用以下逻辑定义一个名为 GetShipDate 的自定义函数:
=LAMBDA(c_date, [buffer], IF(OR(ISOMITTED(buffer), buffer=""), c_date, c_date + buffer))
这里,你在说,‘如果缓冲区缺失或单元格为空,只给我完成日期。但如果那个单元格有数字,就把那些天数加到日期上。’
接下来,移到 ShipDate 列并输入此公式:
=GetShipDate([@CompletionDate], [@BufferOverride])- [@CompletionDate] 作为该函数的起点。
- [@BufferOverride] 作为触发器。如果 GetShipDate 函数发现此单元格为空,它只会重复完成日期。然而,如果它看到一个数字,它就会进行加法运算。
对于 USB-C 集线器,BufferOverride 单元格是空的。公式检测到缺失情况,OR 检查返回 TRUE,函数只是返回原始的 CompletionDate。但对于超宽显示器,公式看到输入为 5,OR 检查返回 FALSE,然后它切换到发货计算:5 月 18 日 + 5 天。
当然,你可以直接输入 =[@CompletionDate]+[@BufferOverride],现在它可以工作。但随着你的运输规则变得更复杂,在多个场景中保持逻辑一致会变得棘手。通过使用带有 ISOMITTED 的 LAMBDA,你可以将所有逻辑集中在一个地方,安全地处理可选调整,并让更新变得像在 名称管理器中编辑函数一样简单。这是为了一个可靠、一致且易于维护的工作簿而进行的小额前期投入。
在 Excel 中排查 ISOMITTED 问题
修复常见错误
如果你的函数没有按预期运行,请查看此表以快速修复:
错误 | 原因 | 修复 |
|---|---|---|
默认返回空白或零 | “空白单元格”陷阱:你将公式指向了一个空单元格,但在逻辑中没有考虑到它。 | ISOMITTED 只有在参数实际缺失时才会触发。使用 OR(ISOMITTED(x), x="") 来捕捉表格中的空单元格。 |
#值! | 语法错误: Excel 无法识别您的可选参数。 | 确保你在名称管理器中将参数名称用方括号括起来(比如 [rate])。 |
#NAME? | 版本错误:Excel 无法识别 ISOMITTED。 | 确保您使用的是 Microsoft 365 版 Excel、Excel 2024、网页版 Excel,以及最新版本的 Excel 移动和平板应用程序。 |
通过掌握 ISOMITTED,你可以超越死板的“全有或全无”公式,获得构建能够在标准默认值和自定义覆盖之间灵活切换的适应性工具的能力。而且你不应止步于此——其他 LAMBDA 辅助函数,包括五个专门的迭代器和累加器,使你能够轻松处理复杂数组。最终,了解如何使用 LAMBDA 及其相关函数是将 Excel 作为真正的编程语言而不仅仅是电子表格软件使用的最快途径。













