我找到了一种手动方法,可以使用以下几个步骤和公式将单元格与格式合并:
以下YouTube视频示例:
Sheet2在这里:
How to Merge cells horizontally with formatting in Google Sheets?
=IFS(AND(C1="",D1=""),"$",AND(C1<>"",D1=""),C1&"#",AND(C1="",D1<>""),D1&"*")
文字正好是
$
—>将背景颜色设置为白色
文本包含:
#
—>将背景色设置为红色
文本包含:
*
—>将背景颜色设置为绿色
=RIGHT(E1:E,1)="$"
—>将背景颜色设置为白色
=RIGHT(E1:E,1)="#"
—>将背景色设置为红色
=RIGHT(E1:E,1)="*"
—>将背景颜色设置为绿色
在范围F1:F33中删除“ $”,“#”和“ *”。
如何通过脚本使过程更简单和自动化? 可能用更少的步骤?
非常感谢您的帮助和想法!
编辑:
回答建议的答案
我的问题有何不同?
如果我的理解正确,那么.mergeAcross()
操作将合并单元格,以仅将左列单元格(列A)的左上内容保留在输出单元格中(合并结果)。
在我的情况下,合并2个单元格并将右列单元格的内容保留在合并结果中将无效。
例如:
当A1
为空(A1=""
)并且B1
不为空(B1<>""
/ B1=1
)时,输出单元格返回B1
内容(C1
返回"1"
)。
而且,它似乎也没有解决格式化所需的条件。
例如:
如果A1=""
和B1<>""
/ B1=1
,并且B1
单元格背景为红色,则返回B1
内容和格式在输出单元格中({{ 1}}返回C1
和1
)。
但是非常感谢您提出有关red as cell background color
行动的建议。我不知道,知道它确实很有价值。
答案 0 :(得分:2)
如果我的理解是正确的,那么该示例脚本如何?该脚本的流程如下。
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
的功能。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。