根据匹配项在两个Excel电子表格中复制数据

时间:2014-02-13 00:04:34

标签: excel

我有两个电子表格 - 一个名为 1.xlsx ,另一个名为 2.xlsx

在1.xlsx上我有三个工作表 - 我感兴趣的工作表称为“主数据集”。我还有以下专栏

用户名,主机名1,主机名2,Hostname3

2.xlsx 上,我有一个包含以下列的工作表

主机名,登录

我想做的是如下:

如果 1.xlsx 登录列中的值与 2.xlsx <列中 UserID 中的值匹配/ p>

然后复制

1.xlsx 中的主机名 2.xlsx 中的主机名1

如果是第二场比赛(即第二场登录匹配 UserID

然后复制

1.xlsx 中的主机名 2.xlsx 中的主机名2

如果是第三场比赛(即第三次登录匹配的用户ID)

然后复制

1.xlsx 中的主机名 2.xlsx 中的主机名3

忽略任何进一步的比赛。

如何在Excel中完成此操作?

2 个答案:

答案 0 :(得分:2)

这可以在没有VBA的情况下完成,但根据您的数据大小,它会很慢 并且还取决于您的系统 几千次进入可能会导致大量的计算时间。

使用数组公式:

=IFERROR(INDEX([1.xlsx]Sheet1!$A:$A,SMALL(IF([1.xlsx]Sheet1!$B:$B=$A2,ROW([1.xlsx]Sheet1!$B:$B),99^99),COLUMN(A$1))),"")

重要提示: Ctrl + Shift + 输入输入。
我假设您1.xlsx中的数据位于Sheet1,因为您没有提供。

因此,假设1.xlsx中的数据如下所示:

2.xlsx

2.xlsx中(再次假设您的数据在A栏中开始),请在B2中输入公式。

1.xlsx

在您解释时,您有点互换了1.xlsx2.xlsx 所以我不知道哪个是哪个。
我跟着你在What I am trying to do is as follows:之后写的那个。

提示:您可以提供确切的地址,而不是使用$B:$B$A:$A,从而提高公式的计算速度。
希望这对你有所帮助。

答案 1 :(得分:0)

我假设您在2.xlsx中的C,D,E列中添加了Hostname1,Hostname2,Hostname3,将A列保留为Hostname,B保留为Login。将以下代码粘贴到2.xls单元格C2中,然后将其复制到范围内的其余单元格中。

=IF(OFFSET('[1.xlsx]Master Data Set'!B$1,MATCH($B2,'[1.xlsx]Master Data Set'!$A:$A,0)-1,0)=$A2,$A2,"")