halooo..
kali ini saya akan membuat tutorial sederhana untuk memecah data / membagi data atau apalah saya tidak bisa mendeskripsikan secara manual (Non-ADODB).. yang jelas data akan di pisah dengan kriteria tertentu dan di paste ke sheet dengan nama kriteria tersebutt.. (kok gue bingung dengan kata2 gue sendiri ya hahaaaa)
misalnya kalian punya data seperti ini :
intinya seperti itu ya.. saya kehabisan kata2 untuk menterjemahkan..
ayo simak langkah - langkahnya

okeee.. segitu aja dulu ya..
Semoga bermafaat #HappyCoding #ExcelSakti
misalnya kalian punya data seperti ini :
ID | NAMA | KOTA |
ID000 | MUHAMMAD | JAKARTA |
ID001 | AINUL | JAKARTA |
ID002 | YAQIN | PROBOLINGGO |
ID003 | BUDI | MADIUN |
ID004 | SUTIKNO | PROBOLINGGO |
naaah.. sekarang kalian para penonton yang ada disiniiiiii.. ada yang bilang dangdut tak goyang bagai sayur tanpa garaaaaammm... malah nyanyi yak.. tapi kalo penasaran ama lagunya klik disini hahahahaa..
oke oke.. kembali ke topik..
seperti contoh.. kalian punya data seperti diatas dan ingin membagi data tersebut sesuai KOTA
jadi pada sheet JAKARTA kalian ingin menampilkan data :
ID | NAMA | KOTA |
ID000 | MUHAMMAD | JAKARTA |
ID001 | AINUL | JAKARTA |
intinya seperti itu ya.. saya kehabisan kata2 untuk menterjemahkan..
- Buka Excel dan pastikan Excel Macro kalian aktif. jika belum aktif bisa cek postingan saya klik disini .
- Tuliskan data seperti diatas(sebagai contoh diharapkan nama dan posisi header kolom tabel disamakan dulu ya.. namanya juga contoh nti mah bisa di custom sendiri..)
- Lalu buat 2 tombol (CommandButton). jika belum tau membuat tombol(CommandButton) klik disini
- Lalu masuk ke VBA Editor. jika belum mengerti VBA Editor itu apa bisa di cek disini
- Copy dan paste coding berikut.
' ============================================================
Option Explicit
Private Sub CommandButton2_Click()
Dim sheet As Worksheet
' mematikan alert
Application.DisplayAlerts = False
For Each sheet In ThisWorkbook.Worksheets
' jika nama sheet setelah dirubah menjadi huruf kecil semua
' TIDAK sama dengan (<>) "data"
' maka sheet di hapus
If LCase(sheet.Name) <> "data" Then sheet.Delete
Next
' menghidupkan alert
Application.DisplayAlerts = True
End Sub
Private Sub CommandButton1_Click()
Dim sheetAwal As Worksheet
Dim sheetTujuan As Worksheet
Dim sheetDummy As Worksheet
Dim rng As Range
' set variable sheet sebagai sheet tempat data
Set sheetAwal = ThisWorkbook.Worksheets("Data")
' set variable rng sebagai range A1 (data pertama)
Set rng = sheetAwal.Range("A2")
Dim iRowAwal As Integer
Dim iRowAkhir As Integer
Dim iRowAkhirTujuan As Integer
Dim kotaAktif As String
Dim kotaSudahAda As Boolean
' - set iRowAkhir data terakhir dari column A
' - caranya dengan set cursor(cell aktif) pada row terbawah
' * "sheet.Cells(sheet.Rows.Count, 1)" ini sama dengan range A1048576
' - lalu cursor dipindah ke atas dengan
' * ".End(xlUp)" jadi cursor akan pindah ke range yang ada datanya (A6)
' - lalu ambil nilai row nya sebagai nilai integer (.Row) hasilnya adalah 6
' - langkah ini sama dengan
' * ketika cursor berada di A1048576 lalu anda menekan ctrl+arah_atas
' * maka cursor akan berhenti di rang A6
iRowAkhir = sheetAwal.Cells(sheetAwal.Rows.Count, 1).End(xlUp).Row
' - mengurutkan angka yang dimulai dari 2 (rng.Row)
' - sampai 6 (iRowAkhir)
For iRowAwal = rng.Row To iRowAkhir
' kita asumsikan setiap looping sheet kota belum ada
kotaSudahAda = False
' mengambila nama kota yang aktif
kotaAktif = sheetAwal.Cells(iRowAwal, 3).Text
' cek sheet dengan nama kotaAktif sudah ada apa belum
For Each sheetDummy In ThisWorkbook.Worksheets
' jika sudah ada set ke sheetTujuan
If kotaAktif = sheetDummy.Name Then
Set sheetTujuan = sheetDummy
kotaSudahAda = True
Exit For
End If
Next
' jika tidak ada maka akan membuat sheet baru dengan nama kotaAktif
If Not kotaSudahAda Then
' set sheetTujuan sebagai sheet baru dengan name kotaAktif
' dengan posisi setelah sheetAwal
Set sheetTujuan = ThisWorkbook.Worksheets.Add(after:=sheetAwal)
sheetTujuan.Name = kotaAktif
End If
' baru kita mulai memindahkan data
' 1. kita pendahkan heeder terlebih dahulu
' - ini maksud nya copy row 1 pada sheetAwal (sheet "Data")
' - paste di row 1 pada sheetTujuan (sheet kotaAktif)
sheetAwal.Rows(1).Copy sheetTujuan.Rows(1)
' 2. mencari row kosong pada sheetTujuan dari column A
' - maksud langkah ini sama dengan mengambil iRowAkhir
iRowAkhirTujuan = sheetTujuan.Cells(sheetTujuan.Rows.Count, 1).End(xlUp).Row
' 3. copy data pada row iRowData (angka berubah - ubah) pada sheetAwal
' - dan paste pada sheetTujuan di row iRowAkhirTujuan (angka juga berubah)
' - yang di offset / dilebihkan 1 row
' - artinya ketika aplikasi mendapat row 1 sebagai data terakhir
' - maka data akan di-paste di row 2 >> 1 + 1 (yang pasti kosong)
sheetAwal.Rows(iRowAwal).Copy sheetTujuan.Rows(iRowAkhirTujuan + 1)
Next iRowAwal
' set sheetAwal sebagai sheet aktif setelah melakukan process
sheetAwal.Select
'set rng dan sheet menjadi nilai awal yaitu null
Set rng = Nothing
Set sheetAwal = Nothing
End Sub
' ============================================================
- Dan RUN.
okeee.. segitu aja dulu ya..
Semoga bermafaat #HappyCoding #ExcelSakti
Comments
Post a Comment