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