Gölgeli hücrelerin hesaplanması


10

Personelin oturum açması için günlük bir program olarak bir matris (zaman / etkinlik) oluşturmak için Google E-Tablolar'ı kullanıyorum.

Bir sütundaki belirli bir renkte gölgeli (veya gölgeli olmayan) hücre sayısını hesaplamak için bir formül var mı?

Örneğin: hücrelerin 20'si gri ve 31'i gri değil (başka bir renkle gölgeli) ve bunları manuel olarak saymak yerine, bunu erişim sütununun altında hesaplar.


@ W0lf'nin çözümü ile ilgili sorun önbellekten geliyor. İşlev canlı güncellemeler almaya hazır değil. Ekstra bir parametre olarak "now ()" ekleyerek bu yeteneği kazanmaya çalıştım ama işe yaramadı.
sıcaklık

Cevap veremem, bu yüzden sadece bir yorum bırakacağım. Hücreler herhangi bir metin içermiyorsa, içine arka planla aynı renkte herhangi bir metin eklemek daha kolaydır (böylece gizlenir) ve sonra boş olmayan hücreleri saymak için basit bir = counta () yaparsınız. Tabii ki bu duruma bağlı olarak çok belirgindir.
sfratini

Yanıtlar:


17

Google E-Tablolar'ın sağladığı komut dosyası işlevselliğini kullanarak bunu yapmanın bir yolunu buldum.

Bunu nasıl yapacağınız aşağıda açıklanmıştır:

  • e-tablonuzu açın
  • menüde Araçlar -> Komut Dosyası Düzenleyici ... 'ye gidin; kod girmenizi sağlayan yeni bir pencere açılacaktır
  • aşağıdaki kodu kopyala
  • kodu Komut Dosyası Düzenleyici penceresine yapıştırın ve kaydetmek için CTRL+ tuşuna basınS
  • Komut Dosyası düzenleyici pencerelerini kapatın ve e-tabloya dönün

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;
}

Yukarıdaki adımları uyguladıktan sonra, e-tabloda üç işlev daha bulunmaktadır:

  • countCellsWithBackgroundColor(<color>, <range specification>)
  • sumWhereBackgroundColorIs(<color>, <range specification>)
  • getBackgroundColor(<cell specification>)

Lütfen <range specification>ve A1 gösteriminde <cell specification>ifade edildiğini ve tırnak işaretleri içine alınmaları gerektiğini unutmayın .

Örneğin, arka plan rengi beyaz olarak ayarlanmış B2: F13 aralığındaki tüm hücrelerin sayısını almak için aşağıdaki formülü girmelisiniz:

=countCellsWithBackgroundColor("white", "B2:F13")

ve aynı hücrelerin toplamını hesaplamak için şu formülü kullanın:

=sumWhereBackgroundColorIs("white", "B2:F13")

Bazı hücrelerin arka planı 'beyaz', 'gri' gibi bir renge ayarlanmamış olabilir, ancak RGB rengi gibi olabilir #6fa8dc. Rengin ne olduğunu tahmin edemezsiniz, bu nedenle bir hücrenin rengini (örneğin, B9) bulmak istiyorsanız, bu formülü bir hücreye girmelisiniz:

=getBackgroundColor("B9")

ve daha sonra bu değeri yukarıdaki iki işleve parametre olarak kullanın.

Bir hücrenin arka plan rengi "tema rengi" ise, getBackground()her zaman yanlış döndürülür #ffffff. Standart setten bir renk kullanmaktan başka bir yol bulamadım.

Yine, yukarıdaki tüm örneklerde verilen tırnaklara dikkat edin; onlar olmadan formüller işe yaramazdı.


İpuçlarını takip etmeye çalışıyorum, ancak alanda #SAYI! Formülü kullanıyorum, neden olduğunu biliyor musun? Biraz araştırma yapmaya çalıştım, ama bunun tam cevabını bulamadım. Bir milyon teşekkürler, dami

@Dami formülünüzü buraya gönderebilir misiniz? Ayrıca, yazım denetimi - Bence formül isimleri büyük / küçük harfe duyarlıdır
Cristian Lupascu

Talimatlara

getBackgroundColor()Kullanımdan kaldırılmıştır. Belki kodu güncelleyebilirsiniz?
Jacob Jan Tuinstra

Arka plan rengini başka bir değere değiştirdiğimde toplam güncellenmiyor. Bazı değişiklikler yaptığımda toplamı otomatik olarak güncellemenin bir yolu var mı?
Michal Kováč

0

Google Dokümanlar'da belirli bir renge sahip hücreleri doğrudan saymanın bir yolunu bulamadım.

Onları gölgeli yapan şey. Otomatik mi? Değerleri varsa otomatik olarak gölgelenir mi? Bu durumda, değeri olan herhangi bir hücreyi saymak için counta () işlevini kullanabilirsiniz. Daha karmaşık bir kurallar kümesi varsa countif () işlevini kullanmanız gerekebilir.

Not: Sütunun üstünde veya altında fazladan satırları hesaba katmanız gerekebilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.