Analisis Data

Spreadsheet Pelacak Inventaris Pakaian: Panduan 2026

ModelMonkey7 Mei 202610 menit baca

Panduan ini menjelaskan cara membangunnya agar tidak terjadi.

Mengapa Inventaris Pakaian Lebih Rumit dari Inventaris Biasa

Sebagian besar template inventaris memperlakukan SKU sebagai unit terkecil. Inventaris pakaian tidak bekerja seperti itu. Anda melacak hierarki tiga tingkat: model โ†’ colorway โ†’ ukuran. Setiap pertanyaan agregasi berada di tingkat yang berbeda: Berapa sisa stok Monaco Blazer? Berapa yang tersisa dalam warna navy? Berapa dalam navy, ukuran 10?

Hierarki ini harus tertanam dalam struktur data Anda sejak baris pertama, atau Anda akan menulis rangkaian VLOOKUP yang semakin tidak masuk akal pada minggu ketiga.

Berdasarkan dokumentasi resmi Google Sheets (diperbarui Mei 2026), batas maksimal adalah 10 juta sel per spreadsheet. Katalog 8.000 SKU yang dilacak selama 52 minggu dengan 15 kolom atribut menghasilkan sekitar 6,2 juta sel โ€” bukan angka hipotetis, melainkan aritmatika standar sheet pelacakan musiman brand DTC menengah. Masalah performa biasanya muncul jauh sebelum batas sel tercapai, umumnya di sekitar 50.000 baris riwayat transaksi.

Struktur Spreadsheet Pelacak Inventaris Pakaian

Anda membutuhkan minimal 3 tab: Inventory (sumber kebenaran data), Movements (penerimaan dan pengiriman), dan Dashboard (yang sebenarnya dilihat direktur operasional Anda). Tab opsional yang berguna: Reorder Watch dan Aging Stock.

Tab Inventory โ€” kolom minimum:

KolomFungsi
SKUKode Model-Warna-Ukuran (mis., BLZ-MON-NVY-10)
StyleNama model induk (Monaco Blazer)
ColorColorway (Navy)
SizeLabel ukuran (10)
WarehouseKode lokasi untuk operasi multi-gudang
On HandUnit yang tersedia saat ini
On OrderKuantitas PO yang sedang masuk
Reorder PointAmbang batas yang memicu alert pembelian
Reorder QtyKuantitas pemesanan standar
CostBiaya per unit
RetailHarga jual eceran per unit
Last UpdatedTimestamp pergerakan terakhir

Kolom SKU adalah join key Anda. Semua data turunan โ€” pergerakan stok, PO, data penjualan โ€” bergabung berdasarkan SKU. Jika ERP Anda mengekspor kode model dalam satu format dan 3PL Anda mengekspornya dalam format lain, semua formula akan rusak di titik ini. (Ini pasti terjadi. Atasi sebelum masalah itu menguasai Anda โ€” lebih lanjut di bawah.)

Formula Utama untuk Tab Inventory

Menghitung on-hand dari log pergerakan โ€” jika Anda menarik data dari ekspor ERP atau WMS, bukan mengedit on-hand secara langsung:

=SUMIF(Movements!$B:$B, A2, Movements!$E:$E)

Kolom B di Movements adalah SKU, kolom E adalah kuantitas (positif untuk penerimaan, negatif untuk pengiriman). Formula ini bekerja baik hingga sekitar 5.000 baris pergerakan. Di atas 40.000 baris, SUMIF pada rentang terbuka mulai melambat secara signifikan โ€” hal ini didokumentasikan dalam panduan optimasi performa Google Sheets dan konsisten dilaporkan di komunitas Google Workspace. Ganti dengan:

=QUERY(Movements!A:F, "SELECT SUM(E) WHERE B = '"&A2&"' LABEL SUM(E) ''", 0)

QUERY menangani ekspor pergerakan 80.000 baris dari kebanyakan 3PL tanpa masalah berarti karena dieksekusi sebagai kueri teroptimasi, bukan iterasi sel per sel seperti SUMIF. Konsekuensinya: QUERY mengembalikan error โ€” bukan nol โ€” ketika tidak ada data yang cocok. Bungkus dengan IFERROR(..., 0).

Flag alert pemesanan ulang:

=IF((C2+D2) <= E2, "REORDER", "")

On Hand + On Order dibandingkan dengan Reorder Point. Sederhana, tapi penambahan +D2 sangat penting โ€” memicu pemesanan ulang saat Anda sudah memiliki 500 unit dalam PO yang sedang berjalan adalah cara terbaik untuk berakhir dengan stok 18 bulan dalam colorway yang tidak laku.

Flag stok menganggur โ€” unit yang tidak bergerak selama 90+ hari:

=IF(AND(C2>0, TODAY()-L2>=90), "AGING", "")

