Pola ini muncul terus-menerus dalam laporan penutupan bulanan dan rincian margin kontribusi: Anda punya log transaksi yang flat, dan perlu menghitung data berdasarkan bulan kalender tanpa menambahkan kolom bantu atau mengekspor ke pivot.
Mengapa COUNTIF Menolak MONTH() Secara Langsung
Argumen pertama COUNTIF mengharapkan referensi range, yaitu blok sel konkret seperti C2:C3001. Ketika Anda memasukkan MONTH(C2:C3001) tanpa ARRAYFORMULA, Google Sheets hanya mengevaluasi MONTH terhadap sel pertama dalam range tersebut. Hasilnya adalah satu angka integer (bulan dari baris 2), bukan array, sehingga hasil COUNTIF hanya 1 atau 0 tergantung apakah tanggal itu cocok dengan kriteria Anda.
ARRAYFORMULA memaksa evaluasi dilakukan di seluruh range sebelum COUNTIF memprosesnya. Hasilnya adalah array integer dalam memori (1 sampai 12), dan COUNTIF mencocokkan data tersebut secara normal.
Menggunakan COUNTIF dengan ARRAYFORMULA(MONTH()) untuk Menghasilkan 12 Hitungan Bulanan
Untuk satu bulan tertentu:
=COUNTIF(ARRAYFORMULA(MONTH(Transactions!C2:C3001)), 3)
Untuk baris ringkasan di laporan direksi di mana B4:M4 berisi nomor bulan 1 sampai 12:
=COUNTIF(ARRAYFORMULA(MONTH(Transactions!$C$2:$C$3001)), B4)
Seret ke kanan hingga M4. Setiap sel mengambil nomor bulan dari baris header dan menghitung baris transaksi yang cocok. Pada 3.000 baris data, kalkulasi ulang untuk semua 12 bulan selesai dalam waktu kurang dari satu detik.
Jika Anda ingin 12 hitungan sekaligus dari satu formula tanpa perlu menyeret, COUNTIF tidak bisa mengiterasi array kriteria secara native. Gunakan MAP dengan LAMBDA, yang tersedia di Google Sheets sejak Google Workspace release notes November 2023 (workspace.google.com/whatsnew, diakses 21 Juni 2026):
=MAP(ROW(INDIRECT("1:12")), LAMBDA(m,
COUNTIF(ARRAYFORMULA(MONTH(Transactions!$C$2:$C$3001)), m)
))
Formula ini menghasilkan 12 nilai secara vertikal. Gunakan TRANSPOSE jika baris ringkasan Anda tersusun secara horizontal. Untuk spreadsheet yang belum mendukung MAP/LAMBDA, seret formula satu bulan secara manual - kurang elegan, tapi lebih mudah diaudit ketika CFO bertanya bagaimana model ini dibangun.
Memperbaiki Bug Sel Kosong pada Formula COUNTIF ARRAYFORMULA MONTH
Bug ini secara diam-diam merusak angka Januari di setiap model yang menggunakan range terbuka.
MONTH("") mengembalikan nilai 1. Setiap sel kosong di kolom tanggal Anda akan dihitung sebagai Januari. Pada range 3.000 baris di mana 2.000 baris masih kosong (misalnya Anda baru berada di Kuartal 1 TA 2026 dan data baru tersedia sampai Maret), hitungan Januari akan menggelembung sebesar 2.000.
Solusi dengan COUNTIFS:
=COUNTIFS(
ARRAYFORMULA(MONTH(Transactions!C2:C3001)), 3,
Transactions!C2:C3001, "<>"
)
Kriteria kedua menyaring sel tanggal kosong sebelum pencocokan bulan dijalankan. Pendekatan yang sama berlaku saat Anda menyeret formula ke 12 bulan - cukup kunci referensi range dan ganti angka 3 yang dikodekan langsung dengan sel header bulan Anda.
Anda juga bisa menyaring sel kosong di dalam ARRAYFORMULA itu sendiri:
=COUNTIF(
ARRAYFORMULA(IF(Transactions!C2:C3001<>"", MONTH(Transactions!C2:C3001), "")),
3
)
Kedua pola ini berfungsi dengan baik. Versi COUNTIFS membuat logika penyaringan sel kosong menjadi eksplisit dan mudah diaudit - penting ketika seseorang sedang menelusuri varians angka Januari.
SUMPRODUCT: Kapan Beralih dari COUNTIF ARRAYFORMULA
SUMPRODUCT menangani masalah sel kosong dan ekstraksi bulan dalam satu langkah, tanpa layer ARRAYFORMULA perantara:
=SUMPRODUCT(
(MONTH(Transactions!$C$2:$C$3001)=3) *
(Transactions!$C$2:$C$3001<>"")
)
Performa keduanya sebanding untuk dataset di bawah 10.000 baris. Di atas 50.000 baris, SUMPRODUCT cenderung lebih cepat dalam kalkulasi ulang karena tidak perlu membuat array perantara. Menurut Google Sheets Function Reference (support.google.com/docs/table/25273, diakses 21 Juni 2026), batas spreadsheet adalah 10 juta sel - pada log transaksi besar, SUMPRODUCT bisa 2-3 kali lebih cepat dibanding formula COUNTIF+ARRAYFORMULA yang setara.
Untuk menjumlahkan nilai alih-alih menghitung (misalnya pendapatan per bulan, bukan jumlah transaksi):
=SUMPRODUCT(
(MONTH(Transactions!$C$2:$C$3001)=3) *
(Transactions!$C$2:$C$3001<>"") *
Transactions!$D$2:$D$3001
)
Di mana kolom D adalah nominal transaksi. Ini sebenarnya kebutuhan FP&A yang lebih umum - hitungan transaksi biasanya hanya digunakan sebagai sanity check terhadap total nilai.
| Pendekatan | Aman dari sel kosong? | Bisa spill 12 bulan? | Terbaik untuk |
|---|---|---|---|
COUNTIF(ARRAYFORMULA(MONTH())) | Tidak (gunakan COUNTIFS) | Dengan MAP/LAMBDA | Hitungan transaksi, <10 ribu baris |
COUNTIFS(ARRAYFORMULA(MONTH()), ..., range, "<>") | Ya | Tidak (seret atau MAP) | Hitungan bulanan yang mudah diaudit |
SUMPRODUCT((MONTH()=m)*(range<>"")) | Ya | Tidak (seret) | Hitungan atau penjumlahan, semua ukuran dataset |
MAP(ROW(INDIRECT("1:12")), LAMBDA(m, COUNTIF(...))) | Tergantung formula di dalamnya | Ya | Spill 12 bulan untuk laporan direksi |
Menyambungkan ke Model Multi-Tab
Dalam laporan triwulanan direksi, hitungan bulanan mengisi tab ringkasan yang direferensikan oleh tab-tab lain. Struktur yang bersih:
Tab Transactions (data mentah): tanggal di kolom C, nominal di D, SKU atau kategori di E.
Tab Monthly Summary: nomor bulan 1-12 di B5:B16, lalu:
=COUNTIFS(
ARRAYFORMULA(MONTH(Transactions!$C$2:$C$3001)), $B5,
Transactions!$C$2:$C$3001, "<>",
Transactions!$E$2:$E$3001, 'P&L'!$C$2
)
Formula ini menghitung transaksi di bulan $B5 yang kategorinya cocok dengan nilai di sel asumsi P&L Anda. Tab P&L kemudian menarik data dengan:
=SUMIFS('Monthly Summary'!D:D, 'Monthly Summary'!B:B, ">=" & Assumptions!$B$3)
Dua referensi antar-tab, semua terkunci, tanpa kolom bantu. Ubah satu tanggal transaksi, dan angka di P&L ikut bergerak. Jejak audit berjalan langsung dari data mentah ke ringkasan bulanan ke P&L, tanpa ada yang tersembunyi di balik pivot cache.
FAQ: COUNTIF ARRAYFORMULA MONTH di Google Sheets
Kenapa COUNTIF MONTH tidak menghitung semua baris?
Karena MONTH() tanpa ARRAYFORMULA hanya mengevaluasi sel pertama dalam range, bukan seluruh kolom. Google Sheets memperlakukan MONTH(C2:C3001) sebagai satu nilai tunggal (bulan dari C2), bukan array 3.000 nilai. Akibatnya, COUNTIF hanya membandingkan satu angka dengan kriteria Anda dan mengembalikan 1 atau 0. Solusinya adalah membungkus MONTH dengan ARRAYFORMULA: =COUNTIF(ARRAYFORMULA(MONTH(C2:C3001)), 3). Pola ini memaksa Google Sheets mengevaluasi MONTH untuk setiap baris sebelum COUNTIF dijalankan.
Bagaimana cara menghitung transaksi per bulan di Google Sheets tanpa kolom bantu?
Gunakan =COUNTIF(ARRAYFORMULA(MONTH(range_tanggal)), nomor_bulan) langsung di sel ringkasan Anda. Untuk 12 bulan sekaligus tanpa menyeret, gunakan MAP dengan LAMBDA: =MAP(ROW(INDIRECT("1:12")), LAMBDA(m, COUNTIF(ARRAYFORMULA(MONTH(range)), m))). Jika range Anda punya sel kosong, ganti COUNTIF dengan COUNTIFS dan tambahkan kriteria range, "<>" agar sel kosong tidak terhitung sebagai Januari. Tidak ada kolom bantu yang dibutuhkan dalam kedua pendekatan ini.
Apa bedanya COUNTIF ARRAYFORMULA dan SUMPRODUCT untuk menghitung data bulanan?
Keduanya menghasilkan angka yang sama untuk dataset bersih, tapi cara kerjanya berbeda. COUNTIF ARRAYFORMULA membuat array integer bulan di memori lalu menghitung kecocokan. SUMPRODUCT mengevaluasi kondisi Boolean (MONTH(range)=m) secara langsung dan menjumlahkan hasilnya. Perbedaan praktisnya: SUMPRODUCT lebih ringkas, menangani sel kosong secara native dengan menambahkan *(range<>""), dan lebih cepat pada dataset di atas 50.000 baris. COUNTIF ARRAYFORMULA lebih mudah diperluas ke multi-kriteria via COUNTIFS dan lebih mudah dibaca oleh analis yang belum familiar dengan aritmatika Boolean. Untuk model FP&A standar di bawah 10.000 baris, pilih yang paling mudah diaudit oleh kolega Anda.
Mengapa hitungan Januari saya selalu terlalu tinggi?
Ini adalah bug sel kosong. Fungsi MONTH("") di Google Sheets mengembalikan nilai 1, sehingga setiap sel kosong di kolom tanggal Anda dihitung sebagai transaksi bulan Januari. Jika Anda menggunakan range terbuka (misalnya C2:C3001) dan sebagian besar baris masih kosong, hitungan Januari bisa menggelembung ratusan atau ribuan angka. Perbaikannya: gunakan COUNTIFS dengan dua kriteria, yaitu kriteria bulan dan range, "<>" untuk mengecualikan sel kosong: =COUNTIFS(ARRAYFORMULA(MONTH(C2:C3001)), 1, C2:C3001, "<>").
Jika Anda ingin menyambungkan pola ini ke model yang sudah ada dan butuh formula yang sudah disesuaikan dengan struktur tab dan posisi kolom Anda, ModelMonkey dapat membaca struktur sheet Anda dan langsung menulis pola COUNTIFS atau SUMPRODUCT dengan referensi yang tepat. Coba gratis 14 hari - berfungsi di Google Sheets maupun Excel.