我有一个Google工作表,如果值重复则需要合并单元格
期望是将单元格从A1合并到A4,并在其中具有单个值A。
我尝试过,
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
//var values = range.getValues();
var numCols = values[0].length;
values = [
["A", "B", "C", "D", "E"],
["A", "B", "S", "D", "E"],
["A", "D", "C", "D", "E"],
["A", "B", "C", "D", "K"],
["c", "B", "W", "D", "K"],
["A", "B", "C", "D", "E"],
]
for (var j = 0; j < numCols; j++) {
var placer = '';
for (var i = 0; i < values.length - 1; i++) {
if (values[i][j] == values[i + 1][j])
range.getCell(i + 2, j + 1).setValue('');
}
}
答案 0 :(得分:2)
如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
我的示例脚本的流程如下。
// Retrieve values from the active sheet.
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getDataRange().getValues();
// Transpose values.
var res1 = values[0].map(function(_, i) {return values.map(function(e) {return e[i]})});
// Merge cells.
res1.forEach(function(col, i) {
var temp = {};
col.forEach(function(row, j) {
if (row === col[j + 1] && !(row in temp)) {
temp[row] = j;
} else if (row != col[j + 1] && row in temp) {
sheet.getRange(temp[row] + 1, i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
这是the additional question的答案。
// Retrieve values from the active sheet.
var range = SpreadsheetApp.getSelection().getActiveRange();
var sheet = range.getSheet();
var values = range.getValues();
// Transpose values.
var res1 = values[0].map(function(_, i) {return values.map(function(e) {return e[i]})});
// Offset
var r = range.getRow() - 1;
var c = range.getColumn() - 1;
// Merge cells.
res1.forEach(function(col, i) {
var temp = {};
col.forEach(function(row, j) {
if (row === col[j + 1] && !(row in temp) && row != "") {
temp[row] = j;
} else if (row != col[j + 1] && row in temp) {
sheet.getRange(r + temp[row] + 1, c + i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});