将INDEX / MATCH与多个条件和多个匹配项相结合

时间:2018-09-05 10:32:33

标签: excel excel-formula

我正在使用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

我现在需要做的是:

  1. 不包括摘要玩家(我不希望Alice进入摘要的爱丽丝,只希望Bob和Charlie出现)
  2. 使其可用于多种比赛(每个子团队中可以有任意数量的球员)
  3. 让CONCATENATE使用未知数量的琴弦(由于如上所述,每个子团队中可以有任意数量的玩家)。

想法赞赏!

2 个答案:

答案 0 :(得分:2)

我整理了一个帮助者专栏,将每个玩家/点数和TEXTJOIN for xl2010/xl2013 with criteria中的TEXTJOINIFS连接起来,以获得所需的结果。

enter image description here

答案 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 键入此公式后。

enter image description here

当然,在此示例中,我假设3个玩家。单靠公式不能满足您对任意数量玩家的要求,但是您可以根据需要将“摘要”部分向右扩展。

如果您确实想要,甚至可以将“摘要”行串联起来以形成单个单元格,例如像这样:

= CONCATENATE(E4,": ",F4,", ",...)