Cara Otomatisasi Jadwal Produksi dengan VBA di Excel Cepat dan Presisi

oleh | 27 Apr 2025 | VBA Macro | 0 Komentar

Dalam dunia produksi, menentukan jumlah pekerja dan waktu yang dibutuhkan untuk menyelesaikan pesanan adalah hal penting agar proses berjalan efisien. Salah satu cara efektif untuk melakukannya adalah dengan menggunakan Otomatisasi jadwal produksi dengan VBA di Excel. Artikel ini akan membahas bagaimana Anda bisa membuat perhitungan otomatis untuk memperkirakan jumlah pekerja dan menetapkan tanggal produksi yang ideal menggunakan script VBA.

Mari kita mulai!

Mengapa Otomatisasi Jadwal Produksi dengan VBA di Excel Penting?

Menggunakan Otomatisasi jadwal produksi dengan VBA di Excel dapat menghemat waktu, mengurangi human error, dan mempercepat pengambilan keputusan di bidang produksi. Dengan script yang tepat, Anda dapat mengatur tanggal mulai produksi, tanggal selesai, memperhitungkan hari libur nasional, serta menentukan kebutuhan pekerja secara otomatis.

Langkah-langkah Membuat Otomatisasi Jadwal Produksi dengan VBA di Excel

Berikut ini adalah langkah-langkah yang bisa Anda ikuti untuk membuat Otomatisasi jadwal produksi dengan VBA di Excel:

1. Buka Excel dan siapkan dua sheet:

A. Sheet1: Data pesanan (berisi produk, tanggal pesanan, deadline, dan jumlah yang harus diproduksi) dimulai dari B3:

Template Otomatisasi jadwal produksi dengan VBA di Excel

Disini, kemampuan produksi sebuah produk harus dipetakan terlebih dahulu. Dan sebagai contoh seorang pekerja dalam sehari memiliki kemampuan produksi sebagai berikut:

  • Kursi = 3 buah/hari
  • Meja = 2 buah/hari
  • Bangku = 4 buah/hari
  • Rak = 2 buah/hari
  • Kotak = 6 buah/hari

B. Sheet2: Daftar hari libur nasional, dimulai dari B3

2. Buka VBA Editor:

  • Tekan ALT + F11 untuk membuka jendela VBA Editor.
  • Klik Insert > Module untuk membuat modul baru.
  1. Salin dan Tempelkan Script VBA Berikut Ini:
