根据单元格的颜色拆分行并解构逗号分隔的字符串

时间:2019-03-11 16:52:52

标签: google-apps-script google-sheets

我需要根据“颜色”单元格值拆分两行。每个逗号分隔的值都应生成一个新行。

Google表格链接:https://docs.google.com/spreadsheets/d/1rwtSxDn_gf60xy0w63mp8Dj4bMUH9tNKJjtnsbqGzTw/edit?usp=sharing

该公式应从A5:C6行创建E5:G8行。

该公式应可用于任意数量的行。

enter image description here

1 个答案:

答案 0 :(得分:0)

我不太了解公式,但是可以编写脚本,所以我做到了。此代码读取左列,然后写入右列。如果工作表格式更改,则需要更改代码。将此函数复制/粘贴到脚本中,然后运行test函数。如果可行,可以从自定义菜单运行,而不必使用公式。如果不起作用,请在此处粘贴错误,然后尝试调试。

function test() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // 5th row to start, 1st col to start, sheet.getLastRow()-4 is the num of rows to read, 3 cols to read
  // [ row, row ... ]
  var left = sheet.getRange(5, 1, sheet.getLastRow() - 4, 3).getValues();
  // filter empty rows
  left = left.filter(function(row) {
    return row.every(function(el) {
      return el != '';
    });
  });
  // hold rows to insert
  // will be [ row, row... ]
  var right = [];
  // for each row create row to insert right
  left.forEach(function(row) {
    var item = row[0];
    var colors = row[1].split(',');
    var price = row[2];
    colors.forEach(function(c) {
      // create row, [item, color, price]
      right.push([item, c, price]);
    });
  });
  // insert rows to right
  // 5th row to start, 5th col to start, right.length is the num of rows to insert, 3 cols to write
  sheet.getRange(5, 5, right.length, 3).setValues(right);
}