การค้นหาข้อมูลหลายชีตด้วย VBA

เมื่อข้อมูลแยกกันอยู่หลายชีตการเข้าถึงข้อมูลจะยุ่งยากขึ้นมาทันที แม้เราจะมีฟังก์ชั่นการค้นหาของ Excel ที่มีความสามารถสูงส่งก็ยังไม่มีความเป็นอัตโนมัติพอที่่จะให้เราทำงานได้โดยสะดวกรวดเร็ว วิธีการที่จะให้เกิดความสะดวกในการค้นหาข้อมูลตามที่เราต้องการแล้วนำมาเรียงต่อกันในชีตเดียวได้อย่างรวดเร็วได้นั้นคือการใช้ VBA

Video ด้านล่างนี้เป็นการเขียนโปรแกรมค้นหาข้อมูลจากหลายชีตแล้วนำรายการที่พบมาเรียงต่อกันในชีตเดียว พร้อมทั้งวิธีสร้างปุ่มกดเพื่อใช้ในการค้นหาข้อมูล เหมาะสำหรับผู้ที่มีข้อมูลจำนวนมาก ๆ แยกกันอยู่ในหลาย ๆ ชีต จะช่วยลดระยะเวลาในการค้นหาได้อย่างมหาศาล โดยมีตัวอย่าง Code ตามด้านล่างครับ ?

Sub SearchMultipleSheets()
    Dim arr(999, 4) As Variant, r As Range
    Dim ws As Worksheet, i As Integer, s As String
    With Sheets(1)
        s = .Range("c1").Value
        .Range("a3").Resize(.UsedRange.Rows.Count, _
            .UsedRange.Columns.Count).ClearContents
    End With
    For Each ws In Worksheets
        If ws.Name <> Sheets(1).Name Then
            With ws
                For Each r In .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
                    If r.Value & r.Offset(0, 1).Value & _
                        r.Offset(0, 2).Value & _
                        r.Offset(0, 3).Value Like "*" & s & "*" Then
                        arr(i, 0) = r.Value
                        arr(i, 1) = r.Offset(0, 1).Value
                        arr(i, 2) = r.Offset(0, 2).Value
                        arr(i, 3) = r.Offset(0, 3).Value
                        arr(i, 4) = ws.Name
                    End If
                Next r
            End With
        End If
    Next ws
    With Sheets(1)
        .Range("a3").Resize(i, 5).Value = arr
    End With
End Sub

Video แสดงการค้นหาข้อมูลจากหลายชีต