Как объединить ячейки / столбцы по горизонтали с форматированием в Google Sheets? - PullRequest
1 голос
/ 17 июня 2019

Я нашел ручной способ объединения ячеек с форматированием, используя следующие несколько шагов и формул:

Пример видео на Youtube ниже:

https://youtu.be/0dP8AVTx9wA

ИЛист 2 здесь:

Как объединить ячейки по горизонтали с форматированием в 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 для слияния ячеек в столбце A, содержащем «Hello», со смежной ячейкой в ​​столбце B

Чем мой вопрос отличается?

Если мое понимание правильное,действие .mergeAcross() работает для слияния ячеек, чтобы сохранить только верхнее левое содержимое ячейки левого столбца (столбец A) в выходной ячейке (объединенный результат).

В моем случае это не сработало бы для слияния2 ячейки и сохраните содержимое ячейки правого столбца в объединенном результате.

Например:

Когда A1 пусто (A1="") и B1 не пусто (B1<>"" / B1=1) имеют содержимое выходной ячейки, возвращающее B1 содержимое (C1 return "1").

Кроме того, оно не соответствует критериям, необходимым для форматирования.

Например:

Если A1="", а B1<>"" / B1=1 и B1, то фон ячейки Red, вернуть B1 содержимое и форматирование в выходной ячейке (C1 return 1 с red as cell background color).

Но большое спасибо за предложение о действии .mergeAcross().Я не знал об этом, и это действительно полезно знать.

1 Ответ

2 голосов
/ 17 июня 2019
  • Вы хотите добиться следующей ситуации, используя Google Apps Script.
    • Вы хотите получить столбец «H» путем слияния значений и форматов столбцов «C» и «D».

enter image description here

Если мое понимание верно, как насчет этого примера сценария? Процесс этого сценария выглядит следующим образом.

  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.
  • В этом сценарии результат помещается в столбец «H» с использованием столбцов «C» и «D» из «Sheet2».

Примечание:

  • В этом сценарии, когда обе ячейки столбца «C» и «D» в одной строке имеют значения, ставится пустое значение. Если вы хотите изменить это, пожалуйста, измените скрипт.
  • Этот пример сценария предназначен для вашей общей электронной таблицы. Если вы хотите использовать это для другой ситуации, этот скрипт необходимо изменить. Пожалуйста, будьте осторожны.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...