根据前两列的值,我需要填充第三列(用黄色标记)。
如果不使用 VB 可以实现这样的事情吗?
答案1
编辑:
如果总是有四支球队,两支获胜球队和两支失败球队,那么有一个相对简单的解决方案:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&",",LEFT(B1,FIND(",",B1)),""),MID(B1,FIND(",",B1)+1,LEN(B1))&",","")&",",",,","")
是的,只需使用数组公式即可实现。不过这并不简单。
以下是适用于任意数量的参与者和获胜团队的通用解决方案:
数组中输入(Ctrl++ )以下公式并将Shift其复制粘贴/填充到表格列的其余部分(不要忘记删除 and ):EnterC2
{
}
{=
TEXTJOIN(
",",
TRUE,
IF(
MMULT(
--(
TRIM(MID(SUBSTITUTE(A2&",",",",REPT(" ",LEN(A2)+1)),(ROW(INDEX(C:C,1):INDEX(C:C,(LEN(A2)+1)/2))-1)*(LEN(A2)+1)+1,LEN(A2)+1))
=TRANSPOSE(TRIM(MID(SUBSTITUTE(B2&",",",",REPT(" ",LEN(B2)+1)),(ROW(INDEX(D:D,1):INDEX(D:D,(LEN(B2)+1)/2))-1)*(LEN(B2)+1)+1,LEN(B2)+1)))
),
ROW(INDEX(C:C,1):INDEX(C:C,1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))
),
"",
TRIM(MID(SUBSTITUTE(A2&",",",",REPT(" ",LEN(A2)+1)),(ROW(INDEX(C:C,1):INDEX(C:C,(LEN(A2)+1)/2))-1)*(LEN(A2)+1)+1,LEN(A2)+1))
)
)}
请注意,TEXTJOIN()
仅在 Excel 2016 中可用。在早期版本的 Excel 中,需要 poly-fill UDF。(请参阅这个帖子为一个基本的。
解释:
即将推出
不过,就目前而言,希望以下部分评估版本的公式C2
可能会有所帮助:
{=
TEXTJOIN(
",",
TRUE,
IF(
MMULT(
--(
{"A";"B";"C";"D"}
={"A","C"}
),
{1;2}
),
"",
{"A";"B";"C";"D"}
)
)}