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

求助:数组公式中忽略空白或#N/A单元格的实现方法

解决Excel中忽略错误/空白单元格,返回最小差值对应A列内容的公式

旧版Excel(需数组输入)

如果你的Excel版本不支持动态数组(如Excel 2019及更早),可使用以下数组公式(输入后需按Ctrl+Alt+Shift三键确认,不能直接回车):

=INDEX(A1:A6,MATCH(MIN(IF((NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))),ABS(C1:C6-D1:D6),9^99)),IF((NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))),ABS(C1:C6-D1:D6),9^99),0))

公式说明:

  • (NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))):通过逻辑与(*)筛选出C、D列既不为#N/A也不为空白的行,符合条件的位置返回1,否则返回0。
  • IF(...,ABS(C1:C6-D1:D6),9^99):仅对符合条件的行计算两列差值的绝对值,不符合条件的行返回极大值9^99(确保不会被MIN选中)。
  • MIN(...):从有效差值中找出最小值。
  • MATCH(...):在处理后的差值数组中定位最小值的首次出现位置。
  • INDEX(A1:A6,...):根据位置返回A列对应的内容。

新版Excel(支持动态数组,如365/2021)

如果使用支持动态数组的Excel版本,推荐用更简洁的公式,无需手动数组输入:

方案1:XLOOKUP直接实现

=XLOOKUP(MIN(IF((NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))),ABS(C1:C6-D1:D6),9^99)),IF((NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))),ABS(C1:C6-D1:D6),9^99),A1:A6)

方案2:用LET函数提升可读性

通过LET定义中间变量,让公式逻辑更清晰:

=LET(
    有效行数据, FILTER(A1:A6, (NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))), ""),
    有效差值, FILTER(ABS(C1:C6-D1:D6), (NOT(ISNA(C1:C6)))*(NOT(ISNA(D1:D6)))*(NOT(ISBLANK(C1:C6)))*(NOT(ISBLANK(D1:D6))), ""),
    XLOOKUP(MIN(有效差值), 有效差值, 有效行数据)
)

注意事项:

  • 如果存在多个行的差值同为最小值,公式会返回第一个出现的对应A列内容。
  • 9^99可替换为其他足够大的数值,只要不会与实际业务中的差值冲突即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:10:17