Суммарные данные по цвету ячеек в таблицах Google


14

Я видел этот вопрос, и хотя я сталкиваюсь с той же проблемой, ответ на этот вопрос не полезен для моего случая.

У меня есть большие таблицы, которые часто меняются. Таким образом, в соответствии с решением, принятым для этого вопроса, трудно дублировать все заполненные столбцы, и каждый раз, когда я хочу внести изменения в цвета фона ячеек, сложно редактировать еще одну ячейку.

Разве нет способа суммировать данные на основе условия, касающегося цвета фона ячейки в таблицах Google?

Ответы:


14

Посмотрите, поможет ли мой ответ на подобный вопрос .

Обновить:

Мое представление для галереи скриптов Документов Google было принято, и вы можете установить его, чтобы получить желаемую функциональность.

Шаги:

  • Откройте свою таблицу
  • В меню выберите Сервис -> Галерея скриптов ...
  • Поиск суммы по цвету
  • Нажмите Установить
  • Нажмите кнопку Авторизоваться , если вы доверяете сценарию, а затем Закрыть
  • вернуться к таблице

Теперь у вас есть три дополнительные функции, которые вы можете использовать в формуле таблицы:

  • sumWhereBackgroundColorIs(color, rangeSpecification)
  • sumWhereBackgroundColorIsNot(color, rangeSpecification)
  • getBackgroundColor(rangeSpecification)

Пожалуйста, от того, что rangeSpecificationпараметры требуют кавычек ( ") вокруг них.

Например:

=sumWhereBackgroundColorIs("white", "A1:C4")

суммирует значения всех ячеек в диапазоне A1: C4, которые имеют белый фон.

Обратите внимание, что если вы не знаете цвет определенной ячейки, вы можете использовать предоставленную getBackgroundColorфункцию, чтобы узнать, какой это цвет. Эта функция необходима, потому что некоторые цвета выражаются в виде кодов RGB (например, #00ff00вместо green).


2
Не getBackgroundColor()рекомендуется. Возможно, вы можете обновить код?
Джейкоб Ян Туинстра

2
@JacobJanTuinstra Я обновил код, но Google требуется некоторое время, чтобы просмотреть мою заявку. А пока вы можете использовать этот код
Кристиан Лупаску

2
@ Домен да, есть: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . Не очень красивое решение, но оно работает.
Кристиан Лупаску

2
Галерея скриптов была заменена надстройками. Я не могу найти "сумма по цвету" под надстройками. Нужно ли добавлять свой скрипт в дополнения, чтобы он был там доступен?
Джефф Локхарт

3
@ w0lf Новые таблицы Google, похоже, больше не поддерживают галерею скриптов. Он перенаправляет с сообщением на новые дополнения. Редактор сценариев все еще доступен, и я использовал ваш код там. Я сделал форк и добавил поддержку пропуска пустых (не числовых) ячеек в сумме (в противном случае возникает ошибка, если в диапазоне существуют пустые ячейки): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Джефф Локхарт,

2

Вот как я получил это на работу:

  1. Открыть Tools>Script Editor

  2. Вставьте код ниже, сохраните скрипт

  3. Вернитесь к своей таблице. Используйте =countColoredCells(A1:Z5,C5)где C5ячейка с цветом для подсчета.

Код:

/**
* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
* @return {number}
* @customfunction
*/

function countColoredCells(countRange,colorRef) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formula = activeRange.getFormula();

  var rangeA1Notation = formula.match(/\((.*)\,/).pop().trim();
  var range = activeSheet.getRange(rangeA1Notation);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var colorCellA1Notation = formula.match(/\,(.*)\)/).pop().trim();
  var colorCell = activeSheet.getRange(colorCellA1Notation);
  var color = colorCell.getBackground();

  var count = 0;

  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color )
        count=count+1;
  return count;
};

Код кредитов (изменен): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html


Я получаю ошибку Range Not Found ???? : ((
Кегам К.

я получаюTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Артурино
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.