Formula ini membutuhkan kolom Last Updated berisi nilai tanggal yang sesungguhnya, bukan string teks. Biasanya bukan โ€” karena ERP Anda mengekspor tanggal sebagai 05/07/2026 sementara 3PL Anda mengekspor 2026-05-07, dan keduanya sudah hidup berdampingan di kolom L sejak kuartal pertama. Perbaiki dengan:

=IFERROR(DATEVALUE(TEXT(L2,"YYYY-MM-DD")), IFERROR(DATEVALUE(L2), "BAD DATE"))

Wrapper ini bertahan menghadapi sebagian besar kolom tanggal dengan format campuran โ€” ISO 8601, format tanggal pendek, dan serial number Excel. Tidak akan bertahan menghadapi string teks seperti "07 Mei 2026" tanpa modifikasi tambahan, tapi format semacam itu jarang muncul dalam ekspor ERP.

Masalah Rollup di Tingkat Model

Direktur operasional Anda tidak ingin melihat 30 baris untuk Monaco Blazer. Mereka ingin 1 baris: total unit, total nilai, status. Rollup inilah yang membuat sebagian besar sheet pelacakan pakaian gagal berfungsi.

Solusi paling rapi adalah membuat rentang Style Summary terpisah menggunakan SUMIF terhadap kolom Style:

=SUMIF(Inventory!$B:$B, A2, Inventory!$F:$F)

Style di kolom B, On Hand di kolom F, nama model di A2 pada sheet summary Anda. Formula ini memberikan total on-hand di semua warna dan ukuran untuk model tersebut.

Untuk rollup di tingkat colorway, gunakan SUMIFS:

=SUMIFS(Inventory!$F:$F, Inventory!$B:$B, A2, Inventory!$C:$C, B2)

Pencocokan model di kolom B, pencocokan warna di kolom C. Berfungsi baik hingga 10.000 baris SKU. Di atas itu, SUMIFS pada referensi kolom penuh mulai menambahkan beberapa detik ke setiap kalkulasi ulang. Batasi rentang ke batas data aktual (mis., $F$2:$F$8001) dan atur kalkulasi ke manual jika sheet digunakan sebagai file referensi, bukan dashboard live.

Tab Dashboard: Pertanyaan yang Selalu Ditanyakan Direktur

Tiga pertanyaan selalu muncul dalam setiap rapat operasional tentang inventaris pakaian:

  1. Berapa total nilai on-hand per kategori?
  2. Apa yang menganggur dan perlu segera di-markdown?
  3. Apa yang perlu dipesan ulang sebelum musim berikutnya?

Total nilai on-hand per kategori โ€” dengan asumsi Anda memiliki kolom Category:

=QUERY(Inventory!A:K, "SELECT B, SUM(F*J) WHERE F > 0 GROUP BY B LABEL SUM(F*J) 'Total Value'", 1)

Formula ini mengelompokkan berdasarkan Style dan mengalikan On Hand (kol. F) dengan Cost (kol. J). Hasilnya langsung muncul di tab dashboard sebagai pivot live. Memformat output sebagai tabel dengan conditional formatting pada kolom Total Value memberi tampilan visual yang bisa dipindai direktur Anda dalam 10 detik.

Tabel inventaris menganggur โ€” FILTER menarik baris yang relevan:

=FILTER(Inventory!A:L, (Inventory!F:F>0)*(TODAY()-Inventory!L:L>=90))

Pada 8.000 baris SKU, formula ini dikalkulasi ulang dalam waktu kurang dari 2 detik. Pada 50.000+ baris, gunakan QUERY:

=QUERY(Inventory!A:L, "SELECT * WHERE F > 0 AND L <= date '"&TEXT(TODAY()-90,"YYYY-MM-DD")&"'", 1)

Reorder watch โ€” pola yang sama: filter di mana (On Hand + On Order) โ‰ค Reorder Point dan On Hand > 0 (tidak ada gunanya memesan ulang SKU yang sudah dihentikan).

Masalah SKU Mismatch

Inilah yang sebenarnya membunuh sheet inventaris pakaian: ERP Anda mengekspor SKU sebagai BLZ-MON-NVY-10, sementara 3PL Anda mengekspornya sebagai BLZMON-NVY-10 โ€” tanpa tanda hubung setelah kode model, karena seseorang mengkonfigurasinya berbeda pada 2019. Setiap SUMIF mengembalikan nol. Setiap penggabungan gagal tanpa peringatan.

Sebelum membangun lapisan formula apa pun, audit format SKU Anda dengan:

=LEN(A2)

Terapkan formula ini ke seluruh kolom SKU dan urutkan berdasarkan panjang. Nilai yang menyimpang hampir selalu menandai ketidakkonsistenan format. Kemudian gunakan SUBSTITUTE untuk normalisasi:

=SUBSTITUTE(TRIM(UPPER(A2)), " ", "-")

UPPER menangani perbedaan huruf besar-kecil. TRIM menghilangkan spasi di awal dan akhir string โ€” tidak terlihat, tapi selalu ada dalam impor CSV. SUBSTITUTE menormalisasi SKU yang dipisahkan spasi menjadi dipisahkan tanda hubung. Lakukan ini di kolom helper dan gabungkan terhadap versi yang sudah dibersihkan, bukan data impor mentah.

