Xin code lọc dữ liệu kiểu so sánh, lấy dữ liệu nhiều dòng vào 1 dòng (1 người xem)

  • Thread starter Thread starter LYSM
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
Em chào các thầy cô, anh chị!
Nhờ các thầy cô, anh chị giúp em code lọc dữ liệu kiểu so sánh, lấy dữ liệu nhiều dòng nhập vào 1 dòng theo 2 điều kiện. Cụ thể như file đính kèm. Em cám ơn nhiều!
 

File đính kèm

Sao bạn không link (công thức) từ bảng 2 sang bảng 1 để biết bạn lấy như thế nào. Nhập chết số thế ai hiểu được. (lấy ở dòng khác là dòng nào cũng đc hay sao, thế thì rất nhiều kết quả nhé)
 
Upvote 0
Em chào các thầy cô, anh chị!
Nhờ các thầy cô, anh chị giúp em code lọc dữ liệu kiểu so sánh, lấy dữ liệu nhiều dòng nhập vào 1 dòng theo 2 điều kiện. Cụ thể như file đính kèm. Em cám ơn nhiều!
Sao nhiều thành viên khoái làm kiểu như thế này quá?
Bạn nên thay đổi cấu trúc lại để nhập liệu theo chiều dọc thì công việc của bạn sẽ được thuận tiện và nhẹ nhàng hơn, ba cái vụ này tôi cũng đã góp ý cho nhiều thành viên rồi nên không muốn góp ý nữa. Bạn có thể tham khảo 1 File mẫu tại bài 3 của Topic sau (nếu bạn thích kiểu đó thì viết code sau).
https://www.giaiphapexcel.com/diendan/threads/lỌc-dỮ-liỆu-sang-bẢng-tÍnh-khÁc.135344/
 
Upvote 0
Sao bạn không link (công thức) từ bảng 2 sang bảng 1 để biết bạn lấy như thế nào. Nhập chết số thế ai hiểu được. (lấy ở dòng khác là dòng nào cũng đc hay sao, thế thì rất nhiều kết quả nhé)
Dòng khác là dòng có cùng điều kiện tên sản phẩm và mã, những dòng có màu giống nhau trên 2 bang là dữ liệu cần lấy ạ
 
Upvote 0
Nếu có nhiều dòng cùng mã thì lấy dòng nào.
 
Upvote 0
Sao nhiều thành viên khoái làm kiểu như thế này quá?
Bạn nên thay đổi cấu trúc lại để nhập liệu theo chiều dọc thì công việc của bạn sẽ được thuận tiện và nhẹ nhàng hơn, ba cái vụ này tôi cũng đã góp ý cho nhiều thành viên rồi nên không muốn góp ý nữa. Bạn có thể tham khảo 1 File mẫu tại bài 3 của Topic sau (nếu bạn thích kiểu đó thì viết code sau).
https://www.giaiphapexcel.com/diendan/threads/lỌc-dỮ-liỆu-sang-bẢng-tÍnh-khÁc.135344/

Dạ, do số sản phẩm và số mã của bên em rất nhiều, nếu theo hàng dọc thì sẽ tạo nhiều cột và rối mắt, lại không thuận tiện cho các công thức sau này. Em cũng đã có 1 code làm theo hàng dọc nhưng chỉ áp dụng cho 1 sản phẩm và 1 mã, nhưng để làm tất cả các sản phẩm thì em đành phải chuyển hàng ngang ạ. Cám ơn bác!
Bài đã được tự động gộp:

Nếu có nhiều dòng cùng mã thì lấy dòng nào.
Dạ lấy từ trên xuống dưới sao cho đủ dữ lieu (6 cột) thì thôi ạ
 
Upvote 0
Dạ, do số sản phẩm và số mã của bên em rất nhiều, nếu theo hàng dọc thì sẽ tạo nhiều cột và rối mắt, lại không thuận tiện cho các công thức sau này. Em cũng đã có 1 code làm theo hàng dọc nhưng chỉ áp dụng cho 1 sản phẩm và 1 mã, nhưng để làm tất cả các sản phẩm thì em đành phải chuyển hàng ngang ạ. Cám ơn bác!
...............................
Tôi chỉ góp ý về cách làm để in phiếu xuất, phiếu nhập và lưu dữ liệu cho tiện, còn thích hay không là tùy bạn, bạn có thể tham khảo File trong bài viết sau để hiểu thêm (bạn có 1000 loại sản phẩm cũng làm được).
https://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/
 
