引用两个Excel文档 - 使用多列输入确定值

时间:2016-12-19 23:24:06

标签: excel excel-vba excel-formula vba

我正在努力简化这一点。我们假设我有以下Excel表格(两者都是单独的文件)。

表1(csv用于列的参考 - 但文件不是CSV格式)

X52519, description1, vendor, Blue, Hard, Square    
X73849, Description2, vendorTwo, Red, Soft, Round    
X63825, Description3, vendorThree, Red, Hard, Fruit
X49582, Description4, vendorFive, Blue, Hard, Fruit

表2(用于参考列的csv样式)

Blue, Hard, Square, Lego
Blue, Hard, Round, Hula-Hoop
Red, Soft, Round, ball
Red, Hard, Fruit, apple
Orange, Soft, Fruit, Orange
Green, soft, small, Pea

我希望表1的末尾有一个公式列,并根据结果显示表2的值。在现实生活中,表1和表2有许多不同的列,并且更复杂,但应该参考。表2是一个主人,并拥有更多信息,如描述,数字等与此帖无关。我只是想解释一下,将它添加到第一个电子表格中并不是一个明显的解决方案。这两份文件必须分开。

我希望表1的最终结果如下所示: 表1(6栏)

X52519, description1, vendor, Blue, Hard, Square, Lego    
X73849, Description2, vendorTwo, Red, Soft, Round, Ball    
X63825, Description3, vendorThree, Red, Hard, Fruit, Apple
X49582, Description4, vendorFive, Blue, Hard, Fruit, Does Not Exist 

如果解决方案在这里不易描述,可能需要一些指导。理想情况下,我希望表1的第四列自动填充而不做任何事情,但VB宏肯定是可行的。我应该导入Microsoft Access并使用它吗?如果有人有任何想法,只需寻找一些指导和解决方案。我被告知VLOOKUP会非常复杂。

**编辑 当我读到这篇文章时,我发现了更多的误解(我确信所有这一切都是因为我是社区的新手。"(如果......)"表2中的部分仅供参考,并不是数据的一部分。我试图说,如果表1中的组合是等等,等等,表1的D列应该显示苹果,因为另一个电子表格文件说是等等等等这意味着苹果。这是否澄清?我为任何困惑道歉。我修改了这个问题,希望能更好地澄清这一点。

2 个答案:

答案 0 :(得分:1)

假设您的表1位于名为Sheet1的工作表上,而您的表2位于名为Sheet2的工作表上,并且两个表都在其各自工作表的单元格A1中开始,则单元格D1中的公式为将生成您要查找的值的工作表Sheet1可以是:

=TRIM(LEFT(INDEX(Sheet2!$A$1:$A$3,(MATCH($A1&", "&$B1&", "&$C1&")",MID(Sheet2!$A$1:$A$3,FIND("(If ",Sheet2!$A$1:$A$3)+4,999),0))),FIND(" ",INDEX(Sheet2!$A$1:$A$3,(MATCH($A1&", "&$B1&", "&$C1&")",MID(Sheet2!$A$1:$A$3,FIND("(If ",Sheet2!$A$1:$A$3)+4,999),0))))-1))

该公式需要作为CSE公式输入(即按Ctrl-Shift-Enter键输入"输入"公式),然后将其复制到单元格D2和D3。

显然,可以更改对工作表的引用,以便在您使用的任何工作簿中引用工作表,并且还可以调整单元格引用以适合工作表中数据的位置。

我强烈建议你不要使用公式(我只创建它以证明我可以,因为我不经常使用INDEXMATCH,尤其是CSE公式),而是考虑重新格式化您的数据(如果可能),以便它采用更有利于更容易计算的格式。

答案 1 :(得分:0)

好的,如果您的Table1看起来像这样:

enter image description here

然后你的Table2看起来像这样:

enter image description here

在Table1的G2中,您可以使用此数组公式(意思是,输入 CTRL + SHIFT + ENTER

=INDEX(Table2!$D$1:$D$6,MATCH(Table1!D1&Table1!E1&Table1!F1,Table2!$A$1:$A$6&Table2!$B$1:$B$6&Table2!$C$1:$C$6,0))

然后向下拖动。

#N/A错误表示您没有这种组合。你可以在IfError()周围包裹Index/Match以返回一些内容......说=IfError([formula above],"No such combination")