Nhờ giúp đỡ lọc không trùng và lấy dữ liệu số lượng mỗi tuần từ các sheet khác nhau (5 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

Humant2o

Thành viên mới
Tham gia
13/11/22
Bài viết
16
Được thích
0
Dạ em xin nhờ các anh chị trong diễn đàn giúp đỡ ạ, em có data này để phục vụ việc làm luận văn tốt nghiệp, hiện em đã xử lý được tới bước gom hết các file vào thành 1 file nhiều sheet. Em muốn gom dữ liệu theo variant_id toàn bộ các sheet về 1 sheet từ cột product_id đến product_price mà ko bị trùng, sau đó từ từng sheet lấy cột net_quantity nhập về sheet tổng thành 2021_W01, 2021_W02, 2021_W03 .v.v đến hết. Em đã thử dùng advanced filter nhưng nó không cho copy dữ liệu qua sheet khác... và nhất là phần copy net_quantity của từng sheet theo thứ tự xong tự động chèn mới vào cột cuối cùng em hoàn toàn ko biết làm. Em muốn gom để dễ trực quan dữ liệu để làm luận văn do số lượng sản phẩm và sheet (gần 1000 sản phẩm và hơn 100 sheets) rất lớn. Em có đính kèm data thu nhỏ, mong anh chị giúp đỡ, em xin cảm ơn mọi người trước vì đã nhiệt tình và rộng tay giúp đỡ em ạ.
 

File đính kèm

Sheet W01, dòng 6 và 7
Toàn bộ giống nhau, ngoại trừ variant_title
Có coi nó là dupplicate không, hay nó là 2 dòng khác nhau khi chuyển qua sheet Weekly?
 
Làm đại.
Theo file đính kèm thì 5 cột kết hợp lại thì không mã nào trùng hết nhé.

Code trong module3
PHP:
Option Explicit
Sub weekly()
Dim lr&, i&, j&, k&, c&, t&
Dim id As String, rng, res()
Dim dic As Object, ws As Worksheet
Set dic = CreateObject("Scripting.dictionary")
ReDim res(1 To 100000, 1 To Sheets.Count + 5)
c = 6: k = 1
For Each ws In Sheets
    If ws.Name <> "sales_Weekly" Then
        lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
        rng = ws.Range("A2:G" & lr).Value
        c = c + 1: res(1, c) = ws.Name
        For i = 1 To UBound(rng)
            id = rng(i, 2) & "|" & rng(i, 3) & "|" & rng(i, 4) & "|" & rng(i, 5) & "|" & rng(i, 6)
            If Not dic.exists(id) Then
                k = k + 1
                For j = 1 To 6
                    res(k, j) = rng(i, j)
                Next
                res(k, c) = rng(i, 7)
            Else
                For t = 1 To k
                    If res(t, 2) & "|" & res(t, 3) & "|" & res(t, 4) & "|" & res(t, 5) & "|" & res(t, 6) = id Then
                        res(t, c) = rng(i, 7)
                        Exit For
                    End If
                Next
            End If
        Next
    End If
Next
With Sheets("sales_Weekly")
    .Range("A1").Resize(k, UBound(res, 2)).Value = res
    .Range("A1:F1").Value = Array("product_title", "product_id", "variant_title", "variant_id", "variant_sku", "product_price")
End With
End Sub
 

File đính kèm

Làm đại.
Theo file đính kèm thì 5 cột kết hợp lại thì không mã nào trùng hết nhé.

Code trong module3
PHP:
Option Explicit
Sub weekly()
Dim lr&, i&, j&, k&, c&, t&
Dim id As String, rng, res()
Dim dic As Object, ws As Worksheet
Set dic = CreateObject("Scripting.dictionary")
ReDim res(1 To 100000, 1 To Sheets.Count + 5)
c = 6: k = 1
For Each ws In Sheets
    If ws.Name <> "sales_Weekly" Then
        lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
        rng = ws.Range("A2:G" & lr).Value
        c = c + 1: res(1, c) = ws.Name
        For i = 1 To UBound(rng)
            id = rng(i, 2) & "|" & rng(i, 3) & "|" & rng(i, 4) & "|" & rng(i, 5) & "|" & rng(i, 6)
            If Not dic.exists(id) Then
                k = k + 1
                For j = 1 To 6
                    res(k, j) = rng(i, j)
                Next
                res(k, c) = rng(i, 7)
            Else
                For t = 1 To k
                    If res(t, 2) & "|" & res(t, 3) & "|" & res(t, 4) & "|" & res(t, 5) & "|" & res(t, 6) = id Then
                        res(t, c) = rng(i, 7)
                        Exit For
                    End If
                Next
            End If
        Next
    End If
Next
With Sheets("sales_Weekly")
    .Range("A1").Resize(k, UBound(res, 2)).Value = res
    .Range("A1:F1").Value = Array("product_title", "product_id", "variant_title", "variant_id", "variant_sku", "product_price")
End With
End Sub
dạ em cảm ơn anh nhiều ạ, ý em là em muốn làm 2 bước ấy ạ, bước đầu là lấy thông tin từ product_title đến product_price ở các sheet khác theo variant_id gom về sheet tổng mà ko trùng, kiểu quét sheet W01 ra 10 sp đưa vô sheet tổng, xong quét sheet W02 sp nào chưa có trong sheet tổng mới đưa vô, có rồi thì bỏ qua tiếp tục tới sheet cuối.
xong bước đó rồi mới là bước lấy net_quantity ở các sheet W01, W02, W03 điền vào cột cuối cùng theo thứ tự từng sheet (tương ứng với sp) ạ.
em định dùng advanced filter mà nó bị trở ngại là ko cho lọc sheet này xong paste kết quả qua sheet khác nên ko biết làm cách khác sao ạ
 
Cột nào là cột bạn muốn lấy duy nhất? Theo post 1 :
Em muốn gom dữ liệu theo variant_id toàn bộ các sheet về 1 sheet từ cột product_id đến product_price mà ko bị trùng
Cột không trùng là 5 cột, và code mình đang làm theo việc đó.
Bạn điền tay kết quả mong muốn 1 vài dòng cho W01 và W02 mình xem sao
 
Cột nào là cột bạn muốn lấy duy nhất? Theo post 1 :

Cột không trùng là 5 cột, và code mình đang làm theo việc đó.
Bạn điền tay kết quả mong muốn 1 vài dòng cho W01 và W02 mình xem sao
dạ ý em giống hình này ạ, em chỉ muốn cái sp này xuất hiện 1 lần trong sheet Weekly thôi ấy. Là em muốn làm riêng 2 bước ấy anh, bước 1 là lấy tất cả sp có trong các sheet khác gom về sheet tổng nhưng mỗi sp chỉ xuất hiện 1 lần duy nhất.
1670902178959.png1670902241813.png
Sau đó lấy 1 cột làm mốc (theo em kiểm tra thì có thể dùng cột variant_id), dò tìm net_quantity ở các sheet khác đưa về sheet tổng với sp tương ứng như hình dưới ạ. Vì 1 sp có thể bán được trong nhiều tuần, em muốn làm vậy để trực quan vẽ graph trình bày về dữ liệu em dùng để thực hiện luận văn.1670902429334.png
 
Bạn điền tay 1 vài dòng rồi post file nhé.
 
Bạn điền tay 1 vài dòng rồi post file nhé.
dạ này là file data đầy đủ của em, em có điền 1 số dòng ở sheet Weekly rồi, anh xem giúp em ạ. Và cái sheet W01 em kiểm tra thì variant_id của nó khác với các sheet khác nên em ko dùng nó làm chuẩn, để lấy cột dữ liệu chuẩn tốt nhất em nghĩ có thể dùng sheet 2022_W39 trở về trước, vì lúc này data sp của cty nó cũng đầy đủ và rõ ràng hơn rồi ạ.
 

File đính kèm

có ai không ạ, giúp em với, cảm ơn mọi người
 
dạ này là file data đầy đủ của em, em có điền 1 số dòng ở sheet Weekly rồi, anh xem giúp em ạ. Và cái sheet W01 em kiểm tra thì variant_id của nó khác với các sheet khác nên em ko dùng nó làm chuẩn, để lấy cột dữ liệu chuẩn tốt nhất em nghĩ có thể dùng sheet 2022_W39 trở về trước, vì lúc này data sp của cty nó cũng đầy đủ và rõ ràng hơn rồi ạ.
1671078638133.pngVẫn chưa hiểu theo như kết quả thì cái ô bôi vàng kia kết quả nó sẽ nẳm ở sheet khoanh đỏ.
Nhưng vào cái sheet khoanh đỏ thì không tìm thấy cái variant_id nào có mã 36590544126107 cả. Hay do mình đang hiểu sai
 
View attachment 284684Vẫn chưa hiểu theo như kết quả thì cái ô bôi vàng kia kết quả nó sẽ nẳm ở sheet khoanh đỏ.
Nhưng vào cái sheet khoanh đỏ thì không tìm thấy cái variant_id nào có mã 36590544126107 cả. Hay do mình đang hiểu sai
dạ anh hiểu đúng rồi ấy, nhưng có vẻ lúc em lấy dữ liệu thì cái sheet W01 nó bị khác mã đi, nên em đang ưu tiên lấy dữ liệu chuẩn từ các sheet sau cùng trở về trước ạ
 
dạ mn có ai tìm được code nào hiệu quả với trường hợp của em ko ạ @@
Bài đã được tự động gộp:

Bạn điền tay 1 vài dòng rồi post file nhé.

View attachment 284684Vẫn chưa hiểu theo như kết quả thì cái ô bôi vàng kia kết quả nó sẽ nẳm ở sheet khoanh đỏ.
Nhưng vào cái sheet khoanh đỏ thì không tìm thấy cái variant_id nào có mã 36590544126107 cả. Hay do mình đang hiểu sai
dạ mn có ai tìm được code nào hiệu quả với trường hợp của em ko ạ @@
 
dạ có ai giúp em với ạ...
 
Web KT

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

Back
Top Bottom