Page 1 of 1
VBA Transpose Data
Posted: Tue May 07, 2019 5:15 pm
by parakorn
เรียนอาจารย์ และ พี่ๆทุกท่านครับ
เผอิญต้องการ Convert ข้อมูล เพื่อสร้าง Database โดยต้องการ Repeat ตามจำนวนเดือนที่ข้อมูลมียอด [ยอดมีหลายอย่าง]ครับ ตัวอย่าง Data ที่มี และ ผลลัพท์ที่ต้องการในไฟล์ครับ
รบกวนด้วยครับ

Re: VBA Transpose Data
Posted: Thu May 09, 2019 11:42 pm
by snasui

ตัวอย่าง Code ครับ
ให้คัดลอกหัวคอลัมน์ที่ต้องการไปวางที่ Sheet
3 แล้ว Run Code ด้านล่างครับ
Code: Select all
Sub Test0()
Dim rAll As Range, r As Range
Dim rngForLoop As Range, rngLoop As Range
Dim c As Integer, l As Integer, k As Integer
Dim n As Integer, m As Integer, o As Integer
Dim arr(9999, 176) As Variant
With Worksheets("Sheet1")
Set rAll = .Range("fk6", .Range("fk" & .Rows.Count).End(xlUp))
k = 0
For Each r In rAll
l = 0
For iCol = 0 To .Range("fk5:kk5").Columns.Count Step 13
Set rngForLoop = r.Offset(0, iCol).Resize(1, 12)
c = 0
For Each rngLoop In rngForLoop
n = m + c
For o = 0 To 164
arr(n, o) = .Cells(rngLoop.Row, 2).Offset(0, o).Value
Next o
arr(n, 165) = .Cells(5, rngLoop.Column).Value
arr(n, 166 + l) = rngLoop.Value
c = c + 1 'month col
k = k + 1 'all line
Next rngLoop
l = l + 1 'each range
Next iCol
m = m + 12 'month
Next r
End With
With Sheets(3)
.Range("b6").Resize(k, 177).Value = arr
End With
End Sub