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..)
'-----------
'-- siti Vi / 8 May 2010
'-- Restructuring & Extract Tabel
'-- by Prod & Bulan
'-----------
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(
Set Kolom = Kolom.Resize(
Set HeadProRng = Sumber(1, 2).Resize(1, Sumber.Columns.
Set HeadBlnRng = HeadProRng.Offset(
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.
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(
NewSht.Name = HeadBln(c)
Set RepRng = NewSht.Range(
'-- 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..."
For n = 1 To UBound(HeadPro)
RepRng(1, 1 + n) = HeadPro(n)
Kolom.Offset(
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
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
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)
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"
Sebelumnya: Semua sheets akan di deleted kecuali sheet "Rupiah"
3
Dilarang protest ?!? ( he he..)
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)
(makro ini tidak terpengaruh ada/tidak ada nya warna cell)
(b)
cobalah dengan data lain yg
**PRODUCT nya tidak hanya 3 jenis;
cobalah dengan data lain yg
**PRODUCT nya tidak hanya 3 jenis;
**Bulan-nya tidak hanya 3 kolom
**Records tidak hanya 8 baris spt itu
**Records tidak hanya 8 baris spt itu
----- Original Message -----From: Nawa PurnamaSent: Thursday, May 06, 2010 9:03 PMSubject: ]] XL-mania [[ Macro untuk ubah bentuk Report ke beberapa sheetSalam 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 selanjutnyamenjadi 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
__._,_.___
+-:: 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 |
+-------------------------------------------------------------------+
| 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:
Postar um comentário