【问题标题】:Split column on first delimiter and output before and after delimiter gs script在第一个分隔符上拆分列并在分隔符 gs 脚本之前和之后输出
【发布时间】:2018-06-14 14:01:03
【问题描述】:

对此非常陌生

单元格数据如下:

colx
aa, bbb
oue, hed, ono
hud

需要变成:

colx              coly     colz
aa, bbb           aa       bbb
oue, hed, ono     oue      hed, ono
hud               hud

我需要在其第一个分隔符上拆分一列,然后将第一部分(第一个分隔符之前的所有内容)回发到原始列右侧的下一列中,然后回发字符串的其余部分(之后的所有内容)第一个分隔符)到原始列右侧的第二列

我在这里找到了 SplitTheString 函数: How do I split a string, breaking at a particular character?

我知道我的代码不工作,不知道如何修复它,尤其是如何输出数据

谢谢

function splitColumn() {
 var range =getColRng("Elements","colx", 2)
 var values = range.getValues());

  for (var row in values[0]) {
      values[row][0] == SplitTheString(ResultStr);) 

 }
 range.setValues(values);
 }

辅助函数:

 function SplitTheString(ResultStr) {
     if (ResultStr != null) {
         var SplitChars = ', ';
         if (ResultStr.indexOf(SplitChars) >= 0) {
            var DtlStr = ResultStr.split(SplitChars);
            var name  = DtlStr[0];
            var street = DtlStr[1];
        }
    }
}

function getColRng(shtName, cheader,startrow) {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
 var lc = sheet.getMaxColumns();
 var lr = sheet.getLastRow();
 var hn = HTN(shtName,cheader)
 return sheet.getRange(startrow, hn, lr);
}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    下面的示例脚本怎么样?此脚本假设 A 列中有数据。

    示例脚本:

    function splitColumn() {
      var ss = SpreadsheetApp.getActiveSheet()
      var range = ss.getRange(1, 1, ss.getLastRow(), 1);
      var values = range.getValues();
      var result = [];
      for (var i in values) {
        if (i == 0) {
          result.push([values[i][0], "coly", "colz"]);
        } else {
          var splitted = values[i][0].split(",");
          var others = splitted.slice(1, splitted.length).join(",");
          result.push([values[i][0], splitted[0], others]);
        }
      }
      ss.getRange(ss.getLastRow()+1, 1, result.length, result[0].length).setValues(result);
    }
    

    输入:

    输出:

    如果我误解了你的问题,请告诉我。我要修改。

    编辑:

    function splitColumn() {
      var ss = SpreadsheetApp.getActiveSheet();
      var range = ss.getRange(2, 1, ss.getLastRow(), 1);
      var values = range.getValues();
      var result = [];
      for (var i in values) {
        if (values[i][0]) {
          var splitted = values[i][0].split(",");
          var others = splitted.slice(1, splitted.length).join(",");
          result.push([splitted[0], others]);
        } else {
          result.push(["",""]);
        }
      }
      ss.getRange(2, 2, result.length, result[0].length).setValues(result);
    }
    

    【讨论】:

    • 田池,谢谢。这就是我所追求的,但是当我运行这个注意到发生时,代码运行但没有发生分裂这里是谷歌表docs.google.com/spreadsheets/d/…
    • @Tim 很抱歉给您带来不便。并感谢您提供的示例电子表格。通过您共享的电子表格,我更新了我的答案。请确认。
    • 田池,效果很好!!。谢谢,非常感谢
    • @Tim 欢迎。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2012-02-06
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多