Nhờ giúp VBA copy dữ liệu theo điều kiện.

Liên hệ QC

kiendt1973

Thành viên chính thức
Tham gia
14/7/07
Bài viết
94
Được thích
36
Chào các bác.
Mình đang cần xử lý dữ liệu báo cáo KQKD của các công ty để so sánh tăng trưởng các chỉ tiêu trong một số giai đoạn.
Dữ liệu mình cập nhật trên vietstock nên đang loay hoay chế biến để có thể đưa vào power bi.
File mình lấy về thì mã công ty chạy theo dòng và các chỉ tiêu KQKD theo cột (sheet: Data gốc).
Mình muốn copy liên tiếp chỉ tiêu KQKD và mã công ty thành nhiều cột ( sheet: Data mong muốn )
Làm tay thì hơi lâu vì dữ liệu sẽ cần cập nhật thêm dần theo quí. Nên lên đây nhờ vả các bác.
Vì mình nghĩ dùng VBA có vẻ phù hợp nên nhờ trong " Lập trình với Excel", tuy nhiên có thể dùng cách nào giải quyết đc mình đều cảm ơn.
Có thể diễn đạt làm các bác khó hiểu nhưng xem file mình nghĩ các bác sẽ hiểu mong muốn của mình
Trân trọng cảm ơn.
 

File đính kèm

  • kqkd_mau.xlsx
    51.2 KB · Đọc: 9
Bài toán này làm trong Power Query rất nhanh;
Sử dụng Unpivot other column là được,
 
Upvote 0
Chào các bác.
.....Nên lên đây nhờ vả các bác.
Vì mình nghĩ dùng VBA có vẻ phù hợp nên nhờ trong " Lập trình với Excel", tuy nhiên có thể dùng cách nào giải quyết đc mình đều cảm ơn.
Thêm 1 cách bằng VBA cho bạn tham khảo.
Mã:
Option Explicit

Sub Kien()
Dim i&, j&, Lr&, t&, k&, Col&
Dim Arr(), KQ()
Dim Sh As Worksheet, Ws As Worksheet
Set Sh = Sheets("DataGoc")
Lr = Sh.Cells(1000000, 1).End(xlUp).Row
Arr = Sh.Range(Sh.Cells(1, 1), Sh.Cells(Lr, Sh.Cells(1, Columns.Count).End(xlToLeft).Column)).Value
ReDim KQ(1 To (UBound(Arr, 2) - 3) * UBound(Arr), 1 To 5)
For j = 4 To UBound(Arr, 2)
    For i = 2 To UBound(Arr)
        t = t + 1
        For k = 1 To 3
         KQ(t, k) = Arr(i, k)
        Next k
        KQ(t, 4) = Arr(1, j)
        KQ(t, 5) = Arr(i, j)
    Next i
Next j
If t Then
    Set Ws = Sheets("DataMongMuon")
    Ws.Range("G2").Resize(1000000, 5).ClearContents
    Ws.Range("G2").Resize(t, 5) = KQ
End If
MsgBox "Xong"
End Sub
Kết quả chạy code đang để ỏ G2/Sheet KetquaMongMuon
Tôi đã thay tên Sheet thành tên tiếng Việt không dấu.
 

File đính kèm

  • kqkd_mau.xlsm
    59.9 KB · Đọc: 19
Upvote 0
Thêm 1 cách bằng VBA cho bạn tham khảo.
Mã:
Option Explicit

Sub Kien()
Dim i&, j&, Lr&, t&, k&, Col&
Dim Arr(), KQ()
Dim Sh As Worksheet, Ws As Worksheet
Set Sh = Sheets("DataGoc")
Lr = Sh.Cells(1000000, 1).End(xlUp).Row
Arr = Sh.Range(Sh.Cells(1, 1), Sh.Cells(Lr, Sh.Cells(1, Columns.Count).End(xlToLeft).Column)).Value
ReDim KQ(1 To (UBound(Arr, 2) - 3) * UBound(Arr), 1 To 5)
For j = 4 To UBound(Arr, 2)
    For i = 2 To UBound(Arr)
        t = t + 1
        For k = 1 To 3
         KQ(t, k) = Arr(i, k)
        Next k
        KQ(t, 4) = Arr(1, j)
        KQ(t, 5) = Arr(i, j)
    Next i
Next j
If t Then
    Set Ws = Sheets("DataMongMuon")
    Ws.Range("G2").Resize(1000000, 5).ClearContents
    Ws.Range("G2").Resize(t, 5) = KQ
End If
MsgBox "Xong"
End Sub
Kết quả chạy code đang để ỏ G2/Sheet KetquaMongMuon
Tôi đã thay tên Sheet thành tên tiếng Việt không dấu.
Cảm ơn bác đã nhiệt tình giúp, mình đã chạy thử và đã thoả mãn nhu cầu đề ra.
 
Upvote 0
Có một vấn đề cần nhờ các bác thêm:
Trong file dữ liệu mình lấy về có những ô chứa ký tự: 1690862510981.png
"1. Doanh thu bán hàng và cung cấp dịch vụ [Năm: 2022, Kỳ: Quý 1, TT Hợp nhất: Mới nhất, TT Kiểm toán: Mới nhất, ĐVT: VND]"
Mình cần công thức để điền vào ô mới: 2022 ( tức là lấy 4 ký tự sau "[ Năm: ")
Mình đã Google mà ko tìm được công thức vừa ý.
Cảm ơn các bác nhiều ạ.
 
Upvote 0
Có một vấn đề cần nhờ các bác thêm:
Trong file dữ liệu mình lấy về có những ô chứa ký tự: View attachment 293367
"1. Doanh thu bán hàng và cung cấp dịch vụ [Năm: 2022, Kỳ: Quý 1, TT Hợp nhất: Mới nhất, TT Kiểm toán: Mới nhất, ĐVT: VND]"
Mình cần công thức để điền vào ô mới: 2022 ( tức là lấy 4 ký tự sau "[ Năm: ")
Mình đã Google mà ko tìm được công thức vừa ý.
Cảm ơn các bác nhiều ạ.
"Trong file dữ liệu mình lấy về... " bạn lấy về thì để dùng thôi có chia sẻ đâu mà tìm thấy những ký tự "1.doanh thu bán hàng .....", Và "TT" là gì nhỉ?
Bạn đã".. Goole mà ko tìm thấy công thức vừa ý" thì cứ tiếp tục Google thôi. Chắc chẳng ai tìm hộ bạn nên họ không dám nhận lời cảm ơn của bạn đâu.
Thân, chúc thành công.
 
Upvote 0
Có một vấn đề cần nhờ các bác thêm:
Trong file dữ liệu mình lấy về có những ô chứa ký tự: View attachment 293367
"1. Doanh thu bán hàng và cung cấp dịch vụ [Năm: 2022, Kỳ: Quý 1, TT Hợp nhất: Mới nhất, TT Kiểm toán: Mới nhất, ĐVT: VND]"
Mình cần công thức để điền vào ô mới: 2022 ( tức là lấy 4 ký tự sau "[ Năm: ")
Mình đã Google mà ko tìm được công thức vừa ý.
Cảm ơn các bác nhiều ạ.
Chắc là như này hử ?

1690863884706.png
 
Upvote 0
Web KT

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

Back
Top Bottom