Excel 2003:将列A中的值与列B匹配,然后从列B中提取数据

时间:2013-11-12 23:12:49

标签: excel excel-formula excel-2003 vlookup

我正在尝试在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列中的值。

尝试

  1. 在A列中选择一个值
  2. 在C列中匹配此值
  3. 根据C列中的值,从D。
  4. 复制数据
  5. 将数据粘贴到B列。

      =IF(ISERROR(MATCH(A1,$C$1:$C$,)),ERROR,VLOOKUP(A1,$C$1:$D$7,2))
    
  6. 当我使用此代码时,会拉出D列中的错误值。 B4和B5应仅从D4中拉出值。仅来自D5的B6和B7。

    有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您的公式中有三个问题:

  1. 第一个查找范围不完整$C$1:$C$,应为$C$1:$C$7
  2. 您没有使用匹配类型,额外的逗号会出错。
  3. 您没有指定查找是完全匹配还是近似匹配。默认情况下,VLOOKUP使用近似匹配,这就是您收到错误结果的原因。
  4. 以下内容应按照您的意图运作:

    =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/AIFERROR将返回"Error"。否则,它将从VLOOKUP返回您要查找的值。

    它也应该加快速度,因为Excel不必首先检查MATCH,然后评估VLOOKUP

答案 1 :(得分:0)

我测试了你的配方,它有效。我只将$C$1:$C$,替换为$C$1:$C$7,(这看起来对你好吗?)

enter image description here

我猜你在工作表中使用了正确的公式,这只是一个拼写错误,因为在尝试输入错误的公式时会弹出错误。

如果这个假设是正确的,并且错误在其他地方,你可以指定拉出D列的不正确值吗?

答案 2 :(得分:0)

这似乎不会导致您的示例中出现问题,但您可能希望指定查找时需要完全匹配。您可以通过向MATCHVLOOKUP公式添加“,0”来执行此操作。像这样:

=IF(ISERROR(MATCH(A1,$C$1:$C$7,0)),"ERROR",VLOOKUP(A1,$C$1:$D$7,2,0))

编辑:此外,我认为“错误”应该在引号中,因为您似乎希望公式将其打印为消息。 (请注意,如果没有完全匹配要求,原始公式将不会返回此错误,它将找到下一个最接近的结果。)

相关问题