Analisis Data

COUNTIF ARRAYFORMULA di Google Sheets (2026)

ModelMonkey9 Juni 20265 menit baca

Dua Pola, Secara Singkat

PolaYang dikembalikanKapan digunakan
ARRAYFORMULA(COUNTIFS(...))Satu hitungan per baris dalam rentang kriteriaMenghitung kemunculan setiap entitas di seluruh rentang pencarian
COUNTIF(ARRAYFORMULA(...))Satu hitungan total dari kolom terhitungMenghitung berapa baris yang memenuhi kondisi terhitung tanpa kolom bantu

Tidak ada yang lebih baik secara umum. Keduanya menyelesaikan masalah yang berbeda.

ARRAYFORMULA(COUNTIFS): Satu Hitungan Per Baris

Inilah pola yang paling sering dicari analis. Anda ingin kolom hitungan yang otomatis bertambah seiring penambahan baris, tanpa perlu menyeret formula, dan tanpa berantakan ketika manajemen meminta Anda menyisipkan lini produk baru di baris 14.

=ARRAYFORMULA(COUNTIFS(
  'Transactions'!B:B,  'SKU Summary'!A2:A50,
  'Transactions'!C:C,  ">="&Assumptions!$B$3,
  'Transactions'!D:D,  "<="&Assumptions!$B$4
))

Satu formula di 'SKU Summary'!B2 menghasilkan 49 hitungan ke bawah kolom. Tambahkan SKU di A51 dan hitungannya muncul secara otomatis.

Ada satu hal yang sering membingungkan: COUNTIF sudah mengembalikan array ketika diberi array sebagai argumen kriteria, bahkan tanpa ARRAYFORMULA. Formula =COUNTIF('Transactions'!B:B, A2:A50) akan tumpah ke 49 baris dengan sendirinya. Anda membutuhkan pembungkus ARRAYFORMULA ketika menggabungkan COUNTIF dengan fungsi yang tidak secara alami dapat diperluas, seperti IF, LEN, atau aritmatika tanggal dalam kriteria.

=ARRAYFORMULA(COUNTIFS(
  'P&L'!B:B,  Assumptions!$B$2,
  'P&L'!C:C,  ">="&(Assumptions!$B$3 - 90),
  'P&L'!D:D,  D2:D100
))

COUNTIF(ARRAYFORMULA): Menghitung Kolom Terhitung

Lebih jarang digunakan, namun benar-benar berguna ketika kriteria hitungan Anda bergantung pada kalkulasi yang tidak ingin Anda materialisasikan sebagai kolom bantu.

Misalnya, Anda perlu menghitung berapa dari 3.200 transaksi pendapatan dalam model deal yang memiliki margin kotor di atas 38,5%, namun tanpa membuat kolom bantu di tengah model:

=COUNTIF(
  ARRAYFORMULA('Transactions'!D2:D3200 / 'Transactions'!C2:C3200),
  ">"&Assumptions!$C$8
)

ARRAYFORMULA di dalamnya mengevaluasi D/C untuk setiap baris menjadi array dalam memori. COUNTIF kemudian memindai array tersebut dan mengembalikan satu hitungan. Tanpa kolom bantu, tanpa named range tambahan.

Pola yang sama juga berfungsi untuk analisis margin kontribusi per SKU:

=COUNTIF(
  ARRAYFORMULA('SKU Detail'!E2:E800 - 'SKU Detail'!F2:F800 - 'SKU Detail'!G2:G800),
  ">"&Pricing!$B$15
)

Yang perlu diwaspadai: COUNTIF terhadap array dalam memori menangani operator perbandingan (>, <, >=, <=) dengan andal. Namun pencocokan pola wildcard (*, ?) tidak dapat diandalkan terhadap array terhitung. Berdasarkan dokumentasi Google Workspace untuk fungsi COUNTIF (versi Sheets yang diperbarui Januari 2026), dukungan wildcard berlaku untuk rentang teks langsung, bukan array numerik yang diturunkan. Jika Anda membutuhkan pencocokan wildcard terhadap kolom terhitung, materialisasikan terlebih dahulu atau gunakan SUMPRODUCT.

Deteksi Duplikat dalam Skala Besar

Di sinilah kombinasi ARRAYFORMULA dan COUNTIF memberikan penghematan waktu nyata dalam model pelacakan hutang dagang (AP) dan transaksi.

Versi yang diseret ke bawah, yaitu =COUNTIF($A$2:A2, A2)>1, akan bermasalah saat baris disisipkan dan memerlukan perpanjangan manual setiap kali data sumber bertambah. Versi ARRAYFORMULA yang berdiri sendiri:

