将 INDEX/MATCH 与多个条件和多个匹配项连接起来
Posted
技术标签:
【中文标题】将 INDEX/MATCH 与多个条件和多个匹配项连接起来【英文标题】:Concatenating INDEX/MATCH with multiple criteria and multiple matches 【发布时间】:2018-09-05 10:32:32 【问题描述】:我正在使用 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
我现在需要做的是:
-
在摘要中排除玩家(我不希望 Alice 在 Alice 的摘要中,而只有 Bob 和 Charlie)
让它适用于多场比赛(每个小队可以有任意数量的球员)
让 CONCATENATE 使用未知数量的字符串(因为如上所述,每个子团队中可以有任意数量的玩家)。
想法赞赏!
【问题讨论】:
CONCATENATE 不会返回数组。您将需要 Excel 2016 函数 CONCAT 或 TEXTJOIN,但我相信这些也需要 Office 365 订阅。否则,您将需要 VBA。 【参考方案1】:我整理了一个辅助列,它将每个玩家/点和来自TEXTJOIN for xl2010/xl2013 with criteria 的 TEXTJOINIFS 连接起来以获得所需的结果。
【讨论】:
看准了!除了按字母顺序之外,还有什么方法可以按列(例如 D 列)对连接的字符串进行专门排序? 要按点排序(即 D 列),您可以反转辅助列;例如70:爱丽丝而不是爱丽丝:70。【参考方案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,", ",...)
【讨论】:
以上是关于将 INDEX/MATCH 与多个条件和多个匹配项连接起来的主要内容,如果未能解决你的问题,请参考以下文章