引用两个Excel文档 – 使用多列input确定值

我正在试图简化这个。 比方说,我有下面的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是一个主人,拥有更多的信息,如描述,数字,这些是不相关的这个职位。 我只是想解释,所以这不是一个明显的解决scheme,只是将其添加到第一个电子表格。 这两份文件必须保持分开。

我希望表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 

如果一个解决scheme在这里不是很容易描述的话,也许是一些指导。 理想情况下,我希望表1的第四列自动填充而不用做任何事情,但是VBmacros一定是可行的。 我应该导入到Microsoft Access并使用它? 只要寻求一些指导和解决scheme,如果有人有任何想法。 我被告知VLOOKUP会非常复杂。

**编辑当我读这篇文章的时候,我发现了更多的误解(我敢肯定,因为我是社区的新手,表2中的“(如果…)”部分是为了引用不是数据的一部分,我想说的是,如果组合是表1的D列,那么表1中的D列应该显示苹果,因为另一个电子表格文件说等于等于苹果,这是否澄清?为任何困惑道歉。我修改了这个问题,希望能更好地澄清这个问题。

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

 =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公式input(即按Ctrl-Shift-Enter以“input”公式),然后将其复制到单元格D2和D3。

很显然,对表单的引用可以更改为引用您正在使用的任何工作簿中的表单,也可以调整单元格引用以适应表单中数据的位置。


我强烈build议你不要使用公式(我只是创build它来certificate我可以,因为我不经常使用INDEXMATCH ,尤其是CSE公式),而是考虑重新格式化数据(if可能的),这样它的格式就更容易计算了。

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

在这里输入图像说明

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

在这里输入图像说明

在表1中的G2中,可以使用这个数组公式(用CTRL + SHIFT + ENTERinput)

=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错误意味着你没有这个组合。 你可以在Index/Match周围包装IfError()来返回… say =IfError([formula above],"No such combination")