我有一个问题可以(我相信)只能通过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列将是跨行返回报告的位置。
答案 0 :(得分:1)
我制作了一个使用额外三列的方法,它对我有用。 我使用了您上面提供的数据。
在左侧添加三列。
=COUNTIFS($D$2:$D2,D2,$E$2:$E2,E2)
。=SUMIFS($A$2:$A2,$A$2:$A2,1,$D$2:D2,D2)
。=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)