Wednesday, December 23, 2009

Membuat Fungsi Di MS Excel

Kita tentu sudah mengenal fungsi-fungsi yang umum digunakan di Excel, misalnya fungsi MAX, MIN, LOOKUP, AVERAGE, SQRT, dll. Tiap-tiap fungsi mempunyai tugas yang berbeda-beda. Kita dapat melihat semua fungsi yang ada di MS Excel melalui menu Insert->Function.

Tidak jarang pula kita mengalami kesulitan sehingga harus menggunakan dua atau lebih fungsi Excel. Misalnya ketika ingin mencari nilai maksimum absolut dari suatu range. Maksimum absolut maksud saya di sini adalah nilai maksimum tanpa mempedulikan tanda positif atau negatif. Yang sering melakukan analisis struktur khususnya ETABS, SAPatau sejenisnya, sering menjumpai kondisi di mana kita akan mengambil nilai momen lentur maksimum (tanpa melihat tanda positif atau negatif).

Misalnya saja, ada data-data sbb:
250, 300, -325, -258, 278

  • Kalau kita gunakan fungsi MAX() maka hasilnya adalah 300.
  • Kalau kita gunakan fungsi MIN() hasilnya -325, yang nilai absolutnya lebih besar daripada 300.
  • Solusinya, kadang kita membuat fungsi kompleks
    =IF(MAX(range)>ABS(MIN(range)),MAX(range),MIN(range))
    Yang artinya: jika nilai maksimum range lebih besar daripada absolut minimum range, maka ambil nilai maksimum, jika tidak, ambil minimum.

Bagaimana kalo kita bikin fungsi sendiri saja? Biar lebih gampang. Apalagi kalo fungsi itu sering digunakan. Kita tidak perlu lagi mengetik fungsi di dalam fungsi. Apalagi kalau terlalu banyak menggunakan buka-tutup kurung, jangankan si pengguna, MS Excel-nya saja kadang suka “mumet” kalau terlalu banyak buka-tutup kurungnya :) Kadang-kadang begitu selesai mengetikkan fungsi, ternyata ada kesalahan, misalnya kurang tanda tutup kurung, penempatan koma atau titik koma yang salah, dll.

A. Membuat Fungsi ABSMAX
Fungsi ini kita namakan ABSMAX sajalah, yang artinya Absolute Maximum. Fungsi ini nggak ada di default Excel lho. Coba saja ketik ‘=ABSMAX(A1)’, niscaya Excel akan menampilkan pesan kebingungan. :D

Perlu diingat, penamaan fungsi sifatnya bebas yang penting belum ada di dalam fungsi standar MS Excel. Mau pake nama fungsi FUNGSIJURAGAN juga bisa. Tapi kan sebaiknya nama fungsi merepresentatifkan maksud dan tujuan fungsi tersebutTapi, ada beberapa aturan penamaan, misalnya:

  • tidak boleh pake spasi
  • harus diawali oleh huruf
  • boleh pake angka
  • tidak boleh karakter lain, kecuali underscore (_)
  • hurup besar (kapital) hurup kecil sama saja
  • tidak boleh pake kata kunci VB, misalnya dim, single, then, dll
  • dll..

Itu aja sih.. :)