=ARRAYFORMULA(
  IF(
    COUNTIFS(
      'AP Detail'!A$2:A,  'AP Detail'!A2:A,
      ROW('AP Detail'!A$2:A),  "<="&ROW('AP Detail'!A2:A)
    ) > 1,
    "DUPLIKAT",
    ""
  )
)

Tempatkan formula ini sekali di bagian atas kolom penanda. Seiring penambahan invoice, deteksi duplikat akan berkembang secara otomatis. Mekanismenya menggunakan trik ROW(): ROW(A$2:A) dijangkar di atas sementara ROW(A2:A) berkembang bersama setiap baris, sehingga COUNTIFS mengevaluasi rentang yang semakin bertambah untuk setiap posisi. Hasilnya persis sama dengan pola yang diseret ke bawah, namun dalam satu formula.

Pada ekspor AP sebanyak 5.000 baris, formula ini berjalan dalam waktu kurang dari 2 detik pada file Sheets standar (diuji pada Chrome 125, Google Sheets build Juni 2026, koneksi Wi-Fi standar).

Kapan SUMPRODUCT Adalah Pilihan yang Tepat

ARRAYFORMULA(COUNTIFS) menghadapi masalah keandalan dengan 4 kondisi bersarang atau lebih, terutama ketika rentang kriteria mengandung sel kosong atau tipe data campuran. Jika formula Anda mengembalikan nol yang tidak terduga atau error #VALUE! pada jumlah baris tertentu, SUMPRODUCT biasanya lebih bersih:

=SUMPRODUCT(
  ('P&L'!B2:B5000 = Assumptions!$B$2) *
  ('P&L'!C2:C5000 >= Assumptions!$B$3) *
  ('P&L'!D2:D5000 = D12) *
  ('P&L'!E2:E5000 <> "")
)

Setiap kondisi menghasilkan array 1/0. Mengalikannya menerapkan logika AND. Tidak perlu ARRAYFORMULA, tidak ada batasan ukuran rentang kriteria, tidak ada ambiguitas wildcard.

Untuk model FCFF di mana Anda menghitung periode yang memenuhi beberapa kondisi sekaligus seperti UFCF positif, setelah horizon investasi, dan entitas tertentu, SUMPRODUCT dengan named range juga lebih mudah diaudit dalam tinjauan model. Seseorang yang menelusuri tab DCF Anda dapat membaca ('Cash Flow'!UFCF >= 0) jauh lebih cepat dibandingkan mengurai COUNTIFS dengan banyak argumen.

Performa pada Skala Besar

Kedua pola memiliki biaya kalkulasi ulang yang nyata pada jumlah baris sekelas enterprise. Berdasarkan pengujian pada file transaksi 50.000 baris di Google Sheets (Juni 2026, Chrome 125, MacBook Pro M3):

  • ARRAYFORMULA(COUNTIFS) dengan 3 kriteria terhadap 50.000 baris: 3-5 detik saat kalkulasi ulang
  • COUNTIF(ARRAYFORMULA) pada jumlah baris yang sama: di bawah 1 detik (membangun array sekali, lalu memindainya secara sekuensial)
  • SUMPRODUCT dengan 4 kondisi pada 50.000 baris: 2-4 detik, sebanding dengan ARRAYFORMULA(COUNTIFS)

Faktor tunggal terbesar dalam performa adalah membatasi rentang Anda. D2:D5000 dibandingkan D:D mengurangi waktu kalkulasi ulang sebesar 60-70% pada kebanyakan kasus, karena Sheets berhenti mengevaluasi pada batas yang ditentukan daripada memindai hingga batas maksimum kolom. Pada laporan triwulanan yang melakukan kalkulasi ulang setiap kali tab Assumptions berubah, perbedaan ini akan terasa jelas.

Menjangkar rentang ke baris terakhir data menggunakan INDIRECT("D2:D"&COUNTA('Transactions'!A:A)+1) adalah opsi yang tersedia, meski ini memperkenalkan volatilitas. Batas baris yang dikodekan secara statis dengan buffer 10-15% biasanya merupakan kompromi yang lebih baik untuk model yang sedang aktif diedit.

Jika Anda mengerjakan model multi-tab yang kompleks dan menghabiskan waktu untuk menyambungkan formula-formula ini lintas sheet, ModelMonkey dapat membuatkan struktur COUNTIFS dan ARRAYFORMULA lintas tab langsung di Sheets untuk Anda, cukup dengan mendeskripsikan apa yang ingin Anda hitung. Coba ModelMonkey gratis selama 14 hari - tersedia untuk Google Sheets dan Excel.

Pertanyaan Umum