如何在 Google 工作表中水平合并 Cells/Columns 格式?

How to Merge Cells/Columns Horizontally With Formatting in Google Sheets?

我找到了一种手动合并单元格的方法,使用以下几个步骤和公式设置格式:

以下 Youtube 视频示例:

https://youtu.be/0dP8AVTx9wA

这里的 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=1B1 单元格背景为红色,return B1 中的内容和格式输出单元格(C1 return 1red as cell background color)。

但非常感谢有关 .mergeAcross() 操作的建议。我不知道它,但知道它确实很有价值。

  • 您想使用 Google Apps 脚本实现以下情况。
    • 您想通过合并列 "C" 和 "D".
    • 的值和格式来获得列 "H"

如果我的理解是正确的,这个示例脚本怎么样?该脚本的流程如下

  1. 从 "C" 和 "D" 列中检索值和背景颜色。
  2. 循环合并检索到的值和背景颜色。
  3. 输入值和背景颜色。

示例脚本:

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"列的两个单元格都有值时,将输入空值。如果要修改这个,请修改脚本。
  • 此示例脚本适用于您共享的电子表格。如果你想将它用于其他情况,需要修改这个脚本。请注意这一点。

参考文献:

如果我误解了您的问题,这不是您想要的结果,我深表歉意。