Next, ikuti saja step-step berikut:

  1. Buka MS Excel. Buka VB Editor, dengan cara :
    • Tombol Alt + F11, atau
    • Menu Tools -> Macro -> Visual Basic Editor
  2. Di sebelah kiri harusnya ada jendela Project Explorer. Kalau tidak ada coba tekanCtrl+R atau klik menu View -> Project Explorer
  3. Highlight (sorot) VBAProject (namafile.xls). Di tutorial ini saya pakai namafileFungsi Khusus.xls. Klik kanan -> Insert -> Module
    fungsi-khusus_6808_image003fungsi-khusus_6808_image004
  4. Module adalah tempat dimana kita menuliskan fungsi. Harus di module? Ya! Tidak ada tawar menawar. Klik ganda Module1 yang baru saja muncul di Project Explorer. Anda akan dibawa ke sebuah layar utama yang masih kosong. Untuk memastikan anda sedang aktif di Module1, perhatikan salah satu dari 4 gejala berikut ini.
    fungsi-khusus_6808_image006
  5. Mari kita isi layar putih tersebut dengan kode berikut:fungsi-khusus_6808_image009
  6. Berikut penjelasannya:
    • Function ABSMAX (R as range, param as Integer)
      ABSMAX adalah nama fungsi,
      R adalah nama variabel yang tipenya Range. Range adalah obyek pada MS Excel yang berisi satu atau lebih sel.
      Variabel R boleh diganti dengan yang lain misalnya Jengkol as Range.
      param adalah variabel integer. Ini untuk mengatur seandainya nilai yang terpilih adalah nilai negatif, maka apakah negatifnya yang diambil atau nilai absolutnya (positif). Jika 0, ambil nilai aslinya (negatif), jika 1 ambil nilai absolut (positif).
    • Deklarasi variabel. Beberapa programmer kadang mengabaikan bagian ini. Untuk aplikasi atau fungsi yang ringan, deklarasi variabel kadang tidak dilakukan. Penentuan tipe variabel ini berkaitan dengan alokasi memori yang akan digunakan pada saat eksekusi.
    • Vmaks untuk menyimpan nilai maksimum,
      Vmin untuk menyimpan nilai minimum.
      i adalah indeks untuk looping.
      N adalah jumlah sel yang ada pada range R
    • Looping untuk mencari nilai maksimum dan minimum. Cara kerjanya sepertinya tidak usah dibahas
    • Kemudian kita bandingkan Vmaks dengan Vmin, mana yang nilai absolutnya lebih besar, itulah yang diambil.
      Seandainya ternyata absolut Vmin lebih besar, cek lagi variabel param, apakah tanda minusnya mau dipake atau nggak?
    • Catatan, nama fungsi harus segera dikembalikan. Artinya ketika kita mendefinisikan suatu fungsi, pada saat itu juga terbentuk sebuah variabel yang namanya sama dengan nama fungsi, dan variabel ini harus diisi sesuai dengan tujuannya. Fungsi ABSMAX di atas secara otomatis membentuk sebuah variabel ABSMAX. Nilai ABSMAX inilah yang akan ditampilkan sebagai outputnya.
  7. Cara penggunaannya bisa dilihat pada ilustrasi di bawah ini. Jangan lupa simpan pekerjaan anda. :)
    fungsi-khusus_6808_image010
  8. Oke?

B. Membuat Fungsi LUAS_WF()

Nah, fungsi yang satu ini sangat bermanfaat bagi kita yang sering bergelut dengan penampang-penampang baja khususnya profil WF.

Langsung saja, secara kasar, luas penampang profil WF bisa dihitung sbb:

A_{wf} = 2(B \times t_f) + (H - 2t_f)t_w

Selanjutnya kita buka kembali VisualBasic Editor, dan masuk ke Module1. Mau bikin Module baru juga nggak dilarang kok. Satu Module boleh ditulisi fungsi sebanyak-banyaknya. Cuman, kadang kalau terlalu banyak, kita jadi susah mengaturnya.

fungsi-khusus_6808_image012

ralat : harusnya pada gambar di atas, tw diganti tf, dan sebaliknya tf diganti tw. (mohon maaf)

Tulis fungsi seperti ilustrasi di bawah. Fungsi LUAS_WF() ini kita letakkan di bawah Fungsi ABSMAX(). Tenang saja, nggak akan mengganggu fungsi yang lain kok.

Saya rasa kita tidak butuh penjelasan lebih jauh tentang fungsi di atas. Cuma satu baris.. :D

Contoh penggunaannya :

fungsi-khusus_6808_image016

Kok beda ama tabel ya. Di tabel hasilnya 2716 mm^2. Itu karena ada lengkungan “ketiak” yang ikut diperhitungkan.

C. Menyimpan Module

Fungsi-fungsi yang sudah kita buat sayangnya hanya bisa digunakan oleh file xls yang bersangkutan. Untuk bisa digunakan di file xls yang lain, module ini harus diekspor terlebih dahulu.

1. Mengekspor module

  • Klik Kanan Module1 di bagian Project Explorer, pilih Export File…fungsi-khusus_6808_image017
  • Simpan dengan nama apa saja, ekstensi .bas.fungsi-khusus_6808_image018

2. Mengimpor module di file lain.

  • Buka file lain, atau buat file xls baru (Book1).
  • Buka Visual Basic Editor (Alt + F11)
  • Sorot Project Explorer (sebelah kiri), klik kanan nama file -> Import File…fungsi-khusus_6808_image021
  • Buka file .bas yang sudah diekspor sebelumnyafungsi-khusus_6808_image022
  • Dalam sekejap, spreadsheet anda sudah berisi kumpulan fungsi-fungsi khusus buatan anda.fungsi-khusus_6808_image024

Selamat mencoba.

Semoga bermanfaat.


0 comments: