自动选择、复制、查找、复制粘贴

自动选择、复制、查找、复制粘贴

我正在处理两张 Excel 表。第一张表包含 300 个程序名称,每行一个,另外还有 2 列,包含版本号和额外信息。第二张表非常相似,但有大约 100 行,有 2 列,其中包含的信息与第一张表不同。

例子:

Adobe Premiere,6.0.2,视频编辑软件

这些项目中约有 50 个按名称匹配(它们都位于工作表 1 和 2 中),我想将工作表 2 中所有匹配项目的额外信息导入到工作表 1 中,放在现有信息旁边。这意味着 50 行左右有 2 个附加列,而工作表 2 中约有一半未匹配。

手动操作意味着从工作表 2 复制姓名,在工作表 1 中找到匹配项,然后从工作表 2 复制 2 列并将它们粘贴到工作表 1 中的相应位置。我希望有更好的方法来做到这一点。有人知道方法吗?

任何帮助都将受到赞赏。

答案1

VLOOKUP您可以通过使用和的组合来实现您的要求IFERROR:在第一个工作表中输入以下公式并替换第二个工作簿和工作表的名称:

=IFERROR(VLOOKUP(A2,'[Workbook2Name.xlsx]Sheetname'!$A:$C,2,0),"")

这应该会返回匹配条目的第二列(假设数据存储在 AC 列中)。

答案2

虽然我可能误解了你的问题,但我理解你的意思是你想从 Sheet2 中的两列返回数据。如果是这样的话,@Peter 的公式就不太适用了。这是因为 VLOOKUP 只会从一列返回数据。

以下公式可以完成此工作。为了便于说明,我假设 Sheet1 中的程序名称以单元格 A2 开头,而 Sheet2 中的数据位于单元格 G2:I11 中。

  =IFERROR(OFFSET(Sheet2!$G$2,MATCH(A2,Sheet2!$G$2:$G$11,0)-1,1,1,2),"-")

这是一个数组公式。要输入它,您需要突出显示 Sheet1 中的单元格 B2:B3,输入公式,确保使用 CONTROL-SHIFT-ENTER 组合键完成输入。然后,您需要将其复制到 Sheet1 中的数据末尾。

它的工作原理是使用 MATCH 查找 Sheet1 中的程序名称与 Sheet2 中的程序名称匹配的行(相对于 Sheet2 中的第一个数据单元格)。然后使用 OFFSET 返回 Sheet2 中相应的两个数据单元格。

正如@Peter所说,如果第二张工作表位于另一个工作簿中,则需要在对该工作表的引用前面加上工作簿名称,如果该工作表的名称不是默认名称,则还需要在公式中使用工作表名称,结果如下:

  =IFERROR(OFFSET('[Workbook2Name.xlsx]Sheet2name'!$G$2,MATCH(A2,'[Workbook2Name.xlsx]Sheet2name'!$G$2:$G$11,0)-1,1,1,2),"-").

答案3

VLOOKUP()可以返回多个列。

一种是使用 Excel 所称的array constant。它们采用 的形式,{2,3}以作为您所需的示例。

您确实需要指出另一张表的名称,但其他两个答案都涵盖了这一点。一个简单的版本,就好像两组信息都在同一页上(可能在 A1:A300 和 N1:P100 中,并希望扩充后者),看起来如下:

=IFERROR(VLOOKUP(N1,$A1:$A100,{2,3},FALSE),"")

您使用是{2,3}因为您想要查找范围的第 2 列和第 3 列。

将其复制到 Q1:Q100 中,N1 引用将更改为与行匹配。此时 Q1:Q100 将突出显示,但 R 列也将被填充。如果同意公式结果永久保留,则可以在此处停止。如果希望将其转换为数据,没有公式,可以扩展突出显示两列,复制,然后仅粘贴特殊粘贴值。如果进一步希望看起来为空的单元格确实是空的,可以保持它们突出显示并按Ctrl-GGoTo 并选择“特殊”GoTo,即选择空单元格。完成后,可以按 Delete,它们将再次真正变为空。

(当然,可以通过反转参考选择以另一种方式获取数据。)

VLOOKUP()绝对可以返回多列的值!

相关内容