我正在使用Excel跟踪团队游戏,在该游戏中,玩家分为团队和团队内的子团队。一个子团队中的每个球员都获得一定数量的分数,我想为每个球员提供一个摘要字符串,并向同一子团队中的其他球员得分。
示例:
A B C D
PLAYER TEAM SUBTEAM POINTS
Alice Red 1 70
Bob Red 1 20
Charlie Red 1 10
Dave Red 2 70
Erin Red 2 30
Frank Blue 1 55
Grace Blue 1 45
我想要的输出如下:
A B C D E
PLAYER TEAM SUBTEAM POINTS SUMMARY
Alice Red 1 70 Bob:20, Charlie:10
Bob Red 1 20 Alice:70, Charlie:10
Charlie Red 1 10 Alice:70, Bob:20
Dave Red 2 70 Erin:30
Erin Red 2 30 Dave:70
Frank Blue 1 55 Grace:45
Grace Blue 1 45 Frank:55
我能走的最远的是数组公式中CONCATENATE,INDEX和MATCH的组合:
{=CONCATENATE(INDEX($A$2:$A$8,MATCH(1,(C2=$C$2:$C$8)*(B2=$B$2:$B$8),0)), ":", INDEX($D$2:$D$8,MATCH(1,(C2=$C$2:$C$8)*(B2=$B$2:$B$8),0)))}
不幸的是,这只是输出子团队中第一个玩家的摘要:
A B C D E
PLAYER TEAM SUBTEAM POINTS SUMMARY
Alice Red 1 70 Alice:70
Bob Red 1 20 Alice:70
Charlie Red 1 10 Alice:70
Dave Red 2 70 Dave:70
Erin Red 2 30 Dave:70
Frank Blue 1 55 Grace:45
Grace Blue 1 45 Grace:45
我现在需要做的是:
想法赞赏!
答案 0 :(得分:2)
我整理了一个帮助者专栏,将每个玩家/点数和TEXTJOIN for xl2010/xl2013 with criteria中的TEXTJOINIFS连接起来,以获得所需的结果。
答案 1 :(得分:2)
不幸的是,Excel(Excel 2016之前的版本)无法方便地联接文本。最好的办法(如果要避免使用VBA)是使用一些辅助单元并将此“摘要”拆分为单独的单元。
请参见下面的示例。单元格E4
中的数组公式被拖到单元格J10
中。
= IFERROR(INDEX($A$4:$D$10,MATCH(SMALL(IF(($B$4:$B$10=$B4)*($C$4:$C$10=$C4)*($A$4:$A$10<>$A4),
ROW($A$4:$A$10)),E$3),ROW($A$4:$A$10),0),MATCH(E$2,$A$1:$D$1,0)),"")
请注意,这是一个数组公式,因此必须按 Ctrl + Shift + Enter 而不是仅按 Enter 键入此公式后。
当然,在此示例中,我假设3个玩家。单靠公式不能满足您对任意数量玩家的要求,但是您可以根据需要将“摘要”部分向右扩展。
如果您确实想要,甚至可以将“摘要”行串联起来以形成单个单元格,例如像这样:
= CONCATENATE(E4,": ",F4,", ",...)