Rumus Excel: COUNTIFS dengan rentang variabel -

Ringkasan

Untuk mengkonfigurasi COUNTIFS (atau COUNTIF) dengan rentang variabel, Anda dapat menggunakan fungsi OFFSET. Dalam contoh yang ditunjukkan, rumus di B11 adalah:

=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")

Rumus ini menghitung sel yang tidak kosong dalam rentang yang dimulai dari B5 dan mengakhiri 2 baris di atas sel tempat rumus berada. Rumus yang sama disalin dan ditempelkan 2 baris di bawah entri terakhir dalam data seperti yang ditunjukkan.

Penjelasan

Dalam contoh yang ditampilkan, rumus di B11 adalah:

=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")

Bekerja dari dalam ke luar, pekerjaan menyiapkan rentang variabel dilakukan oleh fungsi OFFSET di sini:

OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1) // variable range

OFFSET memiliki lima argumen dan dikonfigurasi seperti ini:

  • referensi = B $ 5, dimulai dari sel B5, baris terkunci
  • baris = 0, offset baris nol dari sel awal
  • cols = 0, offset sel awal kolom nol
  • tinggi = ROW () - ROW (B $ 5) -1 = tinggi 5 baris
  • lebar = lebar 1 kolom

Untuk mengetahui ketinggian rentang dalam baris, kami menggunakan fungsi ROW seperti ini:

ROW()-ROW(B$5)-1 // work out height

Karena ROW () mengembalikan nomor baris dari sel "saat ini" (yaitu sel tempat rumus berada), kita dapat menyederhanakan seperti ini:

=ROW()-ROW(B$5)-1 =11-5-1 =5

Dengan konfigurasi di atas, OFFSET mengembalikan rentang B5: B9 langsung ke COUNTIFS:

=COUNTIFS(B5:B9,"") // returns 4

Perhatikan referensi B $ 5 pada rumus di atas adalah referensi campuran, dengan kolom relatif dan baris terkunci. Ini memungkinkan rumus disalin ke kolom lain dan masih berfungsi. Misalnya, setelah disalin ke C12, rumusnya adalah:

=COUNTIFS(OFFSET(C$5,0,0,ROW()-ROW(C$5)-1,1),"")

Catatan: OFFSET adalah fungsi yang mudah menguap dan dapat menyebabkan masalah kinerja di lembar kerja yang besar atau kompleks.

Dengan INDIRECT dan ADDRESS

Pendekatan lain adalah dengan menggunakan rumus yang didasarkan pada fungsi INDIRECT dan ADDRESS. Dalam hal ini, kami mengumpulkan rentang sebagai teks, kemudian menggunakan INDIRECT untuk mengevaluasi teks tersebut sebagai referensi. Rumus di B11 adalah:

=COUNTIFS(INDIRECT(ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())),"")

Fungsi ADDRESS digunakan untuk membuat rentang seperti ini:

ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())

Pada contoh pertama ADDRESS, kami memberikan nomor baris sebagai nilai hardcode 5, dan memberikan nomor kolom dengan fungsi COLUMN:

=ADDRESS(5,COLUMN()) // returns "$B$5"

Dalam contoh kedua, kami menyediakan nomor baris "saat ini" dikurangi 2, dan kolom saat ini dengan fungsi COLUMN:

=ADDRESS(ROW()-2,COLUMN()) // returns "$B$9"

Setelah menggabungkan kedua nilai ini bersama-sama, kami memiliki:

"$B$5:$B$9" // as text

Perhatikan ini adalah string teks. Untuk mengonversi ke referensi yang valid, kita perlu menggunakan TIDAK LANGSUNG:

=INDIRECT("$B$5:$B$9") // returns $B$5:$B$9 as valid range

Akhirnya, rumus di B11 menjadi:

=COUNTIFS($B$5:$B$9,"") // returns 4

Catatan: INDIRECT adalah fungsi yang mudah menguap dan dapat menyebabkan masalah kinerja di lembar kerja yang besar atau kompleks.

Artikel yang menarik...