Pilihan Bahasa/Language Option

Jumat, 07 Maret 2014

Membuat keluaran dengan panjang yang tidak berubah, Leading Zero dan Blank Space (Project)

Salah satu kelebihan microsoft excel adalah fungsi-fungsi yang "built-in" untuk melakukan berbagai operasi, mulai dari operasi aritmatika seperti penambahan (SUM), operasi logika seperti pengandaian (IF), sampai operasi statistik. Hanya saja pada pengolahan data yang rumit seringkali kita mengalami kesulitan karena fungsi yang ada kurang lengkap untuk mengolah data yang diinginkan. Terkadang untuk mengolah satu data, saat menggunakan fungsi-fungsi dalam excel, harus dilakukan beberapa tahap baru dapat menghasilkan keluaran yang diinginkan. 

Pada project dibawah, saya akan sedikit mengupas, bagaimana mengubah sebuah data excel (data masuk, input) menjadi file teks dengan panjang yang tetap disetiap kolom, fixed length yang pada akhirnya panjang semua file keluaran adalah sama, walaupun file masukan/input semuanya tidak sama. Data excel tersebut memiliki empat kolom, yaitu Nomor, Nama, Alamat, dan Jumlah Pembayaran. Setiap data ini harus mengikuti aturan untuk menghasilkan file teks yang diinginkan. 

Input Excel File
Aturan dalam Pambuatan File Output

Contoh Output dalam File Teks
Untuk membuat dalam excel, pengolahan data diatas, akan memakan waktu yang cukup banyak. Cara yang paling "cerdik" adalah menggunakan fungsi, yang dikombinasikan dengan VBA Programming, macro, dengan barikut langkah-langkahnya. 
  1. Buka visual basic editor dalam microsoft excel, dimana file input berada. 
    Membuka Visual Basic Editor
  2. Buat sebuah modul, module 1. 
    Membuat Module 1
  3. Lalu tuliskan baris kode berikut dalam module 1.
    Kode Program
  4. Gunakan formula =LZBS(Tipe Output, Aturan Panjang Kolom, Isi Sel yang akan di convert), berdasarkan nama fungsi yang dibuat dalam kode program. 
    Pengunaan Fungsi LZBS
  5. Hasil penggunaan fungsi diatas akan menjadi seperti dibawah ini. 
    Hasil penggunaan Fungsi pada semua Field
  6. Setelah itu, gabungkan semua field diatas dengan menggunakan fungsi concatenate dalam excel, kemudian copy dan paste ke file teks. 
    Fungsi concatenate untuk menggabungkan hasil dalam excel
  7. Berikut adalah hasil paste, dalam file teks. 
    Output file dalam file teks
  8. Terlampir juga input, program dan hasil output untuk project ini. 

Thanks!!


Kode program untuk proses konversi diatas : 
Function LZBS(sTipeOutput As String, sPanjangKolom As Integer, sIsiKolom As String)
'=================================================================================================================
'VARIABEL
'Variabel yang digunakan untuk menyimpan data adalah sTipe Output, sPanjangKolom, sIsiKolom, PanjangDiperlukan,
'                                                    dan PanjangIsiKolom
'sTipeOutput adalah tempat untuk menyimpan tipe output yang diinginkan, leading zero("LZ") atau blank space("BS")
'sPanjangKolom adalah panjang kolom output yang diinginkan, sesuai dengan aturan lebar setiap kolom
'sIsiKolom adalah isi/nilai sel input, bisa berupa angka 1, nama atau apapun yang nanti akan di-convert
'*PanjangIsiKolom adalah panjang dari isi/nilai sel input.
'**PanjangDiperlukan adalah banyaknya nol atau spasi yang dibutuhkan untuk memenuhi aturan lebar setiap kolom.


PanjangsIsiKolom = Len(sIsiKolom) 'Lihat Penjelasan(*)
'Kode utama dari logika ini dibagi menjadi dua, yakni Bagian Pertama : panjang isi/nilai sel input kurang dari
'aturan lebar dan Bagian Kedua : panjang isi/nilai sel input lebihdari atau sama dengan aturan lebar.
If PanjangsIsiKolom < sPanjangKolom Then 'Bagian Pertama
    
    PanjangDiperlukan = sPanjangKolom - PanjangsIsiKolom 'Lihat Penjelasan(**)
    'Sub-bagian kode juga dibagi menjadi 2, yakni Tipe output "LZ" dan "BS"
    If sTipeOutput = "LZ" Then 'Tipe Leading Zero
        sTemp = sIsiKolom
        For i = 1 To PanjangDiperlukan 'Looping untuk menambah jumlah nol, sesuai dengan kebutuhan
            sTemp = "0" & sTemp
        Next i
        LZBS = sTemp
        sTemp = ""
    ElseIf sTipeOutput = "BS" Then 'Tipe Blank Space
        sTemp = sIsiKolom
        For i = 1 To PanjangDiperlukan 'Looping untuk menambah jumlah spasi, sesuai dengan kebutuhan
            sTemp = sTemp & " "
        Next i
        LZBS = sTemp
        sTemp = ""
    End If

ElseIf PanjangsIsiKolom >= sPanjangKolom Then 'Bagian Kedua
    LZBS = Left(sIsiKolom, sPanjangKolom)

End If
End Function

Tidak ada komentar:

Posting Komentar