【发布时间】:2014-03-27 14:36:00
【问题描述】:
我想使用 vlookup 填充名称列,这是我的事务表
这是我的主文件
是的,它们是相同的数字,但是为什么我的 vlookup 没有根据查找的值返回相应的名称?
vlookup 是否符合数据类型?喜欢文字、数字还是一般?
我一遍又一遍地更改数据类型,并返回相同的“不可用”
我的 excel 2007 有什么问题吗?
【问题讨论】:
我想使用 vlookup 填充名称列,这是我的事务表
这是我的主文件
是的,它们是相同的数字,但是为什么我的 vlookup 没有根据查找的值返回相应的名称?
vlookup 是否符合数据类型?喜欢文字、数字还是一般?
我一遍又一遍地更改数据类型,并返回相同的“不可用”
我的 excel 2007 有什么问题吗?
【问题讨论】:
你应该像这样使用Index/Match:
=INDEX(Phonebook!$A$2:$A$45,MATCH(B2,Phonebook!$B$2:$B$45,0))
您的Vlookup 不起作用,因为它试图在Phonebook!$A$2:$B$45 范围的第一列 中从B2 中查找值,即Phonebook!$A$2:$A$45
【讨论】:
index/match 是做什么的?更新:那么,您是想说我必须将 Phonebook-name 列移到 Phonebook-phone_number 列的右侧吗?
VLOOKUP 非常相似,但更灵活:Match 在Phonebook!$B$2:$B$45 范围内返回B2 的相对位置,Index 获取此位置并从Phonebook!$A$2:$A$45 返回相应的值:
are you trying to say that i have to move the Phonebook-name column to the right side of the Phonebook-phone_number column - 是的,vlookup 总是在目标范围的 first 列中搜索,这就是 Index/Match 方法更灵活的原因 - 您可以在任何列中搜索
问题是VLOOKUP 在第一列中查找电话号码,这意味着在 A 列中。对于“向后查找”,您需要使用 INDEX 和 MATCH:
=INDEX(Phonebook!$A$2:$A$45,MATCH(B2,Phonebook!$B$2:$B$45,0))
INDEX如下:
=INDEX(Range, Row Number, [Column Number])
它将返回范围 Range 中的单元格的值,该单元格位于行号 Row Number 和列 Column Number 上。我将Column Number 放在方括号之间,因为它是可选的(例如,如果您的范围在 A:A 内,则只有 1 列)
要获取行号,您可以像上面一样使用MATCH。它的工作方式有点像VLOOKUP,但它不是返回匹配单元格的值,而是返回匹配单元格的行号(或列号,如果您在水平范围上使用它)。
MATCH(B2,Phonebook!$B$2:$B$45,0) 因此在工作表Phonebook 的B2:B45 范围内查找B2(0 代表完全匹配)并给出行号。
然后,您告诉 Excel 从范围 Phonebook!$A$2:$A$45 中返回单元格的值和从 MATCH 中获得的行号。
【讨论】:
=INDEX(Phonebook!$A$2:$A$542,MATCH(Transaksi!B2,Phonebook!$A$2:$B$752,0))
MATCH 适用于一行或一列。所以,Phonebook!$A$2:$B$752 应该真的是Phonebook!$A$2:$A$752 或Phonebook!$B$2:$B$752,这取决于你可以匹配到哪一列。