匹配单元格中的多个逗号分隔值

匹配单元格中的多个逗号分隔值

根据前两列的值,我需要填充第三列(用黄色标记)。

图像

如果不使用 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"}
  )
)}

相关内容