Jumat, 18 Februari 2011

Menjawab pertanyaan Saudara Huda melalui email tentang macro VBA yang otomatis dijalankan saat sebuah sel berubah nilainya. Berikut gambarannya:


Yang dishading hijau adalah sel-sel yang sudah ada formulanya di mana jika sel A1 berubah nilainya, maka isi tabel tersebut langsung berubah. Jadi bagaimana caranya jika sel A1 dirubah nilainya menjadi 1, 2, atau 3 dan otomatis baris yang nilainya kosong (baris 26 s/d 33) langsung ter-hidden?

Berikut caranya:

  1. Di Excel silahkan buka Visual Basic Editor pada menu Tools > Macro > Visual basic Editor (Alt + F11).
  2. Klik ganda pada sheetnya lalu masukkan code VBAnya:

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$1" Then
         Worksheet_Calculate                    'macro yang akan dijalankan saat sel A1 berubah
    End If
    End Sub


  3. Pilih Insert > Module dan tuliskan code VBA berikut:

    Sub Worksheet_Calculate()
        Dim Rng As Integer
        Range("BASTB!H24:H33").Select        
    'Menentukan baris mana saja yang akan di hide
        Selection.EntireRow.Hidden = False      'Baris akan di unhide
        Rng = Selection.Rows.Count
        ActiveCell.Offset(0, 0).Select
        Application.ScreenUpdating = True
        For i = 1 To Rng
        If ActiveCell.Value = "-" Then                'Tanda "-" bisa diganti dengan 0 atau "teks apa saja"
        Selection.EntireRow.Hidden = True        'Baris akan di hide
        ActiveCell.Offset(1, 0).Select
        Else
        ActiveCell.Offset(1, 0).Select
        End If
        Next i

    'Jika ada baris lain yang akan dihide, maka tambahkan lagi codingnya

        Range("BASTB!H41:H50").Select        'Menentukan baris mana saja yang akan di hide
        Selection.EntireRow.Hidden = False      'Baris akan di unhide
        Rng = Selection.Rows.Count
        ActiveCell.Offset(0, 0).Select
        Application.ScreenUpdating = True
        For i = 1 To Rng
        If ActiveCell.Value = "-" Then                 'Tanda "-" bisa diganti dengan 0 atau "teks apa saja"
        Selection.EntireRow.Hidden = True        'Baris akan di hide
        ActiveCell.Offset(1, 0).Select
        Else
        ActiveCell.Offset(1, 0).Select
        End If
        Next i

    'Akhiri dengan menambahkan coding di bawah ini
        Range("BASTB!A1").Select          'menempatkan sel kembali ke A1
    End Sub

  4. Jika ada beberapa baris yang akan dihide, maka ulangi code Simpan file tersebut dan silahkan coba
Read More

Selasa, 15 Februari 2011

Memisahkan Nama Dengan 3 (Tiga) Kata

Menjawab pertanyaan saudara Yoga pada postingan saya yang berjudul "Memisahkan Nama Depan dan Nama Belakang" dan meminta saya untuk dibuatkan rumusnya, maka berikut adalah rumusnya.

Rumus saya buat dalam dua versi:

  1. Mencari karakter spasi (" ") sebagai pemisah di antara ketiga nama (kolom B & C) sedang nama yang terpisah terdapat di kolom D, E, dan F.
  2. Menggabungkan rumus (tanpa kolom B & C)

Lihat ilustrasi berikut:

Versi I:


Rumus:
  • Kolom B: =(FIND(" ",A1,1)+1)
    • Mencari karakter spasi pertama. Spasi ditemukan di karakter ke-8. Plus 1 (+1) artinya mencari karakter untuk nama kedua, yaitu karakter ke 9.
  • Kolom C: =FIND(" ",A1,B1)
    • Mencari karakter spasi kedua. Karakter spasi kedua ditemukan dikarakter ke-14.
  • Kolom D: =LEFT(A1,FIND(" ",A1,1)-1)
    • Mendapatkan nama pertama, yaitu karakter paling kiri sebanyak karakter sebelum (-1) spasi.
  • Kolom E: =MID(A1,FIND(" ",A1,1)+1,(C1-B1))
    • Mendapatkan nama tengah, yaitu dimulai dari karakter di kolom B, sebanyak karakter kolom C minus kolom B. Kolom C minus kolom B akan mendapatkan nilai sebanyak jumlah karakter nama kedua. 
  • Kolom F: =MID(A1,FIND(" ",A1,C1)+1,100)
    • Mendapatkan nama belakang, yaitu dimulai dari karakter di kolom C, asumsi sebanyak 100 karakter.

Versi II


Jika digabung, maka rumusnya akan sebagai berikut:
  • Kolom B: =LEFT(A1,FIND(" ",A1,1)-1)
  • Kolom C: =MID(A1,FIND(" ",A1,1)+1,(FIND(" ",A1,(FIND(" ",A1,1)+1))+1)-(FIND(" ",A1,1)+1)-1)
  • Kolom D: =MID(A1,FIND(" ",A1,(FIND(" ",A1,1)+1))+1,100)


MENGATASI HASIL ERROR (#VALUE)

Ketiga rumus di atas harus berisikan 3 nama seperti "Maulana Malik Ibrahim". Jika namanya hanya "Maulana Malik" atau "Maulana" saja maka hasilnya akan menjadi #VALUE. Untuk mengatasi masalah ini maka rumus harus ditambah dengan rumus ISERROR dan IF.

Syntaxnya seperti ini:
=IF(ISERROR(rumus_awal)=TRUE,rumus_alternatif,rumus_awal)

Artinya: Jika rumus_awal mengasilkan nilai error (TRUE), maka jalankan rumus_alternatif, jika tidak error maka jalankan rumus_awal. Maka rumusnya akan seperti ini:

  • Kolom B: =IF(ISERROR(FIND(" ",A1,1))=TRUE,LEFT(A1,100),LEFT(A1,FIND(" ",A1,1)-1))
  • Kolom C: =IF(ISERROR(FIND(" ",A1,1))=TRUE,"",IF(ISERROR(MID(A1,FIND(" ",A1,1)+1,(FIND(" ",A1,(FIND(" ",A1,1)+1))+1)-(FIND(" ",A1,1)+1)-1))=TRUE,MID(A1,FIND(" ",A1,1)+1,100),MID(A1,FIND(" ",A1,1)+1,(FIND(" ",A1,(FIND(" ",A1,1)+1))+1)-(FIND(" ",A1,1)+1)-1)))
  • Kolom D: =IF(ISERROR(MID(A1,FIND(" ",A1,(FIND(" ",A1,1)+1))+1,100))=TRUE,"",MID(A1,FIND(" ",A1,(FIND(" ",A1,1)+1))+1,100))
Hasilnya memang akan menjadi panjang, tapi dengan rumus ini hasilnya akan menjadi fleksibel yaitu bisa dengan 1 nama, 2 nama, maupun 3 nama. Selamat mencoba!
Read More
Backlinks to my website? ping fast  my blog, website, or RSS feed for Free Tips dan Trik Sukses Bisnis OnlineindotradingUAW BMKGNTTfree indotradingcms | indotradingsakpa
Search Engine
www.e-referrer.com