Mình có dữ liệu nhiều dòng,cột theo chiều ngang và muốn chuyển thành một cột theo chiều dọc như hình

Mình đã viết code nhưng bị lỗi ở dòng tô đậm mong mọi người sửa giúp. Vì không biết sao lại lỗi.
Sub khanh()
Const dong_3 As Long = 3
Dim dong, lR As Long, i, j As Long, Res()
Dim a(), b(), c() As String
Dim Ws As Worksheet
Set Ws = Worksheets("DL")
Ws.Range("D4:F500").ClearContents
With Ws
lR = .Range("A" & Rows.Count).End(xlUp).Row
If lR <= 3 Then MsgBox "Khong co du lieu.": Exit Sub
a = .Range("A4:A" & lR + 1).Value2
b = .Range("B4:B" & lR + 1).Value2
c = .Range("C4:C" & lR + 1).Value2
lR = UBound(a, 1) - 1
ReDim Res(1 To lR * dong_3, 1 To 1)
For i = 1 To lR
j = (i - 1) * dong_3 + 1
Res(j, 1) = a(i, 1)
Res(j + 1, 1) = b(i, 1)
Res(j + 2, 1) = c(i, 1)
Next i
.Range("D4").Resize(lR * 3, 1).Value = Res
dong = Sheets("DL").Range("D" & Rows.Count).End(xlUp).Row
Sheets("DL").Range("D4
" & dong).Copy
End With
End Sub

Mình đã viết code nhưng bị lỗi ở dòng tô đậm mong mọi người sửa giúp. Vì không biết sao lại lỗi.
Sub khanh()
Const dong_3 As Long = 3
Dim dong, lR As Long, i, j As Long, Res()
Dim a(), b(), c() As String
Dim Ws As Worksheet
Set Ws = Worksheets("DL")
Ws.Range("D4:F500").ClearContents
With Ws
lR = .Range("A" & Rows.Count).End(xlUp).Row
If lR <= 3 Then MsgBox "Khong co du lieu.": Exit Sub
a = .Range("A4:A" & lR + 1).Value2
b = .Range("B4:B" & lR + 1).Value2
c = .Range("C4:C" & lR + 1).Value2
lR = UBound(a, 1) - 1
ReDim Res(1 To lR * dong_3, 1 To 1)
For i = 1 To lR
j = (i - 1) * dong_3 + 1
Res(j, 1) = a(i, 1)
Res(j + 1, 1) = b(i, 1)
Res(j + 2, 1) = c(i, 1)
Next i
.Range("D4").Resize(lR * 3, 1).Value = Res
dong = Sheets("DL").Range("D" & Rows.Count).End(xlUp).Row
Sheets("DL").Range("D4

End With
End Sub
File đính kèm
Lần chỉnh sửa cuối: