我需要根据“颜色”单元格值拆分两行。每个逗号分隔的值都应生成一个新行。
Google表格链接:https://docs.google.com/spreadsheets/d/1rwtSxDn_gf60xy0w63mp8Dj4bMUH9tNKJjtnsbqGzTw/edit?usp=sharing
该公式应从A5:C6行创建E5:G8行。
该公式应可用于任意数量的行。
答案 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);
}