Sumuj dane na podstawie koloru komórki w arkuszach kalkulacyjnych Google
14
Widziałem to pytanie i chociaż mam ten sam problem, odpowiedź na to pytanie nie jest pomocna w mojej sprawie.
Mam duże arkusze kalkulacyjne, które są często zmieniane. Tak więc, zgodnie z rozwiązaniem przyjętym na to pytanie, trudno jest powielić wszystkie wypełnione kolumny i kłopotliwe jest edytowanie jeszcze jednej komórki za każdym razem, gdy chcę zmienić kolory tła komórek.
Czy nie ma sposobu sumowania danych na podstawie warunku dotyczącego koloru tła komórki w Arkuszach kalkulacyjnych Google?
Proszę od tego rangeSpecificationparametry wymagają cudzysłowów ( ") wokół nich.
Na przykład:
=sumWhereBackgroundColorIs("white", "A1:C4")
sumuje wartości wszystkich komórek z zakresu A1: C4, które mają białe tło.
Pamiętaj, że jeśli nie znasz koloru określonej komórki, możesz użyć dostarczonej getBackgroundColorfunkcji, aby dowiedzieć się, jaki jest kolor. Ta funkcja jest konieczna, ponieważ niektóre kolory są wyrażone jako kody RGB (na przykład #00ff00zamiast green).
Galeria skryptów została zastąpiona dodatkami. Nie mogę znaleźć „sumy według koloru” w dodatkach. Czy musisz przesłać skrypt do dodatków, aby był tam dostępny?
Jeff Lockhart
3
@ w0lf Wydaje się, że nowe arkusze kalkulacyjne Google nie obsługują już galerii skryptów. Przekierowuje z komunikatem do nowych dodatków. Edytor skryptów jest nadal dostępny i użyłem tam twojego kodu. Zrobiłem rozwidlenie i dodałem obsługę pomijania pustych (nienumerycznych) komórek w sumie (w przeciwnym razie wystąpi błąd, jeśli puste komórki istnieją w zakresie): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart
2
Oto jak dostałem to do pracy:
Otwórz Tools>Script Editor
Wklej poniższy kod, zapisz skrypt
Wróć do arkusza kalkulacyjnego. Użyj z =countColoredCells(A1:Z5,C5)gdzie C5jest komórka z kolorem do policzenia.
Kod:
/**
* @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;
};
getBackgroundColor()
Jest przestarzała. Być może możesz zaktualizować kod?Oto jak dostałem to do pracy:
Otwórz
Tools
>Script Editor
Wklej poniższy kod, zapisz skrypt
Wróć do arkusza kalkulacyjnego. Użyj z
=countColoredCells(A1:Z5,C5)
gdzieC5
jest komórka z kolorem do policzenia.Kod:
Kredyty kodowe (zmienione): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html
źródło
TypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss