Google apps script 如何从一个以连字符分隔的列表中提取文本,并且在一个单元格中可能有新行(因此有多个条目)?

Google apps script 如何从一个以连字符分隔的列表中提取文本,并且在一个单元格中可能有新行(因此有多个条目)?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个专栏,包含主客场球队用连字符分隔的足球比赛。一个单元内可能有多个装置,这些装置将由单元内的新线完成 我想做的是把主客场球队分成新的小组。我可以在主队中使用: =LEFT(B2, SEARCH("-",B2,1)-1) 但这并没有考虑细胞内的新细胞系 我怎样才能从一个牢房里抓到主客场球队(包括新线上的参赛者) 演示:您可以使用一些AppsScript代码来帮助您 并粘贴此代码: function splitTeams(cellData) { return cellData.split

我有一个专栏,包含主客场球队用连字符分隔的足球比赛。一个单元内可能有多个装置,这些装置将由单元内的新线完成

我想做的是把主客场球队分成新的小组。我可以在主队中使用:

=LEFT(B2, SEARCH("-",B2,1)-1)
但这并没有考虑细胞内的新细胞系

我怎样才能从一个牢房里抓到主客场球队(包括新线上的参赛者)


演示:

您可以使用一些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');
}
现在,您可以在电子表格中使用函数
=getHomeTeam()
=getAwayTeam()


希望这有帮助

您可以使用一些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');
}
现在,您可以在电子表格中使用函数
=getHomeTeam()
=getAwayTeam()

希望这有帮助

样品配方:

=数组公式(
修剪(拆分(转置(拆分(查询(过滤器(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(替换(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

=过滤器(拆分)(REGEXREPLACE(A2:A,
报告(([^-\n]*)[-v]s?([^-\n]*)\n?),1+LEN(A2:A)-LEN(替换(A2:A,char(10),),
VLOOKUP(1+LEN(A2:A)-LEN(替换(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…
是要返回的团队编号。

示例公式:

=数组公式(
修剪(拆分(转置(拆分(查询(过滤器(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(替换(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

=过滤器(拆分)(REGEXREPLACE(A2:A,
报告(([^-\n]*)[-v]s?([^-\n]*)\n?),1+LEN(A2:A)-LEN(替换(A2:A,char(10),),
VLOOKUP(1+LEN(A2:A)-LEN(替换(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…
是要返回的团队编号。

Sweet。如何设置同一单元格中的主团队名称,然后再次在同一单元格中渲染?i、 e.第四栏,将那不勒斯和莱斯特放在同一个单元格中。是的,可能的话,请查看编辑。正则表达式的替换是一个棘手的部分,为了简化最终的公式,我制作了一个helper表。如何设置同一单元格中的主团队名称,然后再次在同一单元格中渲染?i、 e.第四栏,将那不勒斯和莱斯特放在同一个单元格中。是的,可能的话,请查看编辑。正则表达式的替换是一个棘手的部分,为了简化最终的公式,我制作了一个helper表。