如何用Excel公式对比两列并提取非#N/A的单元格值?
Excel提取两列中非#N/A值的公式方案
问题场景
现有Excel表格中A列和B列存在部分#N/A值,需要提取两列中非#N/A的单元格值,得到C列的预期输出,示例如下:
| A | B | C | |
|---|---|---|---|
| 1 | ID 1 | ID 2 | Expected Output |
| 2 | 0011Q00001xC8a7QAC | #N/A | 0011Q00001xC8a7QAC |
| 3 | 0011Q00001xC8aTQAS | #N/A | 0011Q00001xC8aTQAS |
| 4 | #N/A | 0011Q00001xxxFFFQr | 0011Q00001xxxFFFQr |
| 5 | #N/A | 0011Q00001xxxFFFQz | 0011Q00001xxxFFFQz |
尝试过IF、IFS函数未达成预期,可接受先将#N/A替换为其他值,寻求可行公式。
解决方案
方案1:直接处理#N/A(无需替换)
使用IFNA函数自动跳过#N/A值,在C2单元格输入公式后下拉填充:
=IFNA(A2, B2)
逻辑:若A2不是#N/A则返回A2的值,否则返回B2的值,完全匹配需求。
方案2:替换#N/A为空白后处理
先将#N/A替换为空白(选中A、B列,按Ctrl+H,查找内容输入#N/A,替换框留空,点击「全部替换」),再用以下任一公式:
- 基础判断写法:
=IF(A2<>"", A2, B2) - 简洁取值写法(Excel 2019及以后版本支持):
=COALESCE(A2, B2)
COALESCE会返回参数列表中第一个非空的值,适合多列取有效值的场景。
方案3:兼容旧版Excel的写法
若使用Excel 2016及更早版本,无IFNA和COALESCE函数,可通过ISNA判断实现:
=IF(ISNA(A2), B2, A2)
逻辑:判断A2是否为#N/A,是则取B2,否则取A2。
内容的提问来源于stack exchange,提问作者user26501860
相关产品推荐
相关产品推荐

