首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从连字符分隔的列表中提取文本,同时在单元格中可能出现新的行(例如多个条目)?

如何从连字符分隔的列表中提取文本,同时在单元格中可能出现新的行(例如多个条目)?
EN

Stack Overflow用户
提问于 2019-10-02 08:51:20
回答 2查看 66关注 0票数 1

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

我想要做的是把主场和客场的球队分成新的小组。我可以做主队的有:

代码语言:javascript
运行
复制
=LEFT(B2, SEARCH("-",B2,1)-1)

但这并没有考虑到细胞内的新线路。

我如何才能从一个单元格(包括在新行上的条目)中获得主队和客场队?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 10:52:21

您可以使用一些AppsScript代码来帮助您!

创建一个新的AppsScript文件并粘贴此代码:

代码语言:javascript
运行
复制
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()函数。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2019-10-02 14:29:42

样本公式:

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

结果:

代码语言:javascript
运行
复制
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<>"")

结果:

代码语言:javascript
运行
复制
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<>"")

该公式使用助手表:

代码语言:javascript
运行
复制
1    $1-$2
2    $1
     $3-$2
     $4"
3    $1
     $3
     $5-$2
     $4
     $6

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58198229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档