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

时间:2016-03-09 14:55:16

标签: excel vba excel-vba

我有一个问题可以(我相信)只能通过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列的行数很少,因此名称不能完全匹配,这可以在两个NAME列的底部附近观察到。

我需要做的是使用VLOOKUP标识两个列中的名称,然后返回每个人可以跨行(水平)访问的报告编号,而不是列。它还需要I.D.大量报告,因为个人可以访问1-15个报告,从第二个开始,依次提取前一个报告。

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

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

我没有列出“Mark Doe”可以访问的其他报告,这些报告将在〜4000的长列表中,以及他的名字在第一个NAME列中重复多次,但第二个“独特” name列将是跨行返回报告的位置。

2 个答案:

答案 0 :(得分:1)

我制作了一个使用额外三列的方法,它对我有用。 我使用了您上面提供的数据。

在左侧添加三列。

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

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

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

现在在F2 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)中具有名称的所有行。

your sheet shuld look something like this image

如果它对您有用,请告诉我。

答案 1 :(得分:0)

您是否研究过使用数据透视表的选项?

输出如下:

enter image description here

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

enter image description here

此方法可以提供更清晰的视图,因为您当前的方法看起来重复约4,000次(每个报告和名称组合一次)。希望这适用于您所需要的。