การค้นหาใน 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
📹 Video แสดงการค้นหาด้วย VBA
🧭 Timeline หัวข้อหลัก
- 00:00:18 แนะนำการค้นหาใน Excel ด้วย Ctrl+F และข้อจำกัด
- 00:00:45 แนวคิดการใช้ VBA เพื่อค้นหาและแสดงผลทั้งแถว
- 00:01:20 เขียนโค้ดใน Module1 เพื่อค้นหาและซ่อนแถว
- 00:02:30 เขียนโค้ดในชีต Database เพื่อเรียกใช้งานเมื่อ B1 เปลี่ยนค่า
- 00:03:40 ทดสอบการค้นหา: พิมพ์คำค้นแล้ว Enter → แสดงเฉพาะแถวที่ตรง
- 00:04:30 สรุป: ค้นหาแบบอัตโนมัติและแสดงผลเฉพาะข้อมูลที่เกี่ยวข้อง