TL;DR
Struk kasir bisa diubah jadi data yang bisa dihitung dengan satu aturan: satu baris spreadsheet = satu item dalam satu struk. Kolom wajibnya tanggal, nomor struk, nama barang, jumlah, harga satuan, dan metode bayar. Setelah formatnya konsisten, SUMIFS dan COUNTIFS langsung bisa jawab pertanyaan omzet harian, barang terlaris, dan rata-rata belanja per struk.
Struk kasir jadi data itu soal satu aturan: satu baris spreadsheet mewakili satu item dalam satu struk. Begitu formatnya konsisten, tumpukan kertas di laci berubah jadi angka yang bisa dihitung.
Masalahnya, kebanyakan pemilik warung nyatetnya per hari dalam satu sel. "Jualan hari ini 340 ribu" itu catatan, bukan data. Kamu nggak bisa tau barang mana yang jalan, jam berapa ramai, atau pelanggan mana yang balik.
Di bawah ini langkah lengkapnya, dari nyusun kolom sampai rumus yang langsung ngasih omzet harian.
Struk kasir susah diolah karena tiga hal: formatnya nggak seragam, nama barangnya ditulis beda-beda tiap kasir, dan angkanya sering nempel sama teks. Satu struk bisa punya 1 sampai 15 item dengan panjang baris yang berubah-ubah. Komputer butuh bentuk yang tetap, bukan bentuk yang berubah tiap lembar.
Kalau kamu ketik ulang tanpa aturan, hasilnya tetap berantakan. Makanya struktur kolom harus ditentuin duluan sebelum baris pertama diketik.
Pakai format panjang, bukan format lebar. Tiap baris = satu item dalam satu struk. Nomor struk yang sama bakal muncul berulang di beberapa baris, dan itu memang seharusnya begitu.
| Kolom | Isi | Contoh |
|---|---|---|
| tanggal | Format tanggal asli, bukan teks | 2025-09-01 |
| jam | Jam transaksi | 07:45 |
| no_struk | Penanda satu transaksi | S-0912 |
| nama_barang | Nama baku, bukan tulisan kasir | Minyak Goreng 1L |
| kategori | Kelompok barang | Sembako |
| qty | Jumlah, angka murni | 2 |
| harga_satuan | Rupiah, tanpa simbol Rp | 18000 |
| subtotal | Hasil rumus qty x harga | 36000 |
| metode_bayar | Tunai, QRIS, transfer | QRIS |
Tiga aturan yang jangan dilanggar. Jangan gabung sel. Jangan sisipkan baris kosong sebagai pemisah hari. Jangan tulis "Rp" di dalam sel angka, cukup atur lewat format sel.
Kolom subtotal isinya rumus, bukan ketikan tangan:
=F2*G2
Alasannya sederhana. Kalau harga salah ketik, subtotalnya ikut kebenerin sendiri waktu kamu perbaiki.
Urutan yang paling hemat waktu dari yang aku pakai:
Buat warung dengan 40 sampai 60 struk per hari, satu hari data biasanya kelar dalam 12 sampai 18 menit begitu ritmenya ketemu.
Kalau struk kamu keluar dari aplikasi kasir dan hasil salinnya nempel jadi satu kolom, pisahin dulu. Di Google Sheets pakai SPLIT, di Excel 365 pakai TEXTSPLIT, di Excel lama pakai menu Data lalu Text to Columns.
=SPLIT(A2, "|")
Baris "Minyak Goreng 1L|2|18000" bakal kepecah jadi tiga sel. Penjelasan lengkap pemisahnya ada di dokumentasi resmi Google Sheets.
Habis dipecah, angkanya sering masih berupa teks. Bersihin pakai rangkaian ini:
=VALUE(SUBSTITUTE(SUBSTITUTE(TRIM(C2),"Rp",""),".",""))
TRIM buang spasi berlebih, SUBSTITUTE hapus "Rp" dan titik ribuan, VALUE ngubah sisanya jadi angka beneran. Cara cek cepatnya: angka asli rata kanan sendiri di sel, teks rata kiri.
Lima rumus ini nutup hampir semua pertanyaan harian pemilik warung.
=SUMIFS(H:H, A:A, DATE(2025,9,1))
Kolom H itu subtotal, kolom A tanggal. Kalau kamu mau rentang tanggal, pakai dua kriteria sekaligus lewat SUMIFS.
=SUMIFS(H:H, E:E, "Sembako", A:A, ">="&DATE(2025,9,1), A:A, "<="&DATE(2025,9,30))
=COUNTA(UNIQUE(FILTER(C:C, A:A=DATE(2025,9,1))))
Kalau spreadsheet kamu belum punya UNIQUE, COUNTIFS di kolom bantu penanda struk pertama juga jalan.
=IFERROR(SUMIFS(H:H, A:A, $J2) / COUNTA(UNIQUE(FILTER(C:C, A:A=$J2))), 0)
IFERROR di sini penting biar hari libur yang nggak ada transaksi nggak bikin sel penuh error.
=TEXT(A2, "yyyy-mm")
TEXT ngubah tanggal jadi penanda bulan yang bisa dipakai buat pivot. Buat ngitung umur data, TODAY dikurangi kolom tanggal kasih jumlah hari sejak transaksi.
Ini masalah kualitas data yang paling sering muncul di warung. Kasir pagi nulis "Minyak Goreng", kasir sore nulis "minyak gr", dan yang satu lagi nulis "MG 1 liter".
Jangan cari-ganti massal. Bikin sheet terpisah bernama kamus_barang dengan dua kolom: tulisan asli dan nama baku.
=XLOOKUP(D2, kamus_barang!A:A, kamus_barang!B:B, "BELUM DIPETAKAN")
Tiap ketemu tulisan baru, hasilnya keluar "BELUM DIPETAKAN" dan kamu tinggal tambahin barisnya di kamus. Kalau versi spreadsheet kamu belum punya XLOOKUP, VLOOKUP dibungkus IFERROR juga cukup.
Proses ngerapikan kayak gini bagian dari alur ETL, cuma versi warung yang dikerjain di spreadsheet.
Dataset latihan ngulikdata bernama warung_bu_sri berisi 1.240 struk dari 60 hari operasional, total 4.826 baris item. Nilai rata-rata per struk Rp 18.700.
Tiga temuan setelah datanya rapi:
| Temuan | Angka | Tindakan |
|---|---|---|
| Jam paling ramai | 06.30 sampai 08.00, 31% dari total struk | Stok gorengan dan susu dimajuin ke depan rak |
| Struk QRIS lebih besar | Rata-rata Rp 26.400 vs tunai Rp 15.900 | Stiker QRIS ditempel di dua titik tambahan |
| Barang mati | 17 SKU nggak kejual sekali pun dalam 60 hari | Modal Rp 1,2 juta ngendap, diobral |
Yang paling kepakai temuan ketiga. Bu Sri nggak sadar ada 17 barang yang cuma jadi pajangan, karena laci uangnya tetap keisi tiap hari. Angka itu baru kelihatan waktu semua struk masuk satu tabel.
Beberapa baris. Satu baris mewakili satu item dalam satu struk, jadi struk berisi 4 barang jadi 4 baris dengan nomor struk yang sama. Format ini bikin kamu bisa hitung barang terlaris sekaligus omzet per struk.
Buat mulai, ambil 2 sampai 4 minggu penuh dulu, jangan diloncat-loncat. Data 14 hari berturut-turut lebih berguna dari 60 hari yang bolong-bolong, soalnya pola Senin sampai Minggu kelihatan utuh.
Bikin tabel pemetaan berisi tulisan asli dan nama baku, terus pakai XLOOKUP buat nerjemahin tiap baris. Cara ini lebih aman dari cari-ganti massal, soalnya tulisan aslinya masih kesimpan kalau ada salah petakan.
Kalau transaksimu di bawah 100 struk per hari, spreadsheet masih nyaman dan gratis. Yang penting, kalau kamu nanti pindah ke aplikasi kasir, pastikan aplikasinya bisa ekspor CSV.
Biasanya gara-gara ada spasi, titik ribuan, atau simbol Rp yang keikut waktu copy. Rapikan pakai TRIM, SUBSTITUTE, lalu VALUE. Cek cepat: angka beneran rata kanan otomatis, teks rata kiri.
Dua hal yang paling nentuin. Pertama, format satu baris satu item, konsisten sejak struk pertama. Kedua, nama barang dibakukan lewat kamus, bukan diketik ulang sesuka kasir.
Mulai dari 14 hari terakhir dulu. Begitu tabelnya jalan, SUMIFS bakal jawab pertanyaan omzet dalam hitungan detik.
Lanjut baca: Analitik Koperasi dan BUMDes kalau kamu ngurus unit usaha yang lebih besar dari warung.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Punya ratusan angka dan mau tau sebarannya masuk ke rentang mana aja? FREQUENCY ngitung distribusi frekuensi sekali jalan, tanpa nulis COUNTIFS berkali-kali.
SUMIFS ribet kalau kriterianya banyak dan sering ganti. Rumus database Excel kayak DSUM baca kriteria dari sel terpisah, jadi kamu tinggal ubah tabel kecil tanpa nyentuh rumus.
DATEDIF ngasih umur bulat, tapi kadang kamu butuh angka desimal kayak 27,6 tahun buat hitung masa kerja atau bunga. YEARFRAC ngasih pecahan tahun dengan presisi.