Bài này là kinh điển của GPE, chuyển dữ liệu từ nơi này sang nơi khác.
Code chán phèo, giải pháp cũ rích.
Sub UnPivotDT()
With WorkSheets("DATA")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
a = .Range("A1").Resize(lRow, lCol).Value
End With
Redim b(1 To lRow*lCol, 1 To 3)
b(1, 1) = "Ma KH"
b(1, 2) = "Loai"
b(1, 3) ="SL"
bRow = 1
For aRow = 2 To lRow
For aCol = 2 To lCol
If a(aRow, aCol) <> 0 Then
bRow = bRow + 1
b(bRow, 1) = a(aRow, 1)
b(bRow, 2) = a(1, aCol)
b(bRow, 3) = a(aRow, aCol)
End If
Next aCol
Next aRow
WorkSheets("TK").Range("A1").Resize(bRow, 3).Value = b
End Sub