Upvote 0
Tôi chỉ góp ý về cách làm để in phiếu xuất, phiếu nhập và lưu dữ liệu cho tiện, còn thích hay không là tùy bạn, bạn có thể tham khảo File trong bài viết sau để hiểu thêm (bạn có 1000 loại sản phẩm cũng làm được).
https://www.giaiphapexcel.com/diendan/threads/theo-dõi-và-truy-vấn-đơn-thuốc-nơi-phòng-khám-bệnh.126073/

Dạ, đây là file gốc của em, sheet Data input là phần dữ liệu vào, dữ liệu này có bố cục ban đầu như vậy rồi ạ, sheet Tong hop là phần dữ liệu em muốn lấy. Tại sheet Tong hop, cột A, B là phần code làm theo chiều dọc cho 1 sản phẩm và máy (đã giải quyết được). Bây giờ em phải tổng hợp tất cả các sản phẩm và máy trên 1 bảng (Cột D:E) vì vậy em cần dữ liệu theo chiều ngang (125 dữ liệu như code chiều dọc) để lập công thức cho các cột F, G, H. Nếu chuyển tất cả thành chiều dọc cũng được, nhưng em sẽ phải làm 1 sheet khác chuyển chiều ngang. Thực sự em cũng chưa có cách gì tốt hơn ạ. Cám ơn bác!
 

File đính kèm

Upvote 0
Dạ, đây là file gốc của em, sheet Data input là phần dữ liệu vào, dữ liệu này có bố cục ban đầu như vậy rồi ạ, sheet Tong hop là phần dữ liệu em muốn lấy. Tại sheet Tong hop, cột A, B là phần code làm theo chiều dọc cho 1 sản phẩm và máy (đã giải quyết được). Bây giờ em phải tổng hợp tất cả các sản phẩm và máy trên 1 bảng (Cột D:E) vì vậy em cần dữ liệu theo chiều ngang (125 dữ liệu như code chiều dọc) để lập công thức cho các cột F, G, H. Nếu chuyển tất cả thành chiều dọc cũng được, nhưng em sẽ phải làm 1 sheet khác chuyển chiều ngang. Thực sự em cũng chưa có cách gì tốt hơn ạ. Cám ơn bác!
Cái này là do cách bố trí và nhập liệu từ ban đầu, nếu làm như File mẫu của tôi thì muốn tổng hợp hay muốn xuất danh sách theo kiểu gì cũng được.
Còn làm như kiểu bạn thì thua, tôi không nghiên cứu ba cái kiểu nhập liệu nhọc nhằn này.
Vì vậy, bạn chờ thành viên khác có giải pháp gì thì cứu giúp.
 
Upvote 0
Cái này là do cách bố trí và nhập liệu từ ban đầu, nếu làm như File mẫu của tôi thì muốn tổng hợp hay muốn xuất danh sách theo kiểu gì cũng được.
Còn làm như kiểu bạn thì thua, tôi không nghiên cứu ba cái kiểu nhập liệu nhọc nhằn này.
Vì vậy, bạn chờ thành viên khác có giải pháp gì thì cứu giúp.
Vâng, dù sao em cũng cám ơn bác, do bên em là đơn vị sản xuất, dữ liệu đôi khi phải theo nhà sản xuất cung cấp (do cách mặc định của thiết bị cấp dữ liệu mua của nhà cung cấp) nên không thay đổi được cách nhập ạ. Em đưa lên để bác hiểu cái khó của em thôi. Em cũng không phải người bảo thủ hay cố chấp mà không tiếp nhận cái mới, có điều không thay đổi được nên phải chịu
 
