menghemat satu baris, hasilnya sama aja kan mbak ? emang melanggar aturan ya ? saya terbiasa pakai yg seperti itu dg refresh r = 0 di awal code,... he he kebiasaan buruk kali ye


From: STDEV(i) <[email protected]>
To: [email protected]
Sent: Tue, June 29, 2010 8:32:16 AM
Subject: Re: [belajar-excel] Modifikasi Macro

waduh.. ada salah agak "fatal-atraction" nih..
(untung pak danan kok belum sempat "protest" ya.....)

di dalam procedure FiterRekap (ada di Module Sheet 4 /"Rekap_II" )
ada Looping tertulis spt ini

For i = 1 To DatRows
   If LookupKolom(i).Text = KRITE_1 Then
      If LookupKolom2(i).Text = KRITE_2 Then
         r = r + 1
         vHax = vHax + TabelData(r, 11).Value
         vKui = vKui + TabelData(r, 12).Value
         vXtl = vXtl + TabelData(r, 18).Value
      End If
   End If
Next i

index baris dengan memanfaatkan variable r itu salah;
seharusnya index baris atas cell yg dirujuk menggunakan variable i
(yaitu integer pencacah / counter Loop).
koreksinya menjadi seperti ini :

For i = 1 To DatRows
   If LookupKolom(i).Text = KRITE_1 Then
      If LookupKolom2(i).Text = KRITE_2 Then
         vHax = vHax + TabelData(i, 11).Value
         vKui = vKui + TabelData(i, 12).Value
         vXtl = vXtl + TabelData(i, 18).Value
      End If
   End If
Next i

Terlampr file produksi.xls yg sudah dikoreksi, sekalian ada beberapa modifikasi
misalnya report selain ditulis subtotalnya saja, juga ditulis rinciannya di tabel lain.

rgds,
-ctv-


'---------------------
2010/6/27 STDEV(i) <[email protected]>
Ysh Pak Danan,
Mudah mudahan tanggapan ini belum terlambat, berhubung saat-saat ini
siti jarang sekali mendapat kesempatan koneksi internet.

Pada workbook terlampir, siti membuat sheet baru (Rekap II);
nama sheet ini bebas boleh diubah dengan nama lain.

Membuat rekapitulasi seperti yg dimaksud oleh pak Danan akan menjadi mudah
kalau kita setiap saat dapat membuat DAFTAR UNIQUE dari data Tanggal Giling
dan Data Nomor Petak, yg merupakan extract / perasan dari data yg ada
di sheet DATA.

Untuk keperluan itu kita membuat FUNGSI LOUV (List of Unique Values)
yaitu sebuah UDF yg dapat menyediakan ARRAY daftar unique yg diambil dari
sebuah KOLOM Range.

Untuk membuat REKAP nya sendiri, sheet "Rekap II" kita beri struktur tabel spt ini
struktur Rekap II.GIF

Tombol RefreshCombo untuk mengisi kembali items di kedua combobox
(berisi pilihan kriteria). Perlu di refresh karena setiap item dropdownlist tsb
kadang kadang dilupakan oleh comboboxnya. (diisi dari hasil Fungsi LOUV;
makanya isinya dinamis mengikuti data yg ada di tabel sheet "data")

Dua Combobox kriteria hanya SATU yg akan berfungsi .
Jika satu sudah ditentukan isinya, combo lainnya akan kosong.

Tombol Rekap untuk mengerjakan Subtotal sesuai Kriteria yg ditentukan.

Listing Code untuk pekerjaan ini siti tulis di module Sheet Rekap II
Kita cantumkan di badan email ini karena, saya khawatir nanti pada saat ada
kesempatan terkoneksi ke internet, saya tidak dapat melampirkan workbooknya.
(misal hanya bisa konek melalui 'mobile device')

