答案 0 :(得分:0)
这是一个很好的脑筋急转弯,所以我试了一下:
=AGGREGATE
一起使用,它希望: =AGGREGATE(15,3,(($A$2:$C$5<>"")/($A$2:$C$5<>""))*COLUMN($A$2:$C$5),ROWS($A$2:A2))
L
列中。其次,我们需要使用`= COUNTIFS()函数来知道每个项目的行号。公式如下: =COUNTIFS(INDIRECT("L2:L"&ROW()),L2)+1
到目前为止,我们的结果如下图所示:
=ADDRESS(K2,L2,4,1)
=INDIRECT()
来返回值,如下所示: =INDIRECT(ADDRESS(K2,L2,4,1)
=INDEX()
和列索引号(如下所示)来获得该结果: =INDEX($A$1:$C$5;1;L2)
E:F
列中获得结果(这似乎很困难),但是电话E2
:
=INDEX($A$1:$C$5,1;AGGREGATE(15,3,(($A$2:$C$5<>"")/($A$2:$C$5<>""))*COLUMN($A$2:$C$5),ROWS($A$2:A2)))
电话F2
:
=INDIRECT(ADDRESS(COUNTIFS(INDIRECT("E2:E"&ROW()),E2)+1,AGGREGATE(15,3,(($A$2:$C$5<>"")/($A$2:$C$5<>""))*COLUMN($A$2:$C$5),ROWS($A$2:A2)),4,1))
=IFERROR()
函数来捕获错误。但是更有效的方法是通过查看我们是否需要进行计算来防止计算如此长的函数。我们可以使用一些技巧来查看与值的数量相比正在使用的行数。如果小于或等于,则需要进行计算。公式如下: =IF(ROWS($D$2:D2)<=COUNTA($A$2:$C$5),...Do our calculation.....,"")
在最终公式中添加以下内容:
E2
:
=IF(ROWS($D$2:D2)<=COUNTA($A$2:$C$5),INDEX($A$1:$C$5,1;AGGREGATE(15,3,(($A$2:$C$5<>"")/($A$2:$C$5<>""))*COLUMN($A$2:$C$5),ROWS($A$2:A2))),"")
F2
:
=IF(ROWS($D$2:D2)<=COUNTA($A$2:$C$5),INDIRECT(ADDRESS(COUNTIFS(INDIRECT("E2:E"&ROW()),E2)+1,AGGREGATE(15,3,(($A$2:$C$5<>"")/($A$2:$C$5<>""))*COLUMN($A$2:$C$5),ROWS($A$2:A2)),4,1)),"")