Laporan Penjualan Harian Toko Sembako plus Rumus Excel Pendukungnya
TL;DR
Laporan penjualan harian toko sembako minimal berisi omzet, jumlah transaksi, rincian per kategori, laba kotor, dan hasil pencocokan kas. Susunannya cukup tiga sheet: master barang berisi harga jual dan harga pokok, sheet transaksi berisi satu baris per item, dan sheet rekap yang menarik angka pakai SUMIFS. Dengan struktur itu, mencatat sekali sehari cukup buat menghasilkan laporan harian sekaligus bulanan tanpa input ulang.
Laporan penjualan harian toko sembako yang berguna cuma butuh lima angka: omzet, jumlah transaksi, rincian per kategori, laba kotor, dan hasil pencocokan kas.
Sisanya hiasan. Yang bikin repot bukan jumlah angkanya, tapi cara ngumpulinnya tiap hari tanpa nambah kerjaan setengah jam.
Di bawah ini susunan sheet yang aku pakai, rumus Excelnya, contoh isi laporan satu hari di toko sembako, plus rutinitas 10 menit sebelum tutup toko.
Apa isi laporan penjualan harian toko sembako?
Isinya lima blok. Ringkasan hari itu berupa omzet dan jumlah transaksi, rincian omzet per kategori barang, daftar barang terlaris, laba kotor, dan pencocokan kas antara uang di laci dan angka di catatan. Lima blok itu cukup buat mengambil keputusan stok dan mendeteksi kebocoran kas.
Yang sering ditambahkan padahal jarang kepakai: kolom nama pembeli, kolom keterangan bebas, dan kolom nomor urut manual. Tiga kolom itu nambah waktu input tanpa menghasilkan angka apa pun.
Struktur data mentahnya sendiri sama untuk semua jenis usaha, dan alasannya dibahas di struktur dan metrik laporan penjualan.
Gimana susunan sheet di file Excelnya?
Tiga sheet. Sheet master_barang berisi daftar barang beserta harga jual dan harga pokok, sheet transaksi berisi satu baris per item yang terjual, dan sheet rekap_harian berisi laporan yang narik angka dari sheet transaksi lewat rumus.
Sheet 1: master_barang
| kode | nama_barang | kategori | satuan | harga_jual | harga_pokok |
|---|---|---|---|---|---|
| BRS-05 | Beras Pandan Wangi 5 kg | Beras | sak | 68000 | 61200 |
| MYK-02 | Minyak goreng 2 L | Minyak | pouch | 36000 | 31000 |
| GLA-01 | Gula pasir 1 kg | Gula dan tepung | kg | 18000 | 15500 |
| MIE-01 | Mi instan goreng | Mi instan | pcs | 3500 | 2900 |
| SBN-03 | Sabun mandi batang | Lainnya | pcs | 4500 | 3200 |
Sheet 2: transaksi
| tanggal | no_struk | kode | nama_barang | kategori | jumlah | harga_jual | harga_pokok | subtotal | hpp | metode |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025-06-14 | TRX-0614-018 | BRS-05 | Beras Pandan Wangi 5 kg | Beras | 1 | 68000 | 61200 | 68000 | 61200 | tunai |
| 2025-06-14 | TRX-0614-018 | MIE-01 | Mi instan goreng | Mi instan | 5 | 3500 | 2900 | 17500 | 14500 | tunai |
Yang kamu ketik manual cuma empat kolom: tanggal, nomor struk, kode barang, dan jumlah. Sisanya diisi rumus.
Sheet 3: rekap_harian berisi hasil, bukan input. Isinya rumus yang narik dari sheet transaksi berdasarkan tanggal.
Buat mengontrol sisa barang, sheet keempat bisa ditambahkan dengan pola yang dibahas di template stok barang Excel.
Rumus Excel apa yang dipakai?
Ada lima rumus yang ngerjain hampir semuanya. XLOOKUP buat narik data barang dari master, SUMIFS buat rekap bersyarat, COUNTA dengan UNIQUE buat menghitung transaksi, IFERROR buat menjaga tampilan, plus perkalian biasa buat subtotal.
' === SHEET TRANSAKSI ===
' Kolom C = kode barang yang kamu ketik
' Tarik nama barang, kategori, harga jual, harga pokok dari master
D2 =IFERROR(XLOOKUP($C2, master_barang!$A:$A, master_barang!$B:$B), "")
E2 =IFERROR(XLOOKUP($C2, master_barang!$A:$A, master_barang!$C:$C), "")
G2 =IFERROR(XLOOKUP($C2, master_barang!$A:$A, master_barang!$E:$E), 0)
H2 =IFERROR(XLOOKUP($C2, master_barang!$A:$A, master_barang!$F:$F), 0)
' Subtotal dan HPP baris
I2 =F2*G2
J2 =F2*H2
' === SHEET REKAP HARIAN ===
' B1 diisi tanggal laporan, misalnya 2025-06-14
' Omzet hari itu
=SUMIFS(transaksi!I:I, transaksi!A:A, $B$1)
' Harga pokok hari itu
=SUMIFS(transaksi!J:J, transaksi!A:A, $B$1)
' Laba kotor
=Omzet - HPP
' Jumlah transaksi (nomor struk unik hari itu)
=COUNTA(UNIQUE(FILTER(transaksi!B:B, transaksi!A:A=$B$1)))
' Nilai belanja rata-rata
=IFERROR(Omzet/JumlahTransaksi, 0)
' Omzet satu kategori
=SUMIFS(transaksi!I:I, transaksi!A:A, $B$1, transaksi!E:E, "Beras")
' Total tunai saja
=SUMIFS(transaksi!I:I, transaksi!A:A, $B$1, transaksi!K:K, "tunai")
Fungsi SUMIFS yang jadi mesin semua rekap, dan XLOOKUP yang menghapus kerjaan ngetik nama barang. Sintaks lengkap XLOOKUP ada di dokumentasi resmi Microsoft.
Kalau versi Excelmu belum punya XLOOKUP, ganti pakai VLOOKUP dengan argumen keempat FALSE. Bungkus tetap pakai IFERROR supaya sel yang belum diisi nggak nampilin tulisan error.
Satu tips input: pasang dropdown kode barang lewat Data, Data Validation, List, dengan sumber kolom kode di master_barang. Kamu tinggal pilih, nggak ngetik.
Contoh isi laporan harian toko_berkah 14 Juni 2025
Ini dataset contoh ngulikdata toko_berkah, toko sembako di Bekasi dengan satu kasir.
| Ringkasan | Angka |
|---|---|
| Omzet | Rp 1.833.000 |
| Jumlah transaksi | 47 |
| Nilai belanja rata-rata | Rp 39.000 |
| Harga pokok | Rp 1.503.060 |
| Laba kotor | Rp 329.940 |
| Margin kotor | 18,0% |
Rincian per kategori:
| Kategori | Omzet | Porsi |
|---|---|---|
| Beras | Rp 550.000 | 30% |
| Minyak goreng | Rp 366.000 | 20% |
| Gula dan tepung | Rp 275.000 | 15% |
| Mi instan | Rp 256.000 | 14% |
| Lainnya | Rp 386.000 | 21% |
Satu angka lagi dari dataset yang sama, dan ini yang paling kepakai buat atur jadwal: 62 persen transaksi toko_berkah terjadi di dua rentang jam, yaitu 06.00 sampai 09.00 dan 16.00 sampai 19.00.
Artinya jam 10 pagi sampai 3 sore itu waktu yang tepat buat terima barang dari sales, nyusun rak, dan input catatan. Bukan jam yang perlu dijaga dua orang.
Gimana cara cek selisih kas harian?
Bandingkan uang tunai yang beneran ada di laci dengan angka penjualan tunai di catatan. Rumusnya: modal awal laci ditambah penjualan tunai, dikurangi pengeluaran tunai, hasilnya harus sama dengan uang fisik yang kamu hitung.
Modal awal laci Rp 200.000
Penjualan tunai Rp 1.290.000
Penjualan QRIS Rp 543.000 (nggak masuk laci)
Pengeluaran tunai Rp 0
---------------------------------------------
Kas seharusnya Rp 1.490.000
Kas fisik dihitung Rp 1.485.000
Selisih Rp -5.000
Selisih Rp 5.000 biasanya karena kembalian yang dibulatkan atau satu transaksi kecil yang lupa dicatat. Yang penting bukan angkanya nol, tapi angkanya kelacak.
Bikin kolom selisih di rekap harian, lalu perhatikan polanya selama sebulan. Selisih acak kecil itu wajar. Selisih yang selalu minus di shift yang sama, itu masalah lain.
Rutinitas 10 menit sebelum tutup toko
- Menit 1-4. Input transaksi yang belum masuk dari catatan kertas. Pakai dropdown kode barang, isi jumlahnya saja.
- Menit 5. Ubah tanggal di sel B1 sheet rekap_harian ke hari ini. Semua angka rekap langsung ikut berubah.
- Menit 6-8. Hitung uang di laci, ketik hasilnya di kolom kas fisik, lihat selisihnya.
- Menit 9. Cek daftar barang terlaris hari itu, catat yang stoknya tinggal sedikit.
- Menit 10. Simpan file, foto layar rekapnya kalau kamu perlu kirim ke pemilik lewat WhatsApp.
Kunci supaya ini beneran 10 menit ada di dua hal: master barang yang lengkap, dan input yang dilakukan sepanjang hari, bukan ditumpuk sampai malam.
Kesalahan umum di laporan harian toko sembako
1. Bikin file baru tiap bulan. Perbandingan antar bulan jadi kerja salin tempel. Satu file, satu sheet transaksi, pisahkan pakai kolom tanggal.
2. Nggak nyatet harga pokok. Tanpa itu kamu cuma tau omzet. Hari dengan omzet Rp 2 juta dari beras bisa menghasilkan laba lebih kecil dari hari Rp 1,5 juta yang isinya campuran.
3. Nyampur QRIS ke hitungan kas laci. Uang QRIS masuk rekening, bukan laci. Kalau digabung, selisih kasmu selalu keliatan besar.
4. Ngetik nama barang manual. "Minyak 2L", "minyak 2 liter", dan "Minyak Goreng 2L" bakal terhitung tiga produk berbeda pas direkap.
5. Nulis rupiah sebagai teks. Ketik 68000, bukan "Rp 68.000". Atur tampilan lewat Format Cells, Currency.
6. Ngapus baris transaksi yang batal. Tambahkan kolom status berisi batal atau retur. Kalau dihapus, angka kemarin bisa berubah sendiri dan kamu nggak punya jejaknya.
7. Harga pokok di master ditimpa tiap harga beli naik. Laba bulan lalu ikut berubah. Simpan riwayat harga pokok di baris terpisah dengan kolom tanggal berlaku.
FAQ
Berapa lama waktu yang dibutuhkan buat ngisi laporan harian toko sembako?
Sekitar 10 menit kalau transaksimu di bawah 60 per hari dan kamu pakai dropdown kode barang. Bagian yang paling makan waktu adalah ngetik ulang nama produk, dan itu bisa dihilangkan pakai XLOOKUP yang narik nama serta harga dari sheet master. Kalau kamu mencatat di kertas dulu lalu memindahkan ke Excel malam hari, waktunya jadi dua kali lipat, jadi lebih baik input langsung.
Harus nyatet tiap barang atau cukup total per struk?
Catat per barang. Satu baris untuk satu jenis barang, dengan nomor struk yang sama untuk pembelian yang dilakukan sekaligus. Kalau kamu cuma mencatat total per struk, kamu kehilangan informasi produk mana yang laku, dan analisis kategori jadi mustahil. Nomor struknya tetap bikin kamu bisa menghitung jumlah transaksi lewat fungsi hitung nilai unik.
Gimana kalau ada pembeli yang ngutang?
Catat transaksinya seperti biasa di sheet transaksi, lalu tambahkan kolom metode bayar berisi piutang. Omzet tetap diakui hari itu karena barangnya udah keluar, sementara kasnya belum masuk. Pas cek selisih kas, jumlahkan cuma baris yang metode bayarnya tunai. Pelunasan dicatat terpisah di sheet piutang supaya nggak terhitung dua kali sebagai penjualan.
Kenapa laba kotor harian saya beda tiap hari padahal omzetnya mirip?
Karena campuran barang yang terjual berubah. Beras dan minyak goreng punya margin tipis, biasanya di bawah 12 persen, sementara snack, bumbu, dan sabun bisa di atas 25 persen. Hari dengan banyak pembelian beras bakal punya omzet besar tapi laba kecil. Ini alasan kolom harga pokok wajib ada di sheet transaksimu.
Perlu ganti ke aplikasi kasir?
Belum perlu selama transaksimu di bawah 100 per hari dan cuma satu orang yang input. Excel atau Google Sheets udah cukup buat semua yang dibahas di sini. Aplikasi kasir baru kepakai kalau kamu buka cabang kedua, butuh stok yang berkurang otomatis saat transaksi, atau ada beberapa kasir yang input bersamaan di waktu yang sama.
Penutup
Yang bikin laporan harian toko sembako jalan bukan template cantik, tapi tiga hal: master barang yang lengkap, input yang cuma empat kolom, dan sheet rekap yang berubah cuma dengan ganti tanggal di satu sel.
Kolom harga pokok jangan dilewat. Di toko_berkah, dua hari dengan omzet mirip bisa beda laba ratusan ribu cuma gara-gara campuran barangnya beda.
Bikin sheet master_barang malam ini, isi 20 barang yang paling sering laku, dan mulai input besok pagi. Kalau kamu mau lihat format buat jenis usaha lain, ada di 10 contoh format laporan penjualan.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
INDEX MATCH Google Sheets: Lookup Lebih Fleksibel dari VLOOKUP (2026)
INDEX MATCH gabung dua fungsi buat lookup yang bisa nyari ke kiri dan nggak gampang rusak. Ini alasan banyak analis pindah dari VLOOKUP.
SUMPRODUCT Google Sheets: Hitung Berbobot Tanpa Ribet (2026)
SUMPRODUCT ngaliin dua kolom atau lebih baris per baris, terus jumlahin hasilnya. Cocok buat total qty kali harga sampai hitungan bersyarat.
REGEXMATCH Google Sheets: Cek Kecocokan Pola Teks (2026)
REGEXMATCH ngecek apakah teks cocok sama pola tertentu dan balikin TRUE atau FALSE. Cocok buat validasi nomor HP, email, sampai filter data berantakan.