Program ini hanya menghasilkan Baris SUbTotal saja (tidak merinci records yg
sesuai kriteria seperti pada sheet "Rekap Per Petak"

Mudah-mudahan tidak terlalu jauh dari kehendak pak Danan;
tetapi jika diperlukan perubahan / hal lain, tentu dapat didisksikan di milis ini.


Private Sub FilterRekap(Combox As ComboBox)
   ' Rekap Subtotal sesuai kriteria
   Dim TabelData As Range
   Dim DatTanggal As Range
   Dim DatNrPetak As Range
   Dim Combox2 As ComboBox
   Dim KRITE_1
   Dim KRITE_2
   Dim LookupKolom As Range
   Dim LookupKolom2 As Range
   Dim MaxKrite As Integer
   Dim vHax As Double
   Dim vKui As Double
   Dim vXtl As Double
   Dim vRdm As Double
   Dim DatRows As Long
   Dim r As Long, n As Integer, i As Long
  
   Set TabelData = Sheets("Data").Range("A4").CurrentRegion
   DatRows = TabelData.Rows.Count - 1
   Set DatNrPetak = TabelData.Offset(1, 6).Resize(DatRows, 1)
   Set DatTanggal = DatNrPetak.Offset(0, 13)
   Set TabelData = TabelData.Offset(1, 0)
  
   If Combox = Cbo_Tanggal Then   ' kriteria = Tgl Giling
      Set Combox2 = Cbo_NrPetak
      Set LookupKolom = DatTanggal
      Set LookupKolom2 = DatNrPetak
      KRITE_1 = Cbo_Tanggal.Value
      MaxKrite = Cbo_Tanggal.ListCount
   ElseIf Combox = Cbo_NrPetak Then
      Set Combox2 = Cbo_Tanggal
      Set LookupKolom = DatNrPetak
      Set LookupKolom2 = DatTanggal
      KRITE_1 = Cbo_NrPetak.Value
      MaxKrite = Cbo_NrPetak.ListCount
   End If

   For n = 1 To Combox2.ListCount
      Combox2.ListIndex = n - 1
      KRITE_2 = Combox2.Value
      r = 0
      vHax = 0
      vKui = 0
      vRdm = 0
      vXtl = 0
     
      For i = 1 To DatRows
         If LookupKolom(i).Text = KRITE_1 Then
            If LookupKolom2(i).Text = KRITE_2 Then
               r = r + 1
               vHax = vHax + TabelData(r, 11).Value
               vKui = vKui + TabelData(r, 12).Value
               vXtl = vXtl + TabelData(r, 18).Value
            End If
         End If
      Next i
 

      With Me.Range("B7")
         .Cells(n, 1) = Cbo_NrPetak
         .Cells(n, 2) = Cbo_Tanggal
         .Cells(n, 3) = vHax
         .Cells(n, 4) = vKui
         .Cells(n, 5) = vXtl
         .Cells(n, 6) = Round(vXtl / vKui * 100, 2)
         .Cells(n, 6).NumberFormat = "#,##0.00"
      End With
   Next n

End Sub

'--------------------------------

wassalam
siti



2010/6/25 Rahagung Dananjoyo <[email protected]>

Yth. Para pakar Excel
Saya sangat terbantu dengan file hasil diskusi sebelumnya, pada email saya skrg ini ada beberapa modifikasi yang akan dilakukan, mohon bantuannya.
Data di file terlampir adalah sumber data yang akan diolah/direkap di sheet REKAP PER PETAK.
Pada sheet REKAP PER PETAK sudah ada form untuk filter berdasarkan nomer petak, kategori dan tgl giling. Data yang muncul dari filter tersebut adalah rincian data dari sheet Data dan dibawahnya ada nilai totalnya(Bisa dilihat di sheet REKAP PER PETAK).
Saya ingin menambahkan bentuk filter lain (mungkin perlu sheet baru? ).
Filter yang saya inginkan adalah data hasil filter sudah dalam bentuk totalnya saja.
 Jadi misalnya filter untuk data tgl giling 5 Jun 2010, ketika di filter maka yg muncul adalah :
- total untuk nomer petak 1000 pada tgl 5 jun 2010
- total untuk nomer petak 1500 pada tgl 5 jun 2010
- total untuk nomer petak 200 pada tgl 5 jun 2010
- total untuk nomer petak 500 pada tgl 5 jun 2010
dst, berlaku untuk semua petak dalam tgl tersebut

Ketika saya filter untuk nomer petak 1000, maka yang muncul adalah :
- total nomer petak 1000 pada tgl 5 jun 2010
- total nomer petak 1000 pada tgl 6 jun 2010
- total nomer petak 1000 pada tgl 7 jun 2010
dst, berlaku untuk semua tgl giling

Data yg ditotal adalah Ha, Tebu (Kui), Kristal Sementara.
Rumus Total RDM adalah Total Kristal Sementara dibagi Total Tebu (Kui) dikali 100

(Data di file ini adalah data contoh, bukan data asli)

Terima kasih atas bantuan dan pencerahannya
 



Kirim email ke