在Excel中反向滚动数据
我有这样的数据,如下所示:
我想转换它是这样的:
我通常使用VLOOKUP或HLOOKUP这个场景,但是我有多个用户查看相同的表示,所以这些选项不起作用,因为他们只返回第一个实例,而不是任何后续的实例。 任何帮助表示赞赏。
你也可以尝试这个数组公式:可以扩展到任意数量的列:
=IFERROR(INDEX($A:$A,SMALL(IF($B$2:$D$4=$F2,ROW($B$2:$D$4)),COLUMNS($A:A))),"")
假设原始列表在A1中开始,在F1中新的列表。
必须使用Ctrl Shift Enter进行input
这个想法是IF语句为Bob创build了一个TRUE和FALSE的二维数组:
TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
如果结果为真,则从IF语句的第二部分获取相应的行号: –
2 3 4
给
2 FALSE FALSE 3 FALSE FALSE FALSE FALSE FALSE
关于使用IF语句的一点是,当SMALL函数忽略的条件不成立时,它会给出FALSE – 如果只是将这些值相乘,那么会得到一些零,数组中的最小值将始终为零。
然后,所有要做的就是使用小的列($ A:A)select这些元素的最小,次小等等 – 从1开始,到2,3等。
结果被用作列A的索引以给出演示。 当公式被拉过时,它给出下一个表示,直到它出错并显示一个空单元。
你可以使用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,"")
将这样做:
这不是最具可扩展性的解决scheme(如果您的审阅人数太多,但无论审稿人名称的数量如何,都可以工作。
另外, =IF(G3=1,G$2,"")
可以合并到整个解决scheme中,但最好将其分开展示以显示工作。
使用数组公式可以很容易地做到这一点,如下图所示:
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 + Enter确认 !
从那里,你可以复制到任何地方;)