Mencegah Kerusakan di Hari Senin

Dua hal yang membunuh sheet pelacakan pakaian adalah schema drift (ERP Anda menambahkan kolom dan menggeser semua kolom ke kanan) dan kekacauan format tanggal (seseorang mengekspor dari sistem baru). Keduanya bisa diatasi dengan named ranges sebagai pengganti referensi huruf kolom, dan dengan wrapper IFERROR di setiap kalkulasi tanggal.

Untuk named ranges: pilih kolom SKU Anda, gunakan Data โ†’ Named ranges, beri nama inv_sku. Setiap formula yang mereferensikan Inventory!$A:$A diganti dengan inv_sku. Ketika skema bergeser, Anda hanya perlu memperbarui definisi named range di satu tempat โ€” bukan di setiap formula yang menggunakannya.

Kapan Spreadsheet Pelacak Inventaris Pakaian Tidak Lagi Cukup

Spreadsheet menangani inventaris pakaian dengan baik hingga sekitar 3 gudang, 10.000 SKU aktif, dan volume pergerakan mingguan di bawah 50.000 baris. Melewati ambang batas tersebut, waktu kalkulasi ulang dan refresh data manual mulai menciptakan risiko operasional nyata โ€” formula bisa memakan 30 detik untuk selesai, dan data inventaris bisa sudah 24โ€“48 jam kedaluwarsa karena tidak ada yang mau merefresh sheet secara manual.

Matematika alokasi multi-gudang โ€” mendistribusikan unit yang tersedia ke lokasi fulfillment berdasarkan sinyal permintaan โ€” juga merupakan area di mana logika spreadsheet menjadi rapuh. Anda bisa membangunnya dengan IF bertingkat dan ARRAYFORMULA, tapi perubahan skema dalam ekspor WMS akan merusaknya secara diam-diam dengan cara yang tidak akan Anda sadari sampai pelanggan menelepon.

Namun demikian, untuk operasi gudang tunggal di bawah 10.000 SKU, Google Sheets yang terstruktur dengan baik mengalahkan sebagian besar implementasi software inventaris dalam hal waktu setup โ€” berpekan-pekan lebih cepat โ€” dan biaya lisensi yang bisa mencapai puluhan juta rupiah per tahun.

Untuk mempercepat audit formula dan deteksi referensi rusak setelah perubahan skema, ModelMonkey tersedia gratis selama 14 hari langsung di sidebar Google Sheets Anda.


FAQ: Spreadsheet Pelacak Inventaris Pakaian

Apa kolom paling penting dalam spreadsheet pelacak inventaris pakaian?

Kolom SKU adalah yang paling kritis karena berfungsi sebagai join key untuk semua data turunan. Tanpanya, Anda tidak bisa menghubungkan data pergerakan, PO, dan penjualan ke stok yang tepat. Setelah SKU, prioritas berikutnya adalah On Hand, On Order, Reorder Point, Cost, dan Last Updated.

Berapa batas jumlah SKU yang bisa ditangani Google Sheets secara realistis?

Google Sheets mendukung hingga 10 juta sel per file, tapi masalah performa biasanya muncul lebih awal. Untuk sheet inventaris pakaian dengan formula SUMIF/QUERY aktif, ambang praktisnya adalah sekitar 10.000 SKU aktif dan 50.000 baris riwayat transaksi sebelum waktu kalkulasi mulai mengganggu produktivitas.

Kenapa SUMIF lebih lambat dari QUERY untuk inventaris besar?

SUMIF mengevaluasi setiap sel dalam rentang secara berurutan. QUERY mengeksekusi pencarian teroptimasi di sisi mesin Google Sheets โ€” setara dengan perbedaan antara loop manual dan kueri database. Untuk dataset di bawah 5.000 baris, perbedaannya tidak terasa. Di atas 40.000 baris, QUERY bisa 10โ€“20 kali lebih cepat.

Bagaimana cara menangani SKU yang sama tapi format berbeda dari dua sistem?

Buat kolom helper dengan formula normalisasi =SUBSTITUTE(TRIM(UPPER(A2)), " ", "-") di setiap tabel impor, lalu gunakan kolom helper tersebut โ€” bukan kolom SKU mentah โ€” sebagai dasar semua SUMIF dan VLOOKUP. Ini memastikan pencocokan tetap konsisten meski format sumber berubah.

Kapan sebaiknya beralih dari spreadsheet ke software inventaris khusus?

Pertimbangkan peralihan saat Anda melewati salah satu dari tiga ambang ini: lebih dari 3 gudang aktif, lebih dari 10.000 SKU yang dikelola secara bersamaan, atau volume pergerakan mingguan di atas 50.000 baris. Di luar titik tersebut, risiko operasional dari data yang kedaluwarsa dan formula yang rapuh biasanya lebih besar dari biaya lisensi software.