我在 A 列中有员工姓名,在 B 列中有员工 ID,在 C 列中有 A 列中的员工 ID。
我需要运行一个公式来将 C 列中的员工 ID 匹配到 B 列,并且 A 列中的员工姓名应该匹配/排序输出。
例如:如果 D 列的输出为 2,3,1,2,则必须相应地匹配名称。请帮忙提供公式。
Column A Column B(EMp Id) Column C (Employee Id)
Patrick 1 4
George 2 1
Bunny 3 2
Serge 4 3
答案1
答案2
答案3
或者我更喜欢使用VLOOKUP()
:制作VLOOKUP()
“向左看” (人们经常读到它不能做...)。
=VLOOKUP(C1,INDEX($A$1:$B$4,ROW($A$1:$B$4),{2,1}),2,FALSE)
标准VLOOKUP()
,除了第二个参数指定要使用的范围。
对于要使用的范围,INDEX()
采用包含两列的范围,并按照 columns 参数指定的顺序提取这两列。在本例中,即“数组常量”,{2,1}
它首先提取两列中的第二列,然后提取两列中的第一列,从而有效地创建一个两列查找表,其中查找列位于首位,因此所需的值位于其右侧。
一个包含 300 列的表格的工作就像提取所需的两列一样简单(可能是“{288,43}”阻碍了它们,没关系,它们可以是任意两列,大概编号较低的列是第二列。人们可能会认为如果它先出现,就没有什么理由去担心,但人们仍然可能喜欢,因为公式中只处理两列,而不是我的例子中的全部 300 列。
Rajesh Sinha
与方法相比,我更喜欢它,因为它让VLOOKUP()
我们向左看,而且看起来更直接。
(考虑到它的易用性以及结果的无趣性,根本没有理由使用带有该方法的方法,CHOOSE()
而且如果选择多个列的话,它偶尔会出现奇怪的现象。)
当然,到XLOOKUP()
现在 (2021 年),它可以处理的大多数事情都已经得到更好的处理,尽管XLOOKUP()
在提出这个问题时,它可能不会被普遍使用:
=XLOOKUP(C1:C4,B1:B4,A1:A4)
谈论“直截了当”!
顺便说一下,INDEX()
形成查找范围的技巧与类似HLOOKUP()
,只需使用数组常量来表示行,而不是列。
(此外,这并不是一成不变的,只是我的经验和偶尔的实验,当我有了一个想法时,我VLOOKUP()
似乎不喜欢同时使用“奇数”寻址来查找查找值和提取结果的列。因此,如果使用一系列单元格作为查找值进行查找,则只能指定一列来提取结果。或者,如果使用数组常量作为要从中提取结果的列,它会拒绝除查找值的单个值/单元格之外的任何内容。但是,这两个事实都不会影响INDEX()
以这种方式使用。)