Upvote 0
Vâng, dù sao em cũng cám ơn bác, do bên em là đơn vị sản xuất, dữ liệu đôi khi phải theo nhà sản xuất cung cấp (do cách mặc định của thiết bị cấp dữ liệu mua của nhà cung cấp) nên không thay đổi được cách nhập ạ. Em đưa lên để bác hiểu cái khó của em thôi. Em cũng không phải người bảo thủ hay cố chấp mà không tiếp nhận cái mới, có điều không thay đổi được nên phải chịu
File bài #1 thì còn hiểu, file bài #8 thì "đơ".
Bạn xem code này cho kiểu cấu trúc của bài #1 rồi tùy ý chỉnh sửa:
PHP:
Public Sub sGPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Txt As String
sArr = Range("A6", Range("A6").End(xlDown)).Resize(, 6).Value
ReDim dArr(1 To UBound(sArr), 1 To 9)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(sArr)
        Txt = sArr(I, 1) & "#" & sArr(I, 2)
        If Not .Exists(Txt) Then
            K = K + 1
            .Item(Txt) = K
            dArr(K, 1) = sArr(I, 1)
            dArr(K, 2) = sArr(I, 2)
            dArr(K, 9) = 2
        End If
            For J = 3 To 6
                If sArr(I, J) <> Empty Then
                    R = .Item(Txt)
                    If dArr(R, 9) < 8 Then
                        dArr(R, 9) = dArr(R, 9) + 1
                        dArr(R, dArr(R, 9)) = sArr(I, J)
                    End If
                End If
            Next J
    Next I
End With
Range("I15").Resize(K, 8) = dArr
Range("I15").Resize(K, 8).Sort Key1:=Range("I15")
End Sub
"Hổng chơi" với bài #8 nhé!
 
Upvote 0
File bài #1 thì còn hiểu, file bài #8 thì "đơ".
Bạn xem code này cho kiểu cấu trúc của bài #1 rồi tùy ý chỉnh sửa:
PHP:
Public Sub sGPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Txt As String
sArr = Range("A6", Range("A6").End(xlDown)).Resize(, 6).Value
ReDim dArr(1 To UBound(sArr), 1 To 9)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(sArr)
        Txt = sArr(I, 1) & "#" & sArr(I, 2)
        If Not .Exists(Txt) Then
            K = K + 1
            .Item(Txt) = K
            dArr(K, 1) = sArr(I, 1)
            dArr(K, 2) = sArr(I, 2)
            dArr(K, 9) = 2
        End If
            For J = 3 To 6
                If sArr(I, J) <> Empty Then
                    R = .Item(Txt)
                    If dArr(R, 9) < 8 Then
                        dArr(R, 9) = dArr(R, 9) + 1
                        dArr(R, dArr(R, 9)) = sArr(I, J)
                    End If
                End If
            Next J
    Next I
End With
Range("I15").Resize(K, 8) = dArr
Range("I15").Resize(K, 8).Sort Key1:=Range("I15")
End Sub
"Hổng chơi" với bài #8 nhé!
Dạ, em cám ơn thầy, chúc thầy sức khoẻ!
 
Upvote 0
Dạ, đây là file gốc của em, sheet Data input là phần dữ liệu vào, dữ liệu này có bố cục ban đầu như vậy rồi ạ, sheet Tong hop là phần dữ liệu em muốn lấy. Tại sheet Tong hop, cột A, B là phần code làm theo chiều dọc cho 1 sản phẩm và máy (đã giải quyết được). Bây giờ em phải tổng hợp tất cả các sản phẩm và máy trên 1 bảng (Cột D:E) vì vậy em cần dữ liệu theo chiều ngang (125 dữ liệu như code chiều dọc) để lập công thức cho các cột F, G, H. Nếu chuyển tất cả thành chiều dọc cũng được, nhưng em sẽ phải làm 1 sheet khác chuyển chiều ngang. Thực sự em cũng chưa có cách gì tốt hơn ạ. Cám ơn bác!
Code chạy ra kết quả đến 286.397 dòng nên mất 3 phút (chậm quá).
Đây là kết quả dòng 6 và 7 và 2 dòng cuối cùng của sheet Data input (File bài 8) phải như thế này không? Bạn kiểm tra lại thử.

A_Tranpose.JPG

A_Cuoi.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom