Kamis, 09 Desember 2010

Tips Mempercepat Proses Macro Excel

Saya lebih banyak menggunakan Macro Excel atau biasa disebut Visual Basic for Applications (VBA) untuk mengolah data dengan jumlah banyak, atau untuk menjalankan proses pengolahan data di file excel yang memerlukan pengerjaan berulang-ulang. Misalnya saat ini macro saya gunakan untuk mengolah data rating program TV yang jumlah datanya bisa ribuan baris, atau bisa juga mengolah data survey lapangan yang jumlahnya tentu sangat banyak.

Macro bisa mempermudah kita dalam proses pengolahan data dalam Excel, tapi untuk pengolahan data dengan jumlah yang sangat banyak, kadang-kadang proses running macro ini bisa jadi butuh waktu yang lama. Misalnya saya menggunakan macro Excel untuk menghitung jumlah voting SMS yang jumlahnya bisa ribuan atau mungkin ratusan ribu, dan waktu yang dibutuhkan bisa mencapai >24jam nonstop.


Belakangan, setelah banyak mencoba metode teknik penulisan macro, saya punya beberapa tips untuk pengguna macro yang mungkin bisa digunakan untuk mempercepat proses running macro Excel anda. Berikut beberapa tips-nya, (catatan dengan bahasa seadanya, karena memang belajar otodidak):

>> Application.ScreenUpdating = False
Application.ScreenUpdating = False perintah ini membuat proses macro Excel berjalan tanpa memperlihatkan perubahan yang terjadi pada layar Excel. Selama proses macro berjalan, tampilan window Excel tidak akan berubah sampai nanti proses macro ini selesai.

Proses ini bisa mempercepat proses macro dengan sangat signifikan, karena otomatis memory komputer terbebas dari penggunaan memory untuk merubah tampilan layar, dan seluruh memory dikonsentrasikan pada proses running macro. Hasil ini paling terasa pada proses mengolah/edit file excel.

Sebagai contoh, bandingkan 2 kode macro ini dari segi kecepatan.

'tanpa Application.ScreenUpdating
Sub Macro1()
  For i = 1 to 20000 step 1
     Cells(i,2) = i
  Next i
End Sub

'dengan Application.ScreenUpdating
Sub Macro2()
Application.ScreenUpdating = False
  For i = 1 to 20000 step 1
     Cells(i,2) = i
  Next i
End Sub


>> Hindari perintah Select
Ya, hindari atau kurangi penggunaan perintah Select. Sewaktu mengolah Cells di Excel, sebaiknya hindari perintah Select, yang mana dengan perintah ini maka komputer akan mengalokasikan sebagian memory untuk memindahkan kursor kelokasi cell yang di "select", dan ini berarti butuh sejumlah memory untuk merubah tampilan layar aplikasi Excel.

Misalkan,
Cells(3,4).Select
Selection.Interior.ColorIndex = 30

Bisa dibuat menjadi
Cells(3,4).Interior.ColorIndex = 30

Bandingkan 2 contoh kode berikut ini:
'dengan perintah select
Sub Macro1()
  For i = 1 to 20000 step 1
     Cells(i,2).select
     Selection.Value = i
  Next i
End Sub


'tanpa perintah select
Sub Macro1()
  For i = 1 to 20000 step 1
     Cells(i,2).Value = i
  Next i
End Sub


>> Gunakan Matriks / Array
Untuk pengolahan data dalam jumlah besar, gunakan Array atau Matriks. Jadi data yang ada dalam file Excel dicopy terlebih dahulu menjadi sebuah database Array, dan untuk selanjutnya data array ini yang diolah. Dengan proses ini semakin berkurang memory yang dibutuhkan oleh macro untuk mengakses data di cells-cells dalam file Excel.

Bagaimana cara membuat array dalam macro bisa anda baca di posting ini "Macro For NewBie: Declarasi Array dalam Macro".
Semoga bermanfaat...

3 komentar:

  1. Ternyata selain jago jualan domain,
    bro Jumabatu jago VBA juga.

    Keren!

    BalasHapus
  2. Bukan jago bro, sekedar bisa aja

    Kalo VBA kebetulan belajar otodidak karna memang dibutuhkan dikerjaan sekarang.

    thanks udah mampir

    BalasHapus
  3. Mantab Mas Bro pencerahannya...
    saya memang sedang mencari cara untuk mempercepat proses macro di excel. maklum database yang saya pakai lumayan besar (panjang x lebar)

    BalasHapus