การค้นหาใน 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 |