Znalazłem sposób, aby to zrobić, korzystając z funkcji skryptowej udostępnianej przez Google Spreadsheet.
Oto jak to zrobić:
- otwórz swój arkusz kalkulacyjny
- w menu przejdź do Narzędzia -> Edytor skryptów ...; otworzy się nowe okno, w którym możesz wpisać kod
- skopiuj poniższy kod
- wklej kod w oknie edytora skryptów i naciśnij CTRL+, Saby go zapisać
- zamknij okno edytora skryptów i wróć do arkusza kalkulacyjnego
Kod:
function getBackgroundColor(rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(rangeSpecification);
return cell.getBackground();
}
function sumWhereBackgroundColorIs(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x += parseFloat(cell.getValue());
}
}
return x;
}
function countCellsWithBackgroundColor(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x++;
}
}
return x;
}
Po wykonaniu powyższych kroków w arkuszu kalkulacyjnym dostępne są jeszcze trzy funkcje:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
Należy pamiętać, że <range specification>
i <cell specification>
są wyrażone w notacji A1 i muszą być ujęte w cudzysłów .
Na przykład, aby uzyskać liczbę wszystkich komórek z zakresu B2: F13, dla których kolor tła jest ustawiony na biały , należy wprowadzić następującą formułę:
=countCellsWithBackgroundColor("white", "B2:F13")
i aby obliczyć sumę tych samych komórek, użyj wzoru:
=sumWhereBackgroundColorIs("white", "B2:F13")
Niektóre komórki mogą nie mieć tła w kolorze takim jak „biały”, „szary”, ale podobny do koloru RGB #6fa8dc
. Nie możesz zgadnąć, jaki jest kolor, więc jeśli chcesz znaleźć kolor komórki (na przykład B9
), wpisz tę formułę w komórce:
=getBackgroundColor("B9")
a następnie użyj tej wartości jako parametru dla dwóch powyższych funkcji.
Wygląda na to, że jeśli kolor tła komórki to „kolor motywu”, getBackground()
zawsze niepoprawnie zwraca #ffffff
. Nie znalazłem innego rozwiązania niż użycie koloru ze standardowego zestawu.
Ponownie zwróć uwagę na cytaty we wszystkich powyższych przykładach; bez nich formuły nie działałyby.