为什么这样做?探索VLOOKUP公式

时间:2013-07-21 22:00:37

标签: excel excel-formula excel-2010

我有一个包含4列的excel 2010电子表格。

A栏:我销售的产品的UPC代码列表。大约300行。

B栏:公式(稍后会详细介绍)

C列:另一个UPC代码列表。这些UPC代码约为10,000行。

D栏:与C栏中的UPC代码相对应的库存盘点。

公式:

=VLOOKUP(A2,C:D,2,FALSE)

我的想法是将我的UPC代码与供应商的UPC代码相匹配,以检索相应的库存数量。

所有数据都已粘贴到其他电子表格的新电子表格中,并仅作为粘贴,以确保未导入其他字符或格式。

此公式被拖累了所有300行。

我在B列收到错误#N / A,直到我在A列的值之前插入了以下字符:

'

注意:通过单击单元格并在上面的框中键入',手动插入了'

完成此操作后,#N / A将立即更改为从D列检索到的相应库存。

我的问题是为什么这有效?为什么没有'的方法不起作用?有没有办法在A列中的所有值之前快速添加'?注意:CONCATENATE(“'”,A2)由于某种原因不起作用。

2 个答案:

答案 0 :(得分:3)

raphael你已经在那里了 - 你的号码作为文本存储在一个查找表中,而另一个作为数字存储。添加'到每一行将修复它,但这是非常可怕的任务。单击绿色箭头也可以修复它,但是excels默认方法对于大表来说真的很慢(而且它也会改变你的源数据,这对我来说是禁止的,因为当你更新数据时,你必须再来一遍)。在这种情况下,更改格式很少有用。

如果表中包含数字且查找值为number-stored-as-text,则可以将查找值乘以1:

=VLOOKUP(A2*1,C:D,2,FALSE)

如果表中包含“text”且查找值为number,则可以将其转换为如下文本:

=VLOOKUP(TEXT(A1,0),C:D,2,FALSE)

答案 1 :(得分:0)

这是我的理论。在VLOOKUP中,如果查找值(A2)小于查找表(C:D)中的最小值,则返回N / A.当您在引号(')前面加上A2时,不是数字。因此,例如,1002的UPC不再被视为数字一千二,而是字符串序列一零零二。这使得VLOOKUP能够以不同的方式进行比较并避免使用N / A.

您可以在A栏中尝试Ctrl-1,然后将其全部视为文本。