首页 > 解决方案 > 如何从连字符分隔的列表中提取文本,单元格内可能有新行(因此有多个条目)?

问题描述

我有一个包含足球赛程的列,主队和客队用连字符隔开。一个单元内可能有多个固定装置,这些将由单元内的新行完成。

我想做的是将主队和客队分成新的单元。我可以做主队:

=LEFT(B2, SEARCH("-",B2,1)-1)

但这并没有考虑单元格内的新行。

我怎样才能从一个单元格中获取主队和客队(包括在新行上的条目)?

演示:https ://docs.google.com/spreadsheets/d/1GVnW6JQLNUuZaEDU9uRq2JezCM8-myKT064OlJk9kPU/edit?usp=sharing

标签: google-apps-scriptgoogle-sheets

解决方案


样本公式:

=ARRAYFORMULA( TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(FILTER(A2:A&char(10),A2:A<>""),,2^99),char(10))),"-")))

结果:

Sevilla     Sociedad
Leicester   Newcastle
Napoli      Brescia
Leicester   Newcastle
Leicester   Newcastle
Napoli      Brescia

每个团队在一个单独的单元格中


示例公式#2:

=FILTER(REGEXEXTRACT(A2:A,REPT("([^-\n]*) [-v]s? ([^-\n]*)\n?",1+LEN(A2:A)-LEN(SUBSTITUTE(A2:A,char(10),)))),A2:A<>"")

结果:

Sevilla     Sociedad                
Leicester   Newcastle               
Napoli      Brescia     Leicester   Newcastle       
Leicester   Newcastle   Napoli      Brescia Espanyol    Valladolid
Napoli      Brescia     Leicester   Newcastle   

相应行的团队


示例公式#3

=FILTER(SPLIT(REGEXREPLACE(A2:A, REPT("([^-\n]*) [-v]s? ([^-\n]*)\n?",1+LEN(A2:A)-LEN(SUBSTITUTE(A2:A,char(10),))), VLOOKUP(1+LEN(A2:A)-LEN(SUBSTITUTE(A2:A,char(10),)),E2:F4,2,)),"-"),A2:A<>"")

在此处输入图像描述 该公式使用辅助表:

1    $1-$2
2    $1
     $3-$2
     $4"
3    $1
     $3
     $5-$2
     $4
     $6

此帮助表是正则表达式替换:$1, $2, $3...要返回的团队编号。


推荐阅读