我正在尝试在Excel 2003中编写公式。
情况:
A列对应B列。 C列对应D列。 A列中有多个行与C列中的单个行匹配。
Column A Column B Column C Column D
1 1247 ≥ 98.5% 1247 ≥ 98.5%
2 1250 ≥ 99.9% 1250 ≥ 99.9%
3 1258 ≥ 99.9% 1258 ≥ 99.9%
4 1341 ≥ 99% 1341 ≥ 98%
5 1341 ≥ 99% 1349 ≥ 99%
6 1349 ≥ 60% 1376 ≥ 99%
7 1349 ≥ 60% 1644 ≥ 60%
问题
我需要D列中的值来替换B列中的值。
尝试
将数据粘贴到B列。
=IF(ISERROR(MATCH(A1,$C$1:$C$,)),ERROR,VLOOKUP(A1,$C$1:$D$7,2))
当我使用此代码时,会拉出D列中的错误值。 B4和B5应仅从D4中拉出值。仅来自D5的B6和B7。
有什么建议吗?
答案 0 :(得分:1)
您的公式中有三个问题:
$C$1:$C$
,应为$C$1:$C$7
。VLOOKUP
使用近似匹配,这就是您收到错误结果的原因。以下内容应按照您的意图运作:
=IF(ISERROR(MATCH(A1,$C$1:$C$7,0)),ERROR,VLOOKUP(A1,$C$1:$D$7,2,0))
但是,您可以使用IFERROR
缩短公式:
=IFERROR(VLOOKUP(A1, $C:$D, 2, 0), "Error")
如果你需要查看大量值,那么无论如何都需要花费很多时间,所以这就是我删除行限制的原因。 IFERROR
将首先尝试评估VLOOKUP
,如果它返回#N/A
,IFERROR
将返回"Error"
。否则,它将从VLOOKUP
返回您要查找的值。
它也应该加快速度,因为Excel不必首先检查MATCH
,然后评估VLOOKUP
。
答案 1 :(得分:0)
我测试了你的配方,它有效。我只将$C$1:$C$,
替换为$C$1:$C$7,
(这看起来对你好吗?)
我猜你在工作表中使用了正确的公式,这只是一个拼写错误,因为在尝试输入错误的公式时会弹出错误。
如果这个假设是正确的,并且错误在其他地方,你可以指定拉出D列的不正确值吗?
答案 2 :(得分:0)
这似乎不会导致您的示例中出现问题,但您可能希望指定查找时需要完全匹配。您可以通过向MATCH
和VLOOKUP
公式添加“,0”来执行此操作。像这样:
=IF(ISERROR(MATCH(A1,$C$1:$C$7,0)),"ERROR",VLOOKUP(A1,$C$1:$D$7,2,0))
编辑:此外,我认为“错误”应该在引号中,因为您似乎希望公式将其打印为消息。 (请注意,如果没有完全匹配要求,原始公式将不会返回此错误,它将找到下一个最接近的结果。)