Hỗ trợ VBA - Convert data dùng Dictionary (6 người xem)

Liên hệ QC

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

gianghoxaotra

Thành viên chính thức
Tham gia
6/2/13
Bài viết
53
Được thích
1
Chào các Anh/Chị/Bạn trên diễn đàn,
Mình hiện có nhu cầu chuyển đổi dữ liệu và truy lục dữ liệu nhiều điều kiện.
Cụ thể là mình có nhiều hơn 3 mặt hàng của Cty (là tên các Sheet San pham A, San pham B, San pham C, mình chỉ minh họa 3 sản phẩm, nhưng thực tế sẽ có phát sinh nhiều sản phẩm), lưu trữ dữ liệu theo dạng bảng về số lượng đơn hàng.
Mình muốn chuyển đổi format dữ liệu này về theo cấu trúc tại Sheet Convert Data (theo dạng chiều dài cho tất cả các sản phẩm).
Sau khi convert data về dạng chiều dài này, mục đích để có thể truy lục nhanh các sản phẩm theo mẫu tại Sheet Try luc.
Mình có tìm hiểu các bài viết trên diễn đàn về chủ đề truy tìm, và thấy hướng xử lý liên quan Dictionary rất hay nhưng mình không rành về cách sử dụng, Nhờ các Anh/Chị/Bạn hỗ trợ giúp để học hỏi thêm.
Rất mong nhận được hỗ trợ và cảm ơn rất nhiều.
P/s: File đính kèm "Data Sample" bên dưới nhé.
 

File đính kèm

Chào các Anh/Chị/Bạn trên diễn đàn,
Mình hiện có nhu cầu chuyển đổi dữ liệu và truy lục dữ liệu nhiều điều kiện.
Cụ thể là mình có nhiều hơn 3 mặt hàng của Cty (là tên các Sheet San pham A, San pham B, San pham C, mình chỉ minh họa 3 sản phẩm, nhưng thực tế sẽ có phát sinh nhiều sản phẩm), lưu trữ dữ liệu theo dạng bảng về số lượng đơn hàng.
Mình muốn chuyển đổi format dữ liệu này về theo cấu trúc tại Sheet Convert Data (theo dạng chiều dài cho tất cả các sản phẩm).
Sau khi convert data về dạng chiều dài này, mục đích để có thể truy lục nhanh các sản phẩm theo mẫu tại Sheet Try luc.
Mình có tìm hiểu các bài viết trên diễn đàn về chủ đề truy tìm, và thấy hướng xử lý liên quan Dictionary rất hay nhưng mình không rành về cách sử dụng, Nhờ các Anh/Chị/Bạn hỗ trợ giúp để học hỏi thêm.
Rất mong nhận được hỗ trợ và cảm ơn rất nhiều.
P/s: File đính kèm "Data Sample" bên dưới nhé.
Tạo thêm sheet mới chỉ làm nặng file
Dùng công thức là được
 

File đính kèm

Bạn thử với macro này; Với máy cà tèng của mình cũng chỉ tốn 3 fần trăm giây cho nhiệm vụ số 1 mà thôi:
PHP:
Sub ChuyenBang()
 Dim Sh As Worksheet, Arr()
 Dim Dg As Long, Cot As Integer, J As Long, Z As Integer, W As Long, Rws As Long, Tmr As Double
 ReDim dArr(1 To 65500, 1 To 5)

 Tmr = Timer
 For Each Sh In ThisWorkbook.Worksheets
    If Left(Sh.Name, 1) = "S" Then
        Arr() = Sh.[B2].CurrentRegion.Offset(1).Value
        For Dg = 1 To UBound(Arr())
            For Cot = 2 To UBound(Arr(), 2)
                W = W + 1:                      dArr(W, 1) = W
                dArr(W, 2) = Sh.Name:           dArr(W, 3) = Arr(Dg, 1)
                dArr(W, 4) = Cot - 1:           dArr(W, 5) = Arr(Dg, Cot)
            Next Cot
        Next Dg
    End If
 Next Sh
 With Sheets("Convert Data").[A2]
    .Resize(W, 5).Value = dArr()
    .Offset(, 6).Value = Timer - Tmr
 End With
End Sub
 
Hihi, Dữ liệu minh họa bạn ơi, chủ yếu là để mọi người hiểu cấu trúc dữ liệu thui.
Thanks,
Dữ liệu trong các sheet San pham? 32 cột 13 dòng, sao không là 13 cột 32 dòng?
Vì là dữ liệu minh họa nên bạn thử chạy Sub này cho sheet "Convert...", sheet "Truy luc" bạn làm gì đó thì làm.
PHP:
Public Sub GPE()
Dim Ws As Worksheet, sArr(), I As Long, J As Long, K As Long
Dim dArr(1 To 100000, 1 To 4), WsName As String
For Each Ws In ThisWorkbook.Worksheets
    If Ws.Name Like "San pham*" Then
        WsName = Ws.Name
        sArr = Ws.Range("A1").Resize(13, 32).Value
            For I = 2 To 13
                For J = 2 To 32
                    If sArr(I, J) <> Empty Then
                        K = K + 1
                        dArr(K, 1) = WsName
                        dArr(K, 2) = sArr(I, 1)
                        dArr(K, 3) = sArr(1, J)
                        dArr(K, 4) = sArr(I, J)
                    End If
                Next J
            Next I
    End If
Next Ws
Sheets("Convert Data").Range("A2").Resize(K, 4) = dArr
End Sub
Mình có tìm hiểu các bài viết trên diễn đàn về chủ đề truy tìm, và thấy hướng xử lý liên quan Dictionary rất hay nhưng mình không rành về cách sử dụng, Nhờ các Anh/Chị/Bạn hỗ trợ giúp để học hỏi thêm.
Như bài này thì đâu có cần Dictionary?
 
Lần chỉnh sửa cuối:
Vì mình đang muốn truy xuất tìm kiếm giá trị tại sheet Truy luc, cột D bằng VBA luôn thì làm cách nào?
Bạn hỗ trợ giùm mình, Cảm ơn bạn.
Bạn phải giải thích bạn muốn truy theo điều kiện nào? Tháng, Ngày, Sản phẩm?
Bạn đưa mấy dòng mẫu là bạn muốn: nhập thủ công sản phẩm, ngày, tháng là có kết quả số lượng? Vậy thì bạn xem bài #2.
 
Bạn phải giải thích bạn muốn truy theo điều kiện nào? Tháng, Ngày, Sản phẩm?
Bạn đưa mấy dòng mẫu là bạn muốn: nhập thủ công sản phẩm, ngày, tháng là có kết quả số lượng? Vậy thì bạn xem bài #2.
Đúng rồi bạn, mình có để 3 điều kiện lọc tại cột theo Sản phẩm (Cột A), theo Tháng (cột B), Theo ngày (cột C) và giá trị trả ra tại cột D. Bạn xem file mẫu mình gửi (lưu ý giá trị tháng đang không đúng, không phải là số mà là Thang 1).
Vì mình muốn dùng luôn VBA để xử lý nên nhờ bạn hỗ trợ giúp.
Cảm ơn bạn.
 
Bạn tham khảo cách này:
 

File đính kèm

Web KT

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

Back
Top Bottom