当单元格在列中具有相同值时如何合并单元格(GOOGLE 脚本)
How to MERGE cells when cells are having same value in a column (GOOGLE SCRIPT)
如何在单元格具有相同值时合并列中的单元格
脚本 1:仅合并 B:B 列中的单元格(Ver/Hor = center/center)
脚本 2:合并 B:B 列和 E:E 列中的单元格(Ver/Hor = center/center)
Sample Here
此致,
我相信你的目标如下。
当列方向连续存在相同的值时,想将“B”列和“E”列的单元格合并到垂直方向。以下示例情况图片来自您的问题。
您想使用 Google Apps 脚本实现此目的。
在这种情况下,我想提出以下示例脚本。
示例脚本:
在使用此脚本之前,请设置columns
和sheetName
的变量。以下示例脚本合并了“Shet1”的列“B”和“E”。
function myFunction() {
const columns = [2, 5]; // These column numbers are the columns "B" and "E". This is from your question.
const sheetName = "Sheet1"; // Please set the sheetname.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const [,...values] = sheet.getDataRange().getValues();
values[0]
.map((_, i) => values.map(e => e[i]))
.forEach((col, i) => {
if (!columns.includes(i + 1)) return;
let temp = {};
col.forEach((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] + 2, i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});
}
参考文献:
已添加:
关于您的以下附加问题,
The script is perfect. How to modify the script if I want to start at row# 7?
修改以上脚本后,变成如下
示例脚本:
function myFunction() {
const columns = [2, 5]; // These column numbers are the columns "B" and "E". This is from your question.
const sheetName = "Sheet1"; // Please set the sheetname.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const [,,,,,,...values] = sheet.getDataRange().getValues();
values[0]
.map((_, i) => values.map(e => e[i]))
.forEach((col, i) => {
if (!columns.includes(i + 1)) return;
let temp = {};
col.forEach((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] + 7, i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});
}
如何在单元格具有相同值时合并列中的单元格
脚本 1:仅合并 B:B 列中的单元格(Ver/Hor = center/center)
脚本 2:合并 B:B 列和 E:E 列中的单元格(Ver/Hor = center/center)
Sample Here
此致,
我相信你的目标如下。
当列方向连续存在相同的值时,想将“B”列和“E”列的单元格合并到垂直方向。以下示例情况图片来自您的问题。
您想使用 Google Apps 脚本实现此目的。
在这种情况下,我想提出以下示例脚本。
示例脚本:
在使用此脚本之前,请设置columns
和sheetName
的变量。以下示例脚本合并了“Shet1”的列“B”和“E”。
function myFunction() {
const columns = [2, 5]; // These column numbers are the columns "B" and "E". This is from your question.
const sheetName = "Sheet1"; // Please set the sheetname.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const [,...values] = sheet.getDataRange().getValues();
values[0]
.map((_, i) => values.map(e => e[i]))
.forEach((col, i) => {
if (!columns.includes(i + 1)) return;
let temp = {};
col.forEach((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] + 2, i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});
}
参考文献:
已添加:
关于您的以下附加问题,
The script is perfect. How to modify the script if I want to start at row# 7?
修改以上脚本后,变成如下
示例脚本:
function myFunction() {
const columns = [2, 5]; // These column numbers are the columns "B" and "E". This is from your question.
const sheetName = "Sheet1"; // Please set the sheetname.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const [,,,,,,...values] = sheet.getDataRange().getValues();
values[0]
.map((_, i) => values.map(e => e[i]))
.forEach((col, i) => {
if (!columns.includes(i + 1)) return;
let temp = {};
col.forEach((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] + 7, i + 1, (j - temp[row]) + 1, 1).merge();
temp = {};
}
});
});
}