Sub HitungPekerjaanProduksiFix()

    Dim ws As Worksheet
    Dim wsLibur As Worksheet
    Dim lastRow As Long
    Dim lastRowLibur As Long
    Dim i As Long
    Dim sisaProduksi As Double
    Dim tglPesanan As Date
    Dim deadline As Date
    Dim hariLiburNasional() As Date
    Dim hariKerja As Long
    Dim pekerjaDibutuhkan As Double
    Dim kapasitasPerHari As Double
    Dim namaProduk As String
    Dim j As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Ganti kalau perlu
    Set wsLibur = ThisWorkbook.Sheets("Sheet2")
    
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    lastRowLibur = wsLibur.Cells(wsLibur.Rows.Count, "B").End(xlUp).Row
    
    ' Ambil daftar libur nasional
    If lastRowLibur >= 3 Then
        ReDim hariLiburNasional(1 To lastRowLibur - 2)
        For j = 3 To lastRowLibur
            If IsDate(wsLibur.Cells(j, "B").Value) Then
                hariLiburNasional(j - 2) = wsLibur.Cells(j, "B").Value
            End If
        Next j
    End If
    
    ' Mulai dari baris 3
    For i = 3 To lastRow
        namaProduk = LCase(Trim(ws.Cells(i, "C").Value)) ' Nama produk
        If IsNumeric(ws.Cells(i, "F").Value) Then
            sisaProduksi = ws.Cells(i, "F").Value
        Else
            sisaProduksi = 0
        End If
        
        If sisaProduksi = 0 Then
            ws.Cells(i, "I").Value = 0
            ws.Cells(i, "J").Value = ""
            ws.Cells(i, "K").Value = ""
            GoTo NextIteration
        End If
        
        If IsDate(ws.Cells(i, "G").Value) And IsDate(ws.Cells(i, "H").Value) Then
            tglPesanan = ws.Cells(i, "G").Value
            deadline = ws.Cells(i, "H").Value
        Else
            ws.Cells(i, "I").Value = "Tanggal Salah"
            ws.Cells(i, "J").Value = ""
            ws.Cells(i, "K").Value = ""
            GoTo NextIteration
        End If
        
        ' Tentukan kapasitas per hari sesuai produk
        Select Case namaProduk
            Case "kursi"
                kapasitasPerHari = 3
            Case "meja"
                kapasitasPerHari = 2
            Case "bangku"
                kapasitasPerHari = 4
            Case "rak"
                kapasitasPerHari = 2
            Case "kotak"
                kapasitasPerHari = 6
            Case Else
                kapasitasPerHari = 1 ' Kalau produk tidak dikenal, anggap 1 per hari
        End Select
        
        ' Hitung hari kerja efektif
        hariKerja = 0
        Dim d As Date
        For d = tglPesanan + 1 To deadline - 1
            If Weekday(d, vbMonday) <= 5 Then ' Senin–Jumat
                Dim isLibur As Boolean
                isLibur = False
                For j = LBound(hariLiburNasional) To UBound(hariLiburNasional)
                    If d = hariLiburNasional(j) Then
                        isLibur = True
                        Exit For
                    End If
                Next j
                If Not isLibur Then
                    hariKerja = hariKerja + 1
                End If
            End If
        Next d
        
        ' Hitung pekerja
        If hariKerja > 0 And kapasitasPerHari > 0 Then
            pekerjaDibutuhkan = sisaProduksi / (kapasitasPerHari * hariKerja)
            ' Pembulatan
            If pekerjaDibutuhkan - Int(pekerjaDibutuhkan) >= 0.5 Then
                pekerjaDibutuhkan = Application.WorksheetFunction.RoundUp(pekerjaDibutuhkan, 0)
            Else
                pekerjaDibutuhkan = Application.WorksheetFunction.RoundDown(pekerjaDibutuhkan, 0)
            End If
            ws.Cells(i, "I").Value = pekerjaDibutuhkan
        Else
            ws.Cells(i, "I").Value = "Cek Data"
        End If
        
        ' Tentukan Tanggal Produksi
        Dim tglProduksi As Date
        tglProduksi = tglPesanan + 1 ' Tanggal produksi awal adalah tgl pesanan + 1
        
        ' Geser Tanggal Produksi jika jatuh pada Sabtu, Minggu atau Libur Nasional
        Do While Weekday(tglProduksi, vbMonday) > 5 Or IsInArray(tglProduksi, hariLiburNasional)
            tglProduksi = tglProduksi + 1 ' Geser ke hari berikutnya
        Loop
        
        ws.Cells(i, "J").Value = tglProduksi
        
        ' Tentukan Tanggal Selesai
        Dim tglSelesai As Date
        tglSelesai = deadline - 1 ' Tanggal selesai awal adalah deadline - 1
        
        ' Geser Tanggal Selesai jika jatuh pada Sabtu, Minggu atau Libur Nasional
        Do While Weekday(tglSelesai, vbMonday) > 5 Or IsInArray(tglSelesai, hariLiburNasional)
            tglSelesai = tglSelesai - 1 ' Geser ke hari sebelumnya
        Loop
        
        ws.Cells(i, "K").Value = tglSelesai
        
NextIteration:
    Next i
    
    MsgBox "Perhitungan Pekerjaan Produksi Selesai!", vbInformation

End Sub

' Fungsi untuk memeriksa apakah tanggal ada di dalam array libur nasional
Function IsInArray(val As Date, arr As Variant) As Boolean
    Dim element As Variant
    On Error GoTo ErrorHandler
    For Each element In arr
        If val = element Then
            IsInArray = True
            Exit Function
        End If
    Next
    IsInArray = False
    Exit Function
