Menghitung sel yang diarsir


10

Saya menggunakan Google Spreadsheets untuk membuat matriks (waktu / aktivitas) sebagai jadwal harian bagi staf untuk masuk.

Apakah ada rumus untuk menghitung jumlah sel dalam kolom yang diarsir (atau tidak diarsir) warna tertentu?

Misalnya: 20 sel berwarna abu-abu dan 31 tidak abu-abu (teduh warna lain) dan alih-alih menghitungnya secara manual, ia menghitungnya di bagian bawah kolom jangkauan.


Masalah dengan solusi @ w0lf berasal dari cache. Fungsi tidak siap untuk mendapatkan pembaruan langsung. Saya mencoba mendapatkan kemampuan itu dengan menambahkan "now ()" sebagai parameter tambahan tetapi tidak berhasil.
kehangatan

Saya tidak bisa menjawab, jadi saya akan meninggalkan komentar. Jika sel tidak memiliki teks, lebih mudah untuk menambahkan teks di dalamnya dengan warna yang sama dengan latar belakang (sehingga tersembunyi) dan kemudian Anda cukup melakukan sederhana = counta () untuk menghitung sel yang tidak kosong. Kalau tentu ini sangat spesifik tergantung kasusnya.
sfratini

Jawaban:


17

Saya telah menemukan cara untuk melakukan ini, menggunakan fungsi scripting yang disediakan oleh Google Spreadsheet.

Inilah cara melakukannya:

  • buka spreadsheet Anda
  • di menu, buka Tools -> Script Editor ...; ini akan membuka jendela baru yang memungkinkan Anda memasukkan kode
  • salin kode di bawah ini
  • rekatkan kode di jendela Script Editor dan tekan CTRL+ Suntuk menyimpannya
  • tutup jendela editor Script dan kembali ke spreadsheet

Kode:

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

Setelah mengikuti langkah-langkah di atas, Anda memiliki tiga fungsi lagi yang tersedia di spreadsheet:

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

Harap dicatat bahwa <range specification>dan <cell specification>dinyatakan dalam notasi A1 , dan harus dilampirkan dalam tanda kutip .

Misalnya, untuk mendapatkan jumlah semua sel dalam rentang B2: F13 yang memiliki warna latar diatur ke putih , Anda harus memasukkan rumus berikut:

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

dan untuk menghitung jumlah sel yang sama, gunakan rumus:

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

Beberapa sel mungkin tidak memiliki latar belakang yang diatur ke warna seperti 'putih', 'abu-abu', tetapi warna RGB suka #6fa8dc. Anda tidak dapat menebak apa warnanya, jadi jika Anda ingin mengetahui warna untuk sel (misalnya, B9), Anda harus memasukkan rumus ini dalam sel:

=getBackgroundColor("B9")

dan setelah itu gunakan nilai ini sebagai parameter untuk dua fungsi di atas.

Tampaknya jika warna latar belakang sel adalah "warna tema," getBackground()salah selalu kembali #ffffff. Saya belum menemukan cara lain selain menggunakan warna dari set standar.

Sekali lagi, perhatikan kutipan dalam semua contoh di atas; tanpa mereka, formula tidak akan berfungsi.


Saya telah mencoba mengikuti petunjuk Anda, tetapi di lapangan saya menggunakan formula yang saya terima #NUM !, Anda tahu mengapa begitu? Saya mencoba melakukan penelitian, tetapi saya tidak dapat menemukan jawaban yang pasti untuk itu. Terima kasih banyak, dami

@Ami, bisakah Anda memposting formula Anda di sini? Juga, periksa ejaan - Saya pikir nama rumus peka huruf besar-kecil
Cristian Lupascu

Hanya mendapatkan nol di sini, meskipun mengikuti petunjuk ...

Sudah getBackgroundColor()usang. Mungkin Anda dapat memperbarui kode?
Jacob Jan Tuinstra

Ketika saya mengubah warna latar belakang ke nilai lain, jumlahnya tidak diperbarui. Apakah ada cara untuk memperbarui jumlah secara otomatis ketika saya melakukan beberapa perubahan?
Michal Kováč

0

Saya belum menemukan cara untuk menghitung sel secara langsung dengan warna tertentu di Google Documents.

Apa yang membuat mereka teduh. Apakah ini otomatis? Jika mereka memiliki nilai, mereka secara otomatis diarsir? Jika demikian, Anda dapat menggunakan fungsi counta () untuk menghitung sel apa pun dengan nilai. Jika ada serangkaian aturan yang lebih rumit, Anda mungkin perlu menggunakan fungsi countif ().

Catatan: Anda mungkin harus memperhitungkan setiap baris tambahan di bagian atas atau bawah kolom

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.