2012-11-02 72 views
2

我正在处理一个excel文件,我试图用vLookUp函数“映射”一些值。找不到错误:VLOOKUP不返回值

vLookUp函数的第一个参数让我很头痛:函数使用某些值(手工输入文本格式)......但不适用于预先生成的值(同样的值...但从ERP系统生成..)。我查了一下,以确定我在寻找“相同的性质”值(文本与文本)......但我无法找出为什么前3个值(用手输入)很好......但最后3个(预生成)给了我一个#N/A错误:它必须是“格式”的差异..但我找不出差别在哪里...

这是使用的公式:= VLOOKUP D1; $ A $ 1:$ B $ 219; 2,FALSE)

The actual file

1008600 379.99  1008600 379.99 
1008601 379.99  1008601 379.99 
1010600 449.99  1010600 449.99 
1010601 449.99  1010601 #N/A 
1013600 489.99  1013600 #N/A 
1014601 509.99  1014601 #N/A 
1015600 569.99   
1018603 679.99   
1019600 809.99   

谢谢!

回答

8

使用这个公式将解决突出问题通过RocketDonkey

=VLOOKUP(TEXT(D1,"#"),$A$1:$B$219,2,FALSE)

+0

这工作...但我仍然不低估为什么。通过ctrl + 1 - > text更改单元格的格式与TEXT(value,“#”)不同。 – user1023021

+2

更改格式并不会实际更改底层数据。您需要在格式更改后强制重新计算数据以进行更改(例如,使用文本到列)。 – nutsch

+1

你也可以连接“”来转换为公式中的文本,就像这样'= VLOOKUP(D1&“”,$ A $ 1:$ B $ 219,2,FALSE)' –

2

问题是,您尚未将列A中的值转换为数字。由于查找范围中的前三个值本身就是字符串,因此它们与字符串化的数字相匹配。

为了解决在列A,按点击其中一个号码按Ctrl + 空间选择整个列,然后点击感叹号和选择Convert to number

enter image description here

之后,您会注意到您之前的值现在显示错误,因此请按照相同的过程将它们转换为数字。 @ nutsch的解决方案不要求您修改数据,因此,如果您的数据的类型并不重要,这是一个很好的修复,以及:)

enter image description here

+0

这工作...但我不明白。我正在比较“字符串”值(文档中所有单元格的CTRL + 1 ..格式 - >“文本”)。如何比较两个字符串值不起作用?将值转换为数字会给我们一个数字VS字符串查找否? – user1023021

+1

@ user1023021从其他来源导入数据时,我经常遇到这种情况 - 通常情况下,即使通过“Ctrl + 1”转换数字也不足以将其强制转换为正确的格式。我最好的猜测是更多的是与数字的底层系统级表示。您也可以选择使用Paste-Special-Multi-by-1技巧,但这种方式更容易一些。 – RocketDonkey

+2

我最喜欢强迫文本编号的方式是将文本转换为列。 Alt A E,Alt + F,你就完成了。 – nutsch

0

这一直是我的一大痛苦,以及(Excel是完全愚蠢的假设)。我所做的是将整个列复制到文本编辑器,更改列以匹配查找列,然后将数据复制并粘贴回列中。这对我来说很好。

0

可能我强调一点值得注意的答复巴里·胡迪尼附带在2012以上:

=VLOOKUP(D1&"",$A$1:$B$219,2,FALSE) 

中真正起作用的(我在Excel 2010中),尽管你是在处理与数字或数字的组合或文本字符串。

对巴里的荣誉,你是一个真正的霍迪尼