我有两个电子表格 - 一个名为 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中完成此操作?
答案 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
中(再次假设您的数据在A栏中开始),请在B2
中输入公式。
在您解释时,您有点互换了1.xlsx
和2.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,"")