การแปลง Report ไปเป็น Database

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

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

Sub CollectData()
    Dim r As Range, s As Worksheet
    With Sheets("Database")
        .UsedRange.ClearContents
        .Range("a1:d1").Value = Array("CC", "Pd", "Mth", "Val")
    End With
    For Each s In Worksheets
        If s.Name <> "Database" Then
            For Each r In s.UsedRange.SpecialCells(xlCellTypeConstants, 1)
                With Sheets("Database").Range("a" & Rows.Count) _
                    .End(xlUp).Offset(1, 0)
                    .Offset(0, 0).Value = s.Name
                    .Offset(0, 1).Value = s.Cells(r.Row, 1).Value
                    .Offset(0, 2).Value = s.Cells(1, r.Column).Value
                    .Offset(0, 3).Value = r.Value
                End With
            Next r
        End If
    Next s
End Sub

Video แสดงการแปลง Report ไปเป็น Database

Scroll to Top