我的数据如下所示:
我想将它转换成这样的东西:
我通常会在这种情况下使用VLOOKUP或HLOOKUP,但我有多个用户查看相同的演示文稿,因此这些选项不起作用,因为它们只返回第一个实例而不返回任何后续实例。任何帮助表示赞赏。
答案 0 :(得分:1)
您可以使用countifs()
执行此操作,
例如,您可以将转换单元格添加到G2
:=COUNTIFS($B:$B,$F2,$A:$A,G$1)+COUNTIFS($C:$C,$F2,$A:$A,G$1)+COUNTIFS($D:$D,$F2,$A:$A,G$1)
您需要针对您想要的每一列扩展+countifs()
,例如,您的示例中目前有三个,因此需要三个countifs()
然后你需要改变这是你想要的话:
(假设“如何在上表中使用excel在单元格G2
=IF(G3=1,G$2,"")
将这样做:
这不是最具扩展性的解决方案(如果您的审稿人数量过多,但无论审稿人姓名的数量如何,它都能正常运作。
此外,=IF(G3=1,G$2,"")
可以合并到整个解决方案中,但最好将它展开以显示工作情况。
答案 1 :(得分:1)
使用数组公式可以很容易地完成此操作,如下图所示:
G2中的公式是:
=IFERROR(INDEX($A:$A,SMALL(IF(($B$2:$B$6=$F2)+($C$2:$C$6=$F2)+($D$2:$D$6=$F2),ROW($A$2:$A$6)),G$1)),"")
这是一个数组公式,必须用 ctrl + shift + 输入确认!
从那里,你可以随处复制它;)
答案 2 :(得分:1)
你也可以尝试这个数组公式:可以扩展到任意数量的列: -
=IFERROR(INDEX($A:$A,SMALL(IF($B$2:$D$4=$F2,ROW($B$2:$D$4)),COLUMNS($A:A))),"")
假设原始列表在A1中开始,新列表在F1中开始。
必须使用 Ctrl Shift 输入
这个想法是IF语句建立了一个TRUE和FALSE的二维数组,例如:对于鲍勃: -
TRUE FALSE FALSE
TRUE FALSE FALSE
FALSE FALSE FALSE
如果结果为true,则从IF语句的第二部分获取相应的行号: -
2
3
4
给
2 FALSE FALSE
3 FALSE FALSE
FALSE FALSE FALSE
关于使用IF语句的要点是当条件不为真时它给出FALSE,这被SMALL函数忽略 - 如果你只是将这些值相乘,你会得到一些零,数组中的最小值会总是零。
然后它所要做的就是使用SMALL和列($ A:A)选择这些元素的最小,第二小等等 - 这从1开始并在拉过时等到2,3等。
结果用作A列的索引以进行演示。当公式被拉过时,它会给出下一个演示文稿,直到它出错并显示一个空单元格。