Sắp xếp dữ liệu ngang sang dọc bằng VBA Excel

Liên hệ QC

Kaj4911

Thành viên mới
Tham gia
10/3/22
Bài viết
3
Được thích
0
Dạ em chào các anh chị,
Em có bảng dữ liệu bên trái theo hàng ngang, em muốn chuyển dữ liệu sang hàng dọc và theo thứ tự B1, B2.... bằng cách dùng VBA Excel.
Nhưng em không biết thực hiện như thế nào.
Rất mong được mọi người giúp đỡ ạ.
(Đoạn code như hình 1 và hình 2 đều được ạ)
Hình 1
1647244915699.png

Hình 2
1647244953284.png
 

File đính kèm

  • Sap xep du lieu.xlsm
    9.3 KB · Đọc: 5
Dạ em chào các anh chị,
Em có bảng dữ liệu bên trái theo hàng ngang, em muốn chuyển dữ liệu sang hàng dọc và theo thứ tự B1, B2.... bằng cách dùng VBA Excel.
Nhưng em không biết thực hiện như thế nào.
Rất mong được mọi người giúp đỡ ạ.
(Đoạn code như hình 1 và hình 2 đều được ạ)
Hình 1
View attachment 273110

Hình 2
View attachment 273111
Dùng công thức có được không bạn, hay cứ phải VBA.
 
Upvote 0
Dạ em chào các anh chị,
Em có bảng dữ liệu bên trái theo hàng ngang, em muốn chuyển dữ liệu sang hàng dọc và theo thứ tự B1, B2.... bằng cách dùng VBA Excel.
Nhưng em không biết thực hiện như thế nào.
Rất mong được mọi người giúp đỡ ạ.
(Đoạn code như hình 1 và hình 2 đều được ạ)
Hình 1
View attachment 273110

Hình 2
View attachment 273111
Thử code.
Mã:
Sub chuyendoi()
   Dim i As Long, lr As Long, arr, kq, a As Long, j As Long
   With Sheet1
        a = 1
        lr = .Range("A" & Rows.Count).End(xlUp).Row
        arr = .Range("A4:E" & lr).Value
        ReDim kq(1 To UBound(arr) * 3, 1 To 3)
        For i = 1 To UBound(arr)
            For j = 0 To 2
               kq(a + j, 1) = arr(i, 1)
               kq(a + j, 2) = arr(i, 5)
               kq(a + j, 3) = arr(i, 2 + j)
            Next j
            a = a + 3
      Next i
      .Range("H3:J1000").ClearContents
      .Range("h3:J3").Resize(a - 1).Value = kq
  End With
End Sub
 
Upvote 0
Dạ em chào các anh chị,
Em có bảng dữ liệu bên trái theo hàng ngang, em muốn chuyển dữ liệu sang hàng dọc và theo thứ tự B1, B2.... bằng cách dùng VBA Excel.
Nhưng em không biết thực hiện như thế nào.
Rất mong được mọi người giúp đỡ ạ.
(Đoạn code như hình 1 và hình 2 đều được ạ)
Hình 1
View attachment 273110

Hình 2
View attachment 273111
Trong khi chờ các giải pháp khác, Hãy thử xem, (tôi chưa test kỹ)
Nhấn và 2 nút trên Sh và xem điều gì? Kiểm tra lại
 

File đính kèm

  • Sap xep du lieu.xlsm
    18 KB · Đọc: 7
Upvote 0
Dùng công thức có được không bạn, hay cứ phải VBA.
Hầu hết các dạng này là có thể dùng Power Query.
Microsoft đã biết thích nghi với thời thế, ra những chức năng mới giúp Excel đối phó với những trường hợp dữ liệu không chuẩn. Nhất là tính năng UnPivot chuyển ngang sang dọc (dạng báo cáo crosstabbed sang dạng phát sinh transactional)
Nhưng hầu hết người dùng trên GPE không chịu thích nghi, không thèm tìm hiểu hơn. Dẫu sao thì sử dụng Power Query thì mất công học. Nhờ GPE viết code giùm thì tối đa là copy/paste code, lười thì làm bộ nói "không làm được", đưa cái file lên, tải về có sẵn từ a đến z.
 
Upvote 0
Dùng công thức có được không bạn, hay cứ phải VBA.
Bếu dùng công thức thì mình thực hiện như thế nào ạ
Bài đã được tự động gộp:

Thử code.
Mã:
Sub chuyendoi()
   Dim i As Long, lr As Long, arr, kq, a As Long, j As Long
   With Sheet1
        a = 1
        lr = .Range("A" & Rows.Count).End(xlUp).Row
        arr = .Range("A4:E" & lr).Value
        ReDim kq(1 To UBound(arr) * 3, 1 To 3)
        For i = 1 To UBound(arr)
            For j = 0 To 2
               kq(a + j, 1) = arr(i, 1)
               kq(a + j, 2) = arr(i, 5)
               kq(a + j, 3) = arr(i, 2 + j)
            Next j
            a = a + 3
      Next i
      .Range("H3:J1000").ClearContents
      .Range("h3:J3").Resize(a - 1).Value = kq
  End With
End Sub
Dạ em cám ơn a nhiều,
Code hoạt động và cho ra kết quả như hình 2 ạ
Bài đã được tự động gộp:

Trong khi chờ các giải pháp khác, Hãy thử xem, (tôi chưa test kỹ)
Nhấn và 2 nút trên Sh và xem điều gì? Kiểm tra lại
1647249364854.png
Dạ em cám ơn a nhiều ạ
Dạ C1 ra kết quả như hình 2
C2 ra kết quả như hình 1 ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Hầu hết các dạng này là có thể dùng Power Query.
Microsoft đã biết thích nghi với thời thế, ra những chức năng mới giúp Excel đối phó với những trường hợp dữ liệu không chuẩn. Nhất là tính năng UnPivot chuyển ngang sang dọc (dạng báo cáo crosstabbed sang dạng phát sinh transactional)
Nhưng hầu hết người dùng trên GPE không chịu thích nghi, không thèm tìm hiểu hơn. Dẫu sao thì sử dụng Power Query thì mất công học. Nhờ GPE viết code giùm thì tối đa là copy/paste code, lười thì làm bộ nói "không làm được", đưa cái file lên, tải về có sẵn từ a đến z.
Dạ em cám ơn a nhiều ạ,
Em sẽ tìm hiểu thử ạ
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom