การค้นหาใน Excel สามารถกดแป้น Ctrl+F เพื่อเปิดกล่องโต้ตอบที่ใช้สำหรับการค้นหา กรอกข้อมูลที่ต้องการแล้วคลิกปุ่ม Find Next หรือ Find All แล้วแต่ว่าต้องการค้นหาไปทีละค่าหรือค้นหาทั้งหมด การค้นหาดังกล่าวเป็นการวิ่งไปยังเซลล์ที่พบข้อมูลหากจะให้แสดงผลทั้งบรรทัดจำเป็นต้องใช้ VBA เข้ามาจัดการ
Video ด้านล่างนี้เป็นการสาธิตการค้นหาด้วย VBA โดยจะทำการค้นหาไปยังแต่ละเซลล์ในบรรทัดนั้น ๆ หากพบข้อมูลที่ต้องการจะแสดงขึ้นมาทั้งบรรทัด และหากไม่พบข้อมูลก็จะซ่อนบรรทัดนั้นไว้ ซึ่งได้เพิ่มความสะดวกในการค้นหาโดยการคีย์ข้อมูลที่ต้องการค้นหาแล้ว Enter โปรแกรมก็จะทำการค้นหาให้ทันที โดยตัวอย่างนี้จะมี Code 2 ชุด ชุดแรกวางที่ชีต Database เพื่อให้ทำงานทันทีหลังจากเซลล์ B1 มีการเปลี่ยนแปลงโดยไปเรียก Code ชุดที่สองที่วางที่ Module 1 ให้งานต่ออีกทอดเพื่อค้นหาข้อมูล ทำการซ่อนบรรทัดที่ไม่พบข้อมูลและแสดงบรรทัดที่พบข้อมูล ?
Code ใน Module1
Sub MyAdvancedSearch()
Dim r As Range, v As String, s As String
With Sheets("Database")
.Range("a3").CurrentRegion.EntireRow.Hidden = False
s = LCase(.Range("b1").Value)
For Each r In .Range("a4", .Range("a" & .Rows.Count).End(xlUp))
v = ""
v = v & r.Value
v = v & r.Offset(0, 1).Value
v = v & r.Offset(0, 2).Value
v = v & r.Offset(0, 3).Value
v = v & r.Offset(0, 4).Value
v = LCase(v)
If Not v Like "*" & s & "*" Then
r.EntireRow.Hidden = True
End If
Next r
End With
End Sub
Code ในชีต Database
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "B1" Then
Call Module1.MyAdvancedSearch
End If
End Sub