ErrorHandler:
    IsInArray = False
End Function

Berikut tampilannya di VBA Editor:

Baca Juga  Kalkulator Resep Masakan Otomatis di Excel: Solusi Bagi Dapur Kecil Maupun Besar
Script VBA Otomatisasi jadwal produksi dengan VBA di Excel

Penjelasan Singkat Script

Script di atas melakukan beberapa hal penting:

  • Membaca data pesanan dari Sheet1 dan hari libur dari Sheet2.
  • Menghitung jumlah hari kerja efektif dengan Otomatisasi jadwal produksi dengan VBA di Excel.
  • Menghitung jumlah pekerja yang dibutuhkan berdasarkan kapasitas produksi per hari.
  • Menentukan tanggal mulai produksi dan tanggal selesai produksi, menghindari akhir pekan dan libur nasional.

Semua ini dilakukan secara otomatis menggunakan Otomatisasi jadwal produksi dengan VBA di Excel sehingga Anda bisa fokus ke hal-hal strategis lainnya.

Langkah Menjalankan Macronya

Setelah Anda selesai menulis dan menyimpan script VBA di editor, kini saatnya menjalankan macro untuk menghitung estimasi pekerja dan waktu produksi secara otomatis. Berikut langkah-langkahnya:

  1. Pastikan semua data sudah terisi dengan benar di Sheet1 (data pesanan) dan Sheet2 (data hari libur nasional).
  2. Di Excel, tekan Alt + F8 untuk membuka jendela daftar macro.
  3. Pilih macro bernama HitungPekerjaanProduksiFix dari daftar yang muncul.
  4. Klik tombol Run.
  5. Tunggu beberapa saat hingga muncul pesan “Perhitungan Pekerjaan Produksi Selesai!” yang menandakan proses sudah selesai.

Setelah macro dijalankan, Anda akan melihat kolom pekerja dibutuhkan, tanggal produksi, dan tanggal selesai diisi secara otomatis, menyesuaikan hari kerja dan memperhitungkan libur nasional. Dengan begitu, otomatisasi jadwal produksi dengan VBA di Excel dapat meningkatkan efisiensi dan akurasi tanpa harus menghitung secara manual.

Berikut hasilnya:

Hasil dari Otomatisasi jadwal produksi dengan VBA di Excel

Kesimpulan

Dengan menggunakan Otomatisasi jadwal produksi dengan VBA di Excel, Anda bisa meningkatkan akurasi perencanaan produksi, mempercepat proses kerja, dan mengurangi risiko keterlambatan penyelesaian pesanan. Script ini juga sangat fleksibel untuk dimodifikasi sesuai kebutuhan produksi perusahaan Anda.

Jika Anda ingin mengembangkan lebih jauh, Anda bisa menambahkan fitur seperti penyesuaian jam kerja shift, cuti karyawan, atau prioritas pesanan tertentu. Semua bisa diwujudkan dengan Otomatisasi jadwal produksi dengan VBA di Excel.

Baca Juga  Contoh LJK Pilihan Ganda Otomatis di Excel dengan VBA: Praktis dan Presisi

Selamat mencoba dan semoga produktivitas produksi Anda semakin meningkat dengan bantuan Otomatisasi jadwal produksi dengan VBA di Excel!

Download Template Gratis

Bagi Anda yang ingin mencoba teknik ini secara langsung, kami telah menyiapkan template gratis yang dirancang khusus untuk membantu Anda mempraktikkan Cara Otomatisasi Jadwal Produksi dengan VBA di Excel ini. File Excel bisa didownload melalui tautan berikut:

download file Excel

Atau juga jika ingin mempelajari langkah demi langkah secara visual, bisa kunjungi Youtube Channel Depot Excel. Di sana teman-teman akan melihat bagaimana rumusnya bekerja. Semoga bermanfaat!

0 Komentar

Kirim Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Join Our Newsletter