June 23, 2015

Filter Data dengan Metode 'Search'


Pada tabel data yang sudah di-filter, menyaring data dengan metode search bisa dilakukan secara manual dengan cara meng-klik tanda segitiga di sebelah kanan header dan memasukkan kata kuncinya di kotak 'Search'. Sebagai contoh, saya gunakan tabel yang berisi daftar judul artikel di blog ini. Di tabel ini ada 4 header, yaitu NO, JUDUL, LABEL dan URL. Pertama blok bagian header, dan pilih menu Data > Filter. Di setiap header akan muncul tanda segitiga di sebelah kanannya.



Filter Data dengan Metode 'Search'-01
Filter Data dengan Metode 'Search'
Masukkan kata kunci di bagian Search, tabel akan menyaring dan menampilkan data yang hanya mengandung kata kunci tersebut. Kurang lebih seperti itulah cara manualnya. Yang akan dibahas lebih lanjut di sini yaitu melakukan cara-cara di atas dengan memanfaatkan VBA. Kata kunci yang akan digunakan untuk menyaring data kita masukkan di sel B2, dan di sel C2 berisi combo box untuk memilih bagian header dimana filter akan diberlakukan, di sini saya menggunakan 2 kriteria yaitu header judul dan label. Pertama, ubah data yang sudah dibuat ke format tabel. Caranya blok seluruh data beserta headernya (A4 sampai D19), lalu pilih menu Insert > Table. Kedua, buatkan combo box di sel C2 dengan data validation. Pilih sel C2 dan pilih menu Data > Data Validation. Pada jendela Data Validation, di tab Settings pilih 'List' di bagian Allow, dan di bagian Source ketikkan Filter by Judul;Filter by Label, klik OK. Ganti tanda ";" dengan ","  jika hasilnya tidak sesuai harapan.
Jendela Data Validation
 Jika sudah, maka jika kita pilih sel C2 dan meng-klik tanda segitiga di sebelah kanan seharusnya akan muncul seperti ini,
Langkah ketiga, membuat macro VBA untuk event Worksheet_Change. Buka jendela VBE (Visual Basic Editor) dengan menekan tombol Alt+F11. Pada jendela Project, klik 2x "Sheet1(Sheet1)" di bagian Microsoft Excel Objects. Pada jendela Code (di sebelah kanan) masukkan kode di bawah ini,


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cariapa As String, kolomheader As String
    Dim rngcari As Range, temukan As Range
    Dim nomorfield As Integer
    
    If Target.Address = Range("B2").Address Then
        Select Case Range("C2").Value
            Case "Filter by Judul"
                nomorfield = 2
                Set rngcari = Range("Table1[JUDUL]")
            Case "Filter by Label"
                nomorfield = 3
                Set rngcari = Range("Table1[LABEL]")
        End Select
    
        cariapa = "*" & Range("B2").Value & "*"
        
        Select Case Range("B2").Value
            Case Is <> ""
                Set temukan = rngcari.Find(Range("B2").Value, LookIn:=xlValues)
                If temukan Is Nothing Then
                    MsgBox "Nothing Found", vbOKOnly, "Nihil"
                Else
                    rngcari.AutoFilter Field:=nomorfield, Criteria1:=cariapa
                End If
            Case Else
                ListObjects(1).Range.AutoFilter Field:=nomorfield
        End Select
    End If
    
    Set rngcari = Nothing
    Set temukan = Nothing
End Sub

Simpan file dengan format .xlsm atau .xlsb. Untuk mencoba apa yang sudah dibuat, pilih "Filter by Judul" di sel C2 dan masukkan kata kunci di sel B2, lalu tekan Enter. Untuk menampilkan seluruh data tanpa filter, hapus saja sel B2. Semoga bermanfaat.

Download file Filter Data dengan Metode Search.

0 comments:

Post a Comment

Copyright © 2015 ExcelPix All Right Reserved
Shared by Themes24x7