Chuyển data từ dạng hàng (nằm ngang) sang dạng cột (nằm dọc)

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

chamhocexcel

Thành viên mới
Tham gia
4/5/23
Bài viết
2
Được thích
0
Hi mọi người,

Mình đang làm file cho đồ án tốt nghiệp, mình muốn chuyển dữ liệu được trình bài ở dạng hàng ngang sang định dạng hàng dọc. Ở sheet data, các mã sản phẩm (151,152,...) đang nằm ngang và đóng vai trò là header còn số lượng của nó ứng với từng mã khách hàng (100387, 101704) thì đang được trình bày theo hàng ngang trong table. Mình muốn chuyển các mã sản phẩm về hàng dọc (như sheet issue) và ứng với từng dòng sẽ là số lượng của nó và mã khách hàng tương ứng.

Nhờ các cao nhân chỉ giáo!!!
 

File đính kèm

Bạn dùng VBA nhé
Cách dùng: Alt-F11 mở cửa sổ VBA, Insert/Module
Dán code vô.
Tại sheet Issue, insert 1 shape làm button, chuột phải shape, chọn assign macro rồi chọn sub chuyendoi.
Nhấn vô nút này để chạy kết quả.
Lưu file dạng. xlsm
PHP:
Option Explicit
Sub chuyendoi()
Dim lr&, lc&, i&, j&, k&, rng, res(1 To 10000, 1 To 4)
With Sheets("Data")
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    lc = .Cells(1, Columns.Count).End(xlToLeft).Column
    rng = .Range("A1", .Cells(lr, lc)).Value
    For i = 2 To UBound(rng)
        For j = 3 To UBound(rng, 2)
            If rng(i, j) > 0 Then
                k = k + 1
                res(k, 1) = i - 1
                res(k, 2) = rng(1, j)
                res(k, 3) = rng(i, j)
                res(k, 4) = rng(i, 1)
            End If
        Next
    Next
End With
Range("A2:D10000").ClearContents
If k > 0 Then Range("A2").Resize(k, 4).Value = res
End Sub
 

File đính kèm

Bạn dùng VBA nhé
Cách dùng: Alt-F11 mở cửa sổ VBA, Insert/Module
Dán code vô.
Tại sheet Issue, insert 1 shape làm button, chuột phải shape, chọn assign macro rồi chọn sub chuyendoi.
Nhấn vô nút này để chạy kết quả.
Lưu file dạng. xlsm
PHP:
Option Explicit
Sub chuyendoi()
Dim lr&, lc&, i&, j&, k&, rng, res(1 To 10000, 1 To 4)
With Sheets("Data")
    lr = .Cells(Rows.Count, "A").End(xlUp).Row
    lc = .Cells(1, Columns.Count).End(xlToLeft).Column
    rng = .Range("A1", .Cells(lr, lc)).Value
    For i = 2 To UBound(rng)
        For j = 3 To UBound(rng, 2)
            If rng(i, j) > 0 Then
                k = k + 1
                res(k, 1) = i - 1
                res(k, 2) = rng(1, j)
                res(k, 3) = rng(i, j)
                res(k, 4) = rng(i, 1)
            End If
        Next
    Next
End With
Range("A2:D10000").ClearContents
If k > 0 Then Range("A2").Resize(k, 4).Value = res
End Sub
code chạy ngon nha anh, cảm ơn anh nhiều
 
Hi mọi người,

Mình đang làm file cho đồ án tốt nghiệp, mình muốn chuyển dữ liệu được trình bài ở dạng hàng ngang sang định dạng hàng dọc. Ở sheet data, các mã sản phẩm (151,152,...) đang nằm ngang và đóng vai trò là header còn số lượng của nó ứng với từng mã khách hàng (100387, 101704) thì đang được trình bày theo hàng ngang trong table. Mình muốn chuyển các mã sản phẩm về hàng dọc (như sheet issue) và ứng với từng dòng sẽ là số lượng của nó và mã khách hàng tương ứng.

Nhờ các cao nhân chỉ giáo!!!
Đăng bài nhiều nơi :
 
Web KT

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

Back
Top Bottom