Dear Mr Kid, Terima kasih, sudah saya ganti nilai baris 7 menjadi 8, dan jalan sudah. Hanya mengapa di baris terakhir kata "Total"nya hilang ya? satu lagi Mr Kid, tambahin dong macro agar berjalan sampai dengan sheet yang terakhir pada workbook yang ada. Sungguh, saya gak sanggup untuk menambahkan fungsi yang dapat memproses berulang. terima kasih, ASL.
To: belajar-excel@yahoogroups.com From: belajar-excel@yahoogroups.com Date: Wed, 27 May 2015 17:06:27 +1000 Subject: Re: [belajar-excel] Menyatukan 2 atau 3 baris menjadi 1 baris data Oh berarti baris Saldo di baris 7 ya.... Kalau gitu for nya jangan sampai 7 atau jangan sampai baris saldo. Sampai baris Excel-nya record transaksi pertama saja. Wassalam, Kid 2015-05-27 16:07 GMT+10:00 Ahmad Syaifullah Lubis syaiful...@hotmail.com [belajar-excel] <belajar-excel@yahoogroups.com>: Mr Kid, terima kasih ya Mr Kid, cuman kenapa ya saldo awal muncul angka di kolom E, seharusnya kolom D dan E untuk saldo awal kosong. cuman kalau sebelumnya saya beri tanda petik (") di kolom D dan E maka waktu diproses macronya baru bisa berjalan dengan sempurna. Mohon koreksinya Mr Kid. terima kasih, ASL To: belajar-excel@yahoogroups.com From: belajar-excel@yahoogroups.com Date: Wed, 27 May 2015 06:07:47 +1000 Subject: Re: [belajar-excel] Menyatukan 2 atau 3 baris menjadi 1 baris data Hai Ahmad, Kalau dilihat dari previewnya, sepertinya pengen ada tambahan syarat pokok kolom D (kolom dikirinya yang kasus lalu, sesuaikan dengan keadaan nyatanya bila ada kolom kosong diantaranya yang tak tampak) yang seperti kolom E. Coba fokus pada blok IF dalam prosedur yang lalu : public Sub kopi() 'tambahin explicit nya scope ah supaya mudah membacanya Dim baris As double, x As long Dim wadah As String For x = cells(rows.count,3).end(xlup).row To 7 Step -1 if Cells(x, 5).Value<>0 then 'poin 1 diperjelas keterangannya -> kolom E <> 0 if Cells(x, 1).Value = 0 Then 'kondisi dalam poin 1 alias poin 1.>. -> kolom A = 0 wadah = Cells(x, 3).Value " " wadah baris = Cells(x, 5).Value Cells(x, 3).Value = vbnullstring Cells(x, 5).Value = vbnullstring endif elseif Cells(x, 1).Value <> 0 then 'poin 2 -> kolom E=0 DAN kolom A <> 0 Cells(x, 3).Value = Cells(x, 3).Value " " wadah wadah = vbnullstring Cells(x, 5).Value = baris else 'poin 3 -> kolom E=0 DAN kolom A = 0 wadah = Cells(x, 3).Value " " wadah Cells(x, 3).Value = vbnullstring endif Next x End Sub Kondisi baru : (poin 1.5) Kolom D memiliki karakteristik seperti kolom E if Cells(x, 5).Value<>0 then 'poin 1 diperjelas keterangannya -> kolom E <> 0 if Cells(x, 1).Value = 0 Then 'kondisi dalam poin 1 alias poin 1.>. -> kolom A = 0 wadah = Cells(x, 3).Value " " wadah baris = Cells(x, 5).Value Cells(x, 3).Value = vbnullstring Cells(x, 5).Value = vbnullstring endif elseif Cells(x, 4).Value<>0 then 'poin 1.5 diperjelas keterangannya -> kolom D <> 0 if Cells(x, 1).Value = 0 Then 'kondisi dalam poin 1 alias poin 1.>. -> kolom A = 0 wadah = Cells(x, 3).Value " " wadah baris = Cells(x, 4).Value Cells(x, 3).Value = vbnullstring Cells(x, 4).Value = vbnullstring endif elseif Cells(x, 1).Value <> 0 then 'poin 2 -> kolom E=0 DAN kolom A <> 0 Cells(x, 3).Value = Cells(x, 3).Value " " wadah wadah = vbnullstring Cells(x, 5).Value = baris else 'poin 3 -> kolom E=0 DAN kolom A = 0 wadah = Cells(x, 3).Value " " wadah Cells(x, 3).Value = vbnullstring endif Sampai disini terjadi masalah berikut : a. nilai dalam variabel 'baris' tidak diketahui sumbernya, yaitu dari nilai kolom E (akibat mengerjakan poin 1) atau dari kolom D (akibat mengerjakan poin 1.5) b. penulisan nilai yang disimpan dalam variabel bernama 'baris' adalah ke kolom E saja (lihat yang merah) Solusi untuk masalah untuk kasus : a. disediakan sebuah variabel penyimpan nomor kolom sumber nilai yang diambil. Jadi tugasnya menyimpan nilai 5 kalau mengambil nilai kolom E karena mengerjakan poin 1, atau menyimpan nilai 4 kalau mengambil nilai kolom D karena mengerjakan poin 1.5. Maka diblok poin 1 dan blok poin 1.5 nantinya akan diberi baris kode pengisian nilai 5 atau 4 tersebut. b. karena proses penulisan menggunakan posisi nomor row dan nomor column seperti Cells(x, 5).Value yang berarti di cells row ke-x di column 5, berarti angka 5 pada baris tersebut bisa diganti dengan variabel penyimpan nilai sumber kolom (5 atau 4) yang menjadi solusi poin a diatas tadi. Proses penerapan solusi : 1. butuh sebuah variabel baru penyimpan nilai 5 atau 4 > butuh deklarasi variabel baru yang datatype untuk numerik bilangan bulat > saja, bisa byte, integer, atau long > misal dipilih datatype Long supaya native dengan bit applikasi office yang > digunakan yang 32 bit > nama variabelnya misal diberi nama lKolomSumber > bunyi deklarasinya : dim lKolomSumber as long 2. setiap blok poin diberi baris kode untuk set nilai 5 atau 4 sesuai kondisi ke variabel baru tersebut > blok poin 1 dulu -> berdasar kolom E <> 0 * poin 1 menggunakan kolom E alias kolom nomor 5 sebagai kondisi * berarti nilai variabel lKolomSumber diblok ini harus diisi dengan nilai 5 * prosesnya ditulis tepat setelah mengambil nilai dari kolom E * berarti, setelah kode berbunyi : baris = Cells(x, 5).Value diberi proses pengisian nilai 5 ke variabel lKolomSumber dengan bunyi berikut : lKolomSumber=5 > blok poin 1.5 -> berdasar kolom D <> 0 * poin 1 menggunakan kolom D alias kolom nomor 4 sebagai kondisi * berarti nilai variabel lKolomSumber diblok ini harus diisi dengan nilai 4 * prosesnya ditulis tepat setelah mengambil nilai dari kolom D * berarti, setelah kode berbunyi : baris = Cells(x, 4).Value diberi proses pengisian nilai 4 ke variabel lKolomSumber dengan bunyi berikut : lKolomSumber=4 3. Penulisan isi variabel bernama 'baris' ke suatu cells dilakukan sesuai kolom sumbernya > kode penulisan nilai yang sudah ada dalam prosedur berbunyi : Cells(x, 5).Value = baris> pada kode di atas, kolom sumbernya ditunjukkan dengan angka 5 > berarti bagian angka 5 itulah yang harus diganti dengan variabel penyimpan > nomor kolom sumbernya (nama variabelnya lKolomSumber kan ya) > berarti bunyi kodenya akan menjadi : Cells(x, lKolomSumber).Value = baris Jadi prosedur yang sudah dikembangkan akan menjadi : public Sub kopi() 'tambahin explicit nya scope ah supaya mudah membacanya Dim baris As double, x As long Dim wadah As String dim lKolomSumber as long 'private cop as object 'dumb private object For x = cells(rows.count,3).end(xlup).row To 7 Step -1 if Cells(x, 5).Value<>0 then ''poin 1 diperjelas keterangannya -> kolom E <> 0 if Cells(x, 1).Value = 0 Then 'kondisi dalam poin 1 alias poin 1.>. -> kolom A = 0 wadah = Cells(x, 3).Value " " wadah baris = Cells(x, 5).Value lKolomSumber =5 Cells(x, 3).Value = vbnullstring Cells(x, 5).Value = vbnullstring endif elseif Cells(x, 4).Value<>0 then "poin 1.5 diperjelas keterangannya -> kolom D <> 0 if Cells(x, 1).Value = 0 Then 'kondisi dalam poin 1 alias poin 1.>. -> kolom A = 0 wadah = Cells(x, 3).Value " " wadah baris = Cells(x, 4).Value lKolomSumber =4 Cells(x, 3).Value = vbnullstring Cells(x, 4).Value = vbnullstring endif elseif Cells(x, 1).Value <> 0 then ''poin 2 -> kolom E=0 DAN kolom A <> 0 Cells(x, 3).Value = Cells(x, 3).Value " " wadah wadah = vbnullstring Cells(x, lKolomSumber ).Value = baris else ''poin 3 -> kolom E=0 DAN kolom A = 0 wadah = Cells(x, 3).Value " " wadah Cells(x, 3).Value = vbnullstring endif Next x End Sub ;) Wassalam, Kid