Підсумовуйте дані на основі кольору комірок у Google Spreadsheets


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
@domen так, є: 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


Я отримую помилку Діапазон не знайдено ???? : ((
Kegham K.

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