我有一个列,其中包含足球比赛,主队和客队之间用连字符隔开。一个单元内可能有多个固定装置,这将由单元内的一个新行来完成。
我想要做的是把主场和客场的球队分成新的小组。我可以做主队的有:
=LEFT(B2, SEARCH("-",B2,1)-1)
但这并没有考虑到细胞内的新线路。
我如何才能从一个单元格(包括在新行上的条目)中获得主队和客场队?
演示:https://docs.google.com/spreadsheets/d/1GVnW6JQLNUuZaEDU9uRq2JezCM8-myKT064OlJk9kPU/edit?usp=sharing
发布于 2019-10-02 10:52:21
您可以使用一些AppsScript代码来帮助您!
创建一个新的AppsScript文件并粘贴此代码:
function splitTeams(cellData) {
return cellData.split('-');
}
function hasOddIndex(item, index) {
return index%2==0;
}
function hasEvenIndex(item, index) {
return index%2!=0;
}
function getHomeTeams(cellData) {
var homeTeams = [];
homeTeams = splitTeams(cellData).filter(hasOddIndex);
return homeTeams.join('\n');
}
function getAwayTeams(cellData) {
var awayTeams = [];
awayTeams = splitTeams(cellData).filter(hasEvenIndex);
return awayTeams.join('\n');
}
现在,您可以在电子表格中使用=getHomeTeams()
和=getAwayTeam()
函数。
希望这能有所帮助!
发布于 2019-10-02 14:29:42
样本公式:
=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...
是要返回的团队编号。
https://stackoverflow.com/questions/58198229
复制相似问题