Excel 2013 VLOOKUP()基于多个条件,检索多行

我有一个问题,可以(我相信)只是由Excel的解决,可能不会要求VBA(我可能是错的)。 我相信它可以通过嵌套函数来解决,但我尝试过的公式没有奏效。

这是我的数据:

Name Report # Name Mark Doe ReportXXX Mark Doe Connie Doe ReportYYY Connie Doe Debbie Doe REPORTYYY Debbie Doe Valerie Doe FSMVALTR1 Valerie Doe Jeff Doe FSMVALTR1 Jeff Doe Andy Doe RAZXYBCA1 Andy Doe Ryan Doe RAZXYBCA1 Ryan Doe Andy Doe RAZ111111 Jill Doe Ryan Doe RAZ222112 Amanda Doe 

这个列表在第一个NAME和REPORT#列中约有4000行。 在第二个NAME列中,我有~160行。

第二个名称列标识实际使用报告的所有用户,没有重复。 这两个名称和报告#列有很多重复的内容,因为用户可以访问多个报告,并且其中许多是用于不同目的的相同报告。 由于第二个NAME列的行数非常less,所以名称并不匹配,可以在两个NAME列的底部附近观察到。

我需要做的是有一个VLOOKUP标识两个列中的名称,然后返回每个人可以跨行访问的报表编号(横向),而不是列向下。 它还需要识别大量的报告,因为个人可以访问1-15个报告中的任何一个,从第二个报告开始,等等。

理想情况下,它看起来像这样:

 Name Report # Name ex column ex column ex column Mark Doe ReportXXX Mark Doe ReportXXX ReportAAA ReportB 

我没有列出其他报告“Mark Doe”可以访问,而且这些报告将会在〜4000这个长列表中的某个地方,并且他的名字会在第一个NAME列中重复多次,但是第二个“unique”列名称会在哪里返回报告,跨行。

我做了一个方法,使用额外的三列,它为我工作。 我使用了上面提供的数据。

在左侧添加三列。

  • 在A2中input=COUNTIFS($D$2:$D2,D2,$E$2:$E2,E2)
  • 在B2中input=SUMIFS($A$2:$A2,$A$2:$A2,1,$D$2:D2,D2)
  • 在C2中input=D2&B2

现在复制这些单元格到你所有的4000行。

现在在第二个名字列的旁边添加从1开始的列标题到尽可能多的报告,你认为可以是最多一个用户可以拥有的(你说15)。

现在在F2 =IFERROR(VLOOKUP($F2&G$1, your table array starting from column C as absolute/fixed ,3,FALSE),"")input这个vlookup =IFERROR(VLOOKUP($F2&G$1, your table array starting from column C as absolute/fixed ,3,FALSE),"")在我的情况下它是=IFERROR(VLOOKUP($F2&G$1,$C$2:$E$11,3,FALSE),"")

将具有数字标题的所有列复制公式,并将第二个名称列中具有名称的所有行复制(160)。

你的表单看起来像这个图像

所有最好的让我知道,如果它为你工作。

你有没有探索使用数据透视表的选项?

输出结果如下所示:

在这里输入图像说明

使用像这样的数据透视表设置:

在这里输入图像说明

这个方法会使视图变得更清晰,因为你现在的方法看起来要重复4000次(每个报告和名称组合一次)。 希望这适用于你所需要的。