Tecnologia, programação e muito Visual FoxPro.

sábado, 8 de maio de 2010

Re: ]] XL-mania [[ Macro untuk ubah bentuk Report ke beberapa sheet

 

Private Sub Glegg(Sumber As Range)
   '-----------------------------------
   '-- siti Vi / 8 May 2010
   '-- Restructuring & Extract Tabel
   '-- by Prod & Bulan
   '-----------------------------------
   '== siti mendeklarasikan variables
   Dim n          As Integer
   Dim c          As Integer
   Dim NewSht     As Worksheet
   Dim Xel        As Range
   Dim Kolom      As Range
   Dim RepRng     As Range
   Dim HeadProRng As Range
   Dim HeadBlnRng As Range
   Dim HeadPro()  As String
   Dim HeadBln()  As String
   Dim FirstMonth As String
   '== siti membagi tugas kepada para variables
   Set Kolom = Sumber.Offset(1, 0)
   Set Kolom = Kolom.Resize(Kolom.Rows.Count - 1, 1)
   Set HeadProRng = Sumber(1, 2).Resize(1, Sumber.Columns.Count - 1)
   Set HeadBlnRng = HeadProRng.Offset(1, 0)
   FirstMonth = HeadBlnRng(1, 1).Value
   '== siti mencatat Header Jenis Produksi
   '   (ade berape & ape name-nye...)
   For Each Xel In HeadProRng
      If Not Len(Xel) = 0 Then
         c = c + 1: ReDim Preserve HeadPro(1 To c)
         HeadPro(c) = Xel.Text
      End If
   Next Xel
   '== siti mencatat Header Text Bulan /Periode
   '-  (ade berape macem bulan (unique) & ape aje name-nye..)
   For c = 1 To HeadBlnRng.Columns.Count
      If c > 1 And HeadBlnRng(1, c) = FirstMonth Then Exit For
      ReDim Preserve HeadBln(1 To c)
      HeadBln(c) = HeadBlnRng(1, c).Text
   Next c
   '== siti mulai membuat Reports/Sheets Baru (By Bulan)
   '   setiYap sheet diberi nama Bulan-nya
   For c = 1 To UBound(HeadBln)
      Set NewSht = Worksheets.Add
      NewSht.Move After:=Sheets(Sheets.Count)
      NewSht.Name = HeadBln(c)
      Set RepRng = NewSht.Range("B5")
      '-- setiap Sheet di=TEMPELI kolom yg sesuai
      '   (kolom nye di jiplax dari sumber nye kali yee..)
      Kolom.Copy RepRng
      For n = 1 To UBound(HeadPro)
         RepRng(1, 1 + n) = HeadPro(n)
         Kolom.Offset(1, n * 3 + c - 3).Copy RepRng(2, 1 + n)
      Next n
   Next c
   '== siti udah capek sekarang mo tidur dulu...
   MsgBox "!", 64, "Kelar dech..."
End Sub
'-------------------
 
Syarat & "Tata-Tertib" Menjalankan Makro ini
1.
Makro masih minta bantuan anda untuk menSELECT range yg akan diproses;
dlm contoh kasus ini yg harus diselect adalah Range B4:K13 (sebab mau dideteksi
sendiri agak sulit karena tabel tidak solid (mengandung row kosong)
Select-lah Range tsb sebelum atau sesudah ditanya oleh InputBox.
 
2
Sebelum pencet tombol; di workbook ini TIDAK BOLEH ADA SHEET LAIN terutama
yang bernama Seperti Judul Kolom Bulan
Dlm contoh kasus ini: Jan-10,  Feb-10, Mar-10)
karena makro akan membuat sendiri sheet-sheet BARU dengan nama-nama sesuai
Judul Bulan tsb.
Sebelumnya: Semua sheets akan di deleted kecuali sheet "Rupiah"
 
3
Dilarang protest ?!? ( he he..)

------------------------------------------------------------
catatan
(a)
pewarnan cell hanya untuk memudahkan memeriksa hasil, apakah sudah benar
(makro ini tidak terpengaruh ada/tidak ada nya warna cell)
(b)
cobalah dengan data lain yg
**PRODUCT nya tidak hanya 3 jenis; 
**Bulan-nya tidak hanya 3 kolom
**Records tidak hanya  8 baris spt itu
 
 

----- Original Message -----
Sent: Thursday, May 06, 2010 9:03 PM
Subject: ]] XL-mania [[ Macro untuk ubah bentuk Report ke beberapa sheet

Salam Salut kepada para XL-Mania,
Langsung saja saya minta bantu untuk makro yang bisa meringankan pekerjaan manual.
File ilustrasi saya lampirkan karena file aslinya sangat merepotkan jika di-attach.

Sheet "Rupiah" adalah Repot yang merupakan output dari sebuah program selanjutnya
menjadi Source dalam pekerjaan saya.

Detail Kolom Bulan akan bertambah sesuai periode laporan yang di proses.
Detail Kolom Product juga sewaktu-waktu bisa berubah.
Detail Baris (area maupun kemasan) juga bisa berubah untuk setiap perode
karena menyesuaiakan dengan
ketersediaan data pada bulan masing2.
Nama product sesungguhnya cukup banyak, begitu juga untuk detail barisnya.

Target;
Setiap awal bulan menghasilkan laporan di sejumlah sheet sesuai banyaknya
bulan yang ada di sheet Rupiah.
Memanfaatkan data/tabel di sheet Rupiah, sheet laporan diisi tabel dan nilai
sesuai nama sheetnya,
detail barisnya harus sama dengan detail baris tabel di sheet Rupiah.

Selama ini saya gunakan formula kombinasi INDEX,INDIRECT,MATCH, dll ditiap
sheet Laporan.
Hasilnya lumayan efektif, namun performance sangat lambat karena calculating
terus, dan sering dibuat ruwet jika ada tambahan Detail baris ataupun tambahan nama product.

Harapan;
Kepada para XL-mania sudikiranya buatkan macro untuk menjadikan pekerjaan
seperti ini menjadi otomatis (bukan copy manual).
best regards
Nawa

__._,_.___
Recent Activity:
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| uaaaaa... mau game maeeemoooooooo....                             |
| http://www.facebook.com/group.php?gid=37671048001&ref=mf          |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message,  melecehkan,  tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan  winzip  jika  perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke  |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/           |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau...  |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html           |
+-------------------------------------------------------------------+
| Message lama ada di :                                             |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id]  |
| http://www.mail-archive.com/xl-mania@yahoogroups.com              |
+-------------------------------------------------------------------+
.

__,_._,___

Nenhum comentário:

Arquivo do blog