1

我正在尝试在 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. 将数据粘贴到 B 列。

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

当我使用此代码时,会从 D 列中提取不正确的值。B4 和 B5 应该只从 D4 中提取值。仅限 D5 的 B6 和 B7。

有什么建议么?

4

3 回答 3

1

您的公式中有三个问题:

  1. 第一个查找范围不完整$C$1:$C$,应该是$C$1:$C$7.
  2. 您没有使用匹配类型,额外的逗号会留下错误。
  3. 您没有指定查找是完全匹配还是近似匹配。默认情况下,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/AIFERROR则将返回"Error"。否则,它将从VLOOKUP.

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

于 2013-12-19T18:44:37.193 回答
0

看起来这不会导致您的示例出现问题,但您可能希望指定查找时需要完全匹配。为此,您可以在MATCHVLOOKUP公式中添加“,0”。像这样:

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

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

于 2013-11-13T02:30:12.770 回答
0

我测试了你的公式,它有效。我只替换$C$1:$C$,$C$1:$C$7,(这对你来说还可以吗?)

在此处输入图像描述

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

如果这个假设是正确的,并且错误在其他地方,你能指定从 D 列中提取了哪些不正确的值吗?

于 2013-11-13T01:54:38.620 回答