如何在 Google 工作表中水平合并 Cells/Columns 格式?
How to Merge Cells/Columns Horizontally With Formatting in Google Sheets?
我找到了一种手动合并单元格的方法,使用以下几个步骤和公式设置格式:
以下 Youtube 视频示例:
这里的 Sheet2:
How to Merge cells horizontally with formatting in Google Sheets?
条件格式E列(范围E1:E33):
=IFS(AND(C1="",D1=""),"$",AND(C1<>"",D1=""),C1&"#",AND(C1="",D1<>""),D1&"*")
文字完全是:
$
—> 将背景颜色设置为白色
文本包含:
#
—> 将背景颜色设置为红色
文本包含:
*
—> 将背景颜色设置为绿色
条件格式列F(范围F1:F33):
=RIGHT(E1:E,1)="$"
—> 将背景颜色设置为白色
=RIGHT(E1:E,1)="#"
—> 将背景颜色设置为红色
=RIGHT(E1:E,1)="*"
—> 将背景颜色设置为绿色
删除 F1:F33 范围内的“$”、“#”和“*”。
我的问题是:
如何使用脚本使流程更简单和自动化?
可能步骤更少?
非常感谢您的帮助和想法!
编辑:
正在回答建议的答案
Google Spreadsheet script to merge cells in column A containing 'Hello' with the adjacent cell in column B
我的问题有何不同?
如果我的理解正确,.mergeAcross()
操作用于合并单元格以仅将左列单元格(A 列)的左上角内容保留到输出单元格(合并结果)中。
在我的例子中,合并 2 个单元格并将右列单元格的内容保留到合并结果中是行不通的。
例如:
当 A1
为空 (A1=""
) 并且 B1
不为空 (B1<>""
/ B1=1
) 时,输出单元格 return B1
内容(C1
return "1"
).
它似乎也没有解决格式化所需的标准。
例如:
如果A1=""
、B1<>""
/ B1=1
、B1
单元格背景为红色,return B1
中的内容和格式输出单元格(C1
return 1
和 red as cell background color
)。
但非常感谢有关 .mergeAcross()
操作的建议。我不知道它,但知道它确实很有价值。
- 您想使用 Google Apps 脚本实现以下情况。
- 您想通过合并列 "C" 和 "D".
的值和格式来获得列 "H"
如果我的理解是正确的,这个示例脚本怎么样?该脚本的流程如下
- 从 "C" 和 "D" 列中检索值和背景颜色。
- 循环合并检索到的值和背景颜色。
- 输入值和背景颜色。
示例脚本:
function myFunction() {
var destColumn = "H"; // Please set the destination column.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var range = sheet.getRange("C1:D" + sheet.getLastRow());
var values = range.getValues();
var backgrounds = range.getBackgrounds();
var obj = values.reduce(function(o, e, i) {
if (e[0] && !e[1]) {
o.values.push([e[0]]);
o.backgrounds.push([backgrounds[i][0]]);
} else if (!e[0] && e[1]) {
o.values.push([e[1]]);
o.backgrounds.push([backgrounds[i][1]]);
} else {
o.values.push([""]);
o.backgrounds.push([""]);
}
return o;
}, {values: [], backgrounds: []});
var destRange = sheet.getRange(destColumn + "1:" + destColumn + sheet.getLastRow());
destRange.setValues(obj.values);
destRange.setBackgrounds(obj.backgrounds);
}
- 当您使用此脚本时,请将其复制并粘贴到共享电子表格的脚本编辑器中。以及运行
myFunction
. 的功能
- 在此脚本中,使用 "Sheet2" 的 "C" 和 "D" 列将结果放入 "H" 列。
注:
- 在这个脚本中,当同一行的"C"和"D"列的两个单元格都有值时,将输入空值。如果要修改这个,请修改脚本。
- 此示例脚本适用于您共享的电子表格。如果你想将它用于其他情况,需要修改这个脚本。请注意这一点。
参考文献:
如果我误解了您的问题,这不是您想要的结果,我深表歉意。
我找到了一种手动合并单元格的方法,使用以下几个步骤和公式设置格式:
以下 Youtube 视频示例:
这里的 Sheet2:
How to Merge cells horizontally with formatting in Google Sheets?
条件格式E列(范围E1:E33):
=IFS(AND(C1="",D1=""),"$",AND(C1<>"",D1=""),C1&"#",AND(C1="",D1<>""),D1&"*")
文字完全是:
$
—> 将背景颜色设置为白色
文本包含:
#
—> 将背景颜色设置为红色
文本包含:
*
—> 将背景颜色设置为绿色
条件格式列F(范围F1:F33):
=RIGHT(E1:E,1)="$"
—> 将背景颜色设置为白色
=RIGHT(E1:E,1)="#"
—> 将背景颜色设置为红色
=RIGHT(E1:E,1)="*"
—> 将背景颜色设置为绿色
删除 F1:F33 范围内的“$”、“#”和“*”。
我的问题是:
如何使用脚本使流程更简单和自动化? 可能步骤更少?
非常感谢您的帮助和想法!
编辑:
正在回答建议的答案
Google Spreadsheet script to merge cells in column A containing 'Hello' with the adjacent cell in column B
我的问题有何不同?
如果我的理解正确,.mergeAcross()
操作用于合并单元格以仅将左列单元格(A 列)的左上角内容保留到输出单元格(合并结果)中。
在我的例子中,合并 2 个单元格并将右列单元格的内容保留到合并结果中是行不通的。
例如:
当 A1
为空 (A1=""
) 并且 B1
不为空 (B1<>""
/ B1=1
) 时,输出单元格 return B1
内容(C1
return "1"
).
它似乎也没有解决格式化所需的标准。
例如:
如果A1=""
、B1<>""
/ B1=1
、B1
单元格背景为红色,return B1
中的内容和格式输出单元格(C1
return 1
和 red as cell background color
)。
但非常感谢有关 .mergeAcross()
操作的建议。我不知道它,但知道它确实很有价值。
- 您想使用 Google Apps 脚本实现以下情况。
- 您想通过合并列 "C" 和 "D". 的值和格式来获得列 "H"
如果我的理解是正确的,这个示例脚本怎么样?该脚本的流程如下
- 从 "C" 和 "D" 列中检索值和背景颜色。
- 循环合并检索到的值和背景颜色。
- 输入值和背景颜色。
示例脚本:
function myFunction() {
var destColumn = "H"; // Please set the destination column.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var range = sheet.getRange("C1:D" + sheet.getLastRow());
var values = range.getValues();
var backgrounds = range.getBackgrounds();
var obj = values.reduce(function(o, e, i) {
if (e[0] && !e[1]) {
o.values.push([e[0]]);
o.backgrounds.push([backgrounds[i][0]]);
} else if (!e[0] && e[1]) {
o.values.push([e[1]]);
o.backgrounds.push([backgrounds[i][1]]);
} else {
o.values.push([""]);
o.backgrounds.push([""]);
}
return o;
}, {values: [], backgrounds: []});
var destRange = sheet.getRange(destColumn + "1:" + destColumn + sheet.getLastRow());
destRange.setValues(obj.values);
destRange.setBackgrounds(obj.backgrounds);
}
- 当您使用此脚本时,请将其复制并粘贴到共享电子表格的脚本编辑器中。以及运行
myFunction
. 的功能
- 在此脚本中,使用 "Sheet2" 的 "C" 和 "D" 列将结果放入 "H" 列。
注:
- 在这个脚本中,当同一行的"C"和"D"列的两个单元格都有值时,将输入空值。如果要修改这个,请修改脚本。
- 此示例脚本适用于您共享的电子表格。如果你想将它用于其他情况,需要修改这个脚本。请注意这一点。
参考文献:
如果我误解了您的问题,这不是您想要的结果,我深表歉意。