dear Mr Kid,setelah sekian lama macro ini saya pakai, dan sudah saya pakai 
untuk laporan kas.tetapi pas saya dapatin laporan dengan bentuk lain (file 
terlampir), ada yang missing dan sangat patal.mohon pencerahannya.terima 
kasih,ASL


To: [email protected]
From: [email protected]
Date: Wed, 27 May 2015 17:31:09 +1000
Subject: Re: [belajar-excel] Menyatukan 2 atau 3 baris menjadi 1 baris data















































Anda atur saja deh ya...


Untuk melacak kenapanya, ikuti cara kerja script ini :
    cells(rows.count,3).end(xlup).row


Di kolom C, ke baris terakhir Excel (baris 1 juta sekian), lalu CTRL panah atas 
supaya tahu berhentinya dimana. Itu dia penyebabnya.
Solusinya bagaimana ?
Kosongkan seluruh isi kolom C setelah record terakhir data, atau Anda cari di 
arsip lawas milis maupun di blog milis tentang cara menentukan baris terakhir 
record data. Terapkan ke baris kode tersebut supaya bisa didapat baris Excel 
yang tepat untuk memulai loop.












2015-05-27 17:26 GMT+10:00 Ahmad Syaifullah Lubis [email protected] 
[belajar-excel] <[email protected]>:

















































Dear Mr Kid,
maaf, ternyata selain kata "Total" yang menghilang, rupanya baris yang berisi 
"sum" nya juga di Kolom E nya menghilang.
Tetapi kalau sebelum macro dijalankan kata "total" kalau tidak ada, maka fungsi 
sum di Kolom D dan E tetap ada.
terima kasih,
ASL


From: [email protected]
To: [email protected]
Date: Wed, 27 May 2015 07:19:34 +0000
Subject: RE: [belajar-excel] Menyatukan 2 atau 3 baris menjadi 1 baris data























































































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: [email protected]
From: [email protected]
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 [email protected] 
[belajar-excel] <[email protected]>:



























































































































































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: [email protected]
From: [email protected]
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





















































































                                         































































































































































































                                



















































  






















































                                          

Attachment: REQUEST 3 BARIS MENJADI 1 BARIS.xlsm
Description: Binary data

Kirim email ke