Chuyển dữ liệu từ hàng dọc sang hàng ngang theo mặt hàng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tham gia
17/9/12
Bài viết
1,351
Được thích
1,575
Giới tính
Nữ
Em có dữ liệu trong file đính kèm, Em muốn chuyển dữ liệu từ bảng liệt kê theo thứ tự dọc sang thành liệt kê từng lần thay đổi giá cùng đơn giá thay đổi đi kèm để so sánh giá chênh lệch giữa các lần thay đổi giá nhập hàng trong năm. Em có thể làm bằng hàm mảng hoặc thêm cột phụ nhưng với dữ liệu nhiều làm với hàm khiến file chạy khá chậm nên em muốn tập tành làm bằng VBA nhưng kiến thức còn hạn hẹp nên vẫn chưa ra được như mình mong muốn. Mong các anh chị em trên diễn đàn giúp đỡ để em hoàn thành file này ạ, E xin cảm ơn!
upload_2018-3-13_17-31-3.png
 

File đính kèm

Không ngủ nghỉ lại lượn lên đây làm gì hử?
Tranh thủ lúc con ngủ thì mẹ học anh ạ :D Nhưng tình hình là nhìn code em chưa vào đầu được anh ạ. Nên tạm thời lấy nguyên code của anh sử dụng luôn ạ chứ chưa biến nó thành kiến thức của mình được ạ. E cảm ơn anh nhiều ạ
 
Upvote 0
Em có dữ liệu trong file đính kèm, Em muốn chuyển dữ liệu từ bảng liệt kê theo thứ tự dọc sang thành liệt kê từng lần thay đổi giá cùng đơn giá thay đổi đi kèm để so sánh giá chênh lệch giữa các lần thay đổi giá nhập hàng trong năm. Em có thể làm bằng hàm mảng hoặc thêm cột phụ nhưng với dữ liệu nhiều làm với hàm khiến file chạy khá chậm nên em muốn tập tành làm bằng VBA nhưng kiến thức còn hạn hẹp nên vẫn chưa ra được như mình mong muốn. Mong các anh chị em trên diễn đàn giúp đỡ để em hoàn thành file này ạ, E xin cảm ơn!
View attachment 192462
Cái này hình như Sort theo cột A, cột B.
Muốn xem mặt hàng nào thì Filter cột A còn dễ nhìn hơn.
"Mắc VBA" thì Record Macro.
 
Upvote 0
Cái này hình như Sort theo cột A, cột B.
Muốn xem mặt hàng nào thì Filter cột A còn dễ nhìn hơn.
"Mắc VBA" thì Record Macro.
Dạ cháu cần làm 1 dạng như báo cáo ý mà ạ. Trước có ít cháu vẫn làm hàm mảng vẫn ra ạ nhưng số liệu nhiều thì nó hơi chậm tí nên cháu muốn tìm hiểu làm bằng VBA cho nhanh hơn thôi ạ. Cũng là cháu học hỏi thêm về VBA ạ.
 
Upvote 0
Em có dữ liệu trong file đính kèm, Em muốn chuyển dữ liệu từ bảng liệt kê theo thứ tự dọc sang thành liệt kê từng lần thay đổi giá cùng đơn giá thay đổi đi kèm để so sánh giá chênh lệch giữa các lần thay đổi giá nhập hàng trong năm. Em có thể làm bằng hàm mảng hoặc thêm cột phụ nhưng với dữ liệu nhiều làm với hàm khiến file chạy khá chậm nên em muốn tập tành làm bằng VBA nhưng kiến thức còn hạn hẹp nên vẫn chưa ra được như mình mong muốn. Mong các anh chị em trên diễn đàn giúp đỡ để em hoàn thành file này ạ, E xin cảm ơn!
View attachment 192462
Bạn tham khảo:
PHP:
Sub abc()
    Dim a, i&, ii%, j&, k&, u$
    Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Sort Key1:=Range("A2"), Order1:=xlAscending
    a = Range("A1:C" & Cells(Rows.Count, 1).End(3).Row).Value
    ReDim b(1 To UBound(a), 1 To 5)
    For i = 2 To UBound(a)
        If a(i, 1) = u Then
            j = j + 2
            If j > UBound(b, 2) Then ReDim Preserve b(1 To UBound(b), 1 To j)
            b(k, j - 1) = a(i, 2)
            b(k, j) = a(i, 3)
        Else
            k = k + 1: j = 3
            For ii = 1 To 3
                b(k, ii) = a(i, ii)
            Next
            u = a(i, 1)
        End If
    Next
    Range("E2").Resize(k, UBound(b, 2)).Value = b
    Sheet1.Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Value = Sheet3.Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Value
End Sub
 

File đính kèm

Upvote 0
Bạn tham khảo:
PHP:
Sub abc()
    Dim a, i&, ii%, j&, k&, u$
    Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Sort Key1:=Range("A2"), Order1:=xlAscending
    a = Range("A1:C" & Cells(Rows.Count, 1).End(3).Row).Value
    ReDim b(1 To UBound(a), 1 To 5)
    For i = 2 To UBound(a)
        If a(i, 1) = u Then
            j = j + 2
            If j > UBound(b, 2) Then ReDim Preserve b(1 To UBound(b), 1 To j)
            b(k, j - 1) = a(i, 2)
            b(k, j) = a(i, 3)
        Else
            k = k + 1: j = 3
            For ii = 1 To 3
                b(k, ii) = a(i, ii)
            Next
            u = a(i, 1)
        End If
    Next
    Range("E2").Resize(k, UBound(b, 2)).Value = b
    Sheet1.Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Value = Sheet3.Range("A2:C" & Cells(Rows.Count, 1).End(3).Row).Value
End Sub
Em mà anh :) em đang online trên điện thoại nên em sẽ học code của anh sau anh nhé :) chúc anh một ngày vui ạ
 
Upvote 0
Web KT

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

Back
Top Bottom