Trích lọc dữ liệu theo 3 điều kiện (1 người xem)

  • Thread starter Thread starter bee111
  • Ngày gửi Ngày gửi

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

bee111

Thành viên mới
Tham gia
19/8/11
Bài viết
35
Được thích
1
Xin chào các anh chị trên diễn đàn. Tôi có câu hỏi sau muốn nhờ các anh chị giúp cho.
- tôi có bảng excel gồm 2 trường dữ liệu. trường 1 gồm ccác cột từ A đến cot G, trường 2 gồm các cột từ cột I đến cột L. 2 trường này có số dòng khác nhau.
Vậy nhờ các anh chị viết code để lọc được những dữ liệu trùng với 3 điều kiên là giá trị của 3 cột E, F,G phải giống với giátrị của 3 cột J,K,L. từ đó nhặt ra giá trị ở cột A,B,C,D tương ứng với trường 1. cụ thể ở file excel này.
 

File đính kèm

Xin chào các anh chị trên diễn đàn. Tôi có câu hỏi sau muốn nhờ các anh chị giúp cho.
- tôi có bảng excel gồm 2 trường dữ liệu. trường 1 gồm ccác cột từ A đến cot G, trường 2 gồm các cột từ cột I đến cột L. 2 trường này có số dòng khác nhau.
Vậy nhờ các anh chị viết code để lọc được những dữ liệu trùng với 3 điều kiên là giá trị của 3 cột E, F,G phải giống với giátrị của 3 cột J,K,L. từ đó nhặt ra giá trị ở cột A,B,C,D tương ứng với trường 1. cụ thể ở file excel này.
Bạn xem file đúng ý bạn không nhé
 

File đính kèm

Upvote 0
Cảm ơn bạn đã giúp mình, chạy đúng ý. bạn bổ sung thêm cột I5:I13 (số thứ tự) vào bảng kếtquả nữa nhé.
 
Upvote 0
Bạn VieHoai cho mình hỏi. Nếu vẫn 3 điều kiên lọc trên nhưng lấy thêm nhiều cột kết quả khác thif sửa code thế nào vậy bạn ? bạn giải thích code bạn viết cho mình hiểu với nhé mình còn mơ hồ về vba lắm. thank
 
Upvote 0
Cảm ơn bạn đã giúp mình, chạy đúng ý. bạn bổ sung thêm cột I5:I13 (số thứ tự) vào bảng kếtquả nữa nhé.
Thử xem file này.
Nếu vẫn 3 điều kiên lọc trên nhưng lấy thêm nhiều cột kết quả khác thif sửa code thế nào vậy bạn ?
Bạn phải đưa dữ liệu thật lên để làm 1 lần, làm sao biết bạn thêm nhiều cột là bao nhiêu cột và nó nằm ở đâu mà giải thích cho được
 

File đính kèm

Upvote 0
Cảm ơn bạn đã giúp mình, chạy đúng ý. bạn bổ sung thêm cột I5:I13 (số thứ tự) vào bảng kếtquả nữa nhé.
Chỉnh sửa code lại một xíu là được:
[GPECODE=vb]Sub Loc()
Dim ArrB1(), ArrB2(), ArrKQ(), BCD()
Dim i As Integer, j As Integer

BCD = Sheet1.Range("A5:C13").Value
ArrB1 = Sheet1.Range("E5:G13").Value
ArrB2 = Sheet1.Range("J5:L15").Value
ReDim ArrKQ(1 To UBound(ArrB2), 1 To 7)
For i = 1 To UBound(ArrB2)
For j = 1 To 3
ArrKQ(i, 1) = i
ArrKQ(i, j + 1) = ArrB2(i, j)
Next
Next
For k = 1 To UBound(ArrB1)
For i = 1 To UBound(ArrB1)
If ArrB1(k, 1) = ArrB2(i, 1) And ArrB1(k, 2) = ArrB2(i, 2) And ArrB1(k, 3) = ArrB2(i, 3) Then
For j = 5 To 7
ArrKQ(i, j) = BCD(k, j - 4)
Next
End If
Next
Next
Sheet1.Range("O20").Resize(UBound(ArrKQ), 7).Value = ArrKQ
End Sub[/GPECODE]
Đây là tôi chỉnh sửa từ code của anh viehoai, bạn đừng bắt tôi phải giải thích nhé, mấy cái Array này tôi mù tịt.
 
Upvote 0
Sao phải khiêm tốn vậy Phúc
Cái này là thiệt mà anh, hồi giờ em có dám nghiên cứu đến Array đâu, có 2 món rất hay mà em chưa bao giờ dám thử là Array và Dictonary, đã đưa link vào chữ ký rồi nhưng mà em vẫn chưa đụng tới bao giờ.
Đúng là "nhát gan" thiệt!

Cũng xin nói thêm là trong bài #6, nên đưa câu lệnh ArrKQ(i, 1) = i ra bên ngoài vòng For j thì hợp lý hơn.
 
Upvote 0
Cảm ơn các bạn đã giúp mình nhiệt tình. Mình xin gửi mẫu file dữ liệu thật để các bạn xem và giúp mình. các yêu cầu lọc dữ liệu của bảng mình ghi chú ở cuối bảng dữ liệu. Mình cần nộp số liệu gấp các bạn giúp mình ngay nhé. thank
 
Upvote 0
Cảm ơn các bạn đã giúp mình nhiệt tình. Mình xin gửi mẫu file dữ liệu thật để các bạn xem và giúp mình. các yêu cầu lọc dữ liệu của bảng mình ghi chú ở cuối bảng dữ liệu. Mình cần nộp số liệu gấp các bạn giúp mình ngay nhé. thank
Sau này cái câu chữ đỏ đừng sử dụng trên GPE này nữa nghe bạn.
Bạn nhờ người khác thì khi nào người ta muốn làm thì làm, hối thúc người khác kỳ quá. Có khi đọc câu đó mọi người lại không muốn giúp.
 

File đính kèm

Upvote 0
Mình xin tiếp thu ý kiến của bạn BaTe.
- Bạn BaTe ơi bạn sửa lại giùm mìnhvới. Bảng kết quả chạy ra thì 3 cột BY, CC, CE phải lấy theo bảng 2 la 3 cột AS, AT,AU. code của bạn chạy ra bảng kết quả lại lấy theo 3 cột so sánh ở bảng 1 và còn thiếu 3 dòng có số thửa 101,102,103 của bảng 2.
-Tóm lại: Bảng kết quả ở 3 cột so sánh thì bạn lấy theo bảng 2( nếu trùng nhau giữa2 bảng 1-2). còn dữ liệu lọc ra bạn lấy ở bảng 1. nếu 3 điều kiện không thoả mãn thì vùng dữ liệu cần lọc bạn để trống.
Thank
 
Upvote 0
Mình xin tiếp thu ý kiến của bạn BaTe.
- Bạn BaTe ơi bạn sửa lại giùm mìnhvới. Bảng kết quả chạy ra thì 3 cột BY, CC, CE phải lấy theo bảng 2 la 3 cột AS, AT,AU. code của bạn chạy ra bảng kết quả lại lấy theo 3 cột so sánh ở bảng 1 và còn thiếu 3 dòng có số thửa 101,102,103 của bảng 2.
-Tóm lại: Bảng kết quả ở 3 cột so sánh thì bạn lấy theo bảng 2( nếu trùng nhau giữa2 bảng 1-2). còn dữ liệu lọc ra bạn lấy ở bảng 1. nếu 3 điều kiện không thoả mãn thì vùng dữ liệu cần lọc bạn để trống.
Thank
Cũng vẫn chưa hiểu lắm, thay Sub cũ bằng Sub này xem kết quả có đúng ý muốn không?
PHP:
Public Sub GPE()
Dim Dic As Object, Sarr(), Arr(), Darr(), Tem As String, I As Long, J As Long, K As Long
Set Dic = CreateObject("Scripting.Dictionary")
Arr = Range([AS4], [AS65000].End(xlUp)).Resize(, 3).Value
ReDim Darr(1 To UBound(Arr, 1), 1 To 41)
For K = 1 To UBound(Arr, 1)
    Tem = UCase(Arr(K, 1) & Arr(K, 2) & Arr(K, 3))
    If Not Dic.Exists(Tem) Then Dic.Add Tem, K
    Darr(K, 1) = K: Darr(K, 32) = Arr(K, 1)
    Darr(K, 34) = Arr(K, 2): Darr(K, 28) = Arr(K, 3)
Next K
Sarr = Range([A4], [A65000].End(xlUp)).Resize(, 41).Value
For I = 1 To UBound(Sarr, 1)
    Tem = UCase(Sarr(I, 32) & Sarr(I, 34) & Sarr(I, 28))
    If Dic.Exists(Tem) Then
        For J = 1 To 41
            Darr(Dic.Item(Tem), J) = Sarr(I, J)
        Next
    End If
Next I
[AX4].Resize(65000, 41).ClearContents
[AX4].Resize(K - 1, 41).Value = Darr
Set Dic = Nothing
End Sub
 
Upvote 0
Chạy gần đúng ý mìnhrồi bạn ạ, bạn sửa thêm chút sao cho
- số thứ tự ở cột AX (bảng kếtquả) là số liên tiếp từ 1 đến hết (1----103),
- ở cột CA (bảng kết quả ) thì copy ở cột AR (bảng 2) sang bảng kết quả.
- các cột BY,CA, CC,CE được lấy từ bảng 2 (tương ứng là cột AU,AR,AS,AT). ở bảng kết quả vị trí và giá trị các ô tương ứng ở Bảng 2 được giữ nguyên.
 
Lần chỉnh sửa cuối:
Upvote 0
Chạy gần đúng ý mìnhrồi bạn ạ, bạn sửa thêm chút sao cho
- số thứ tự ở cột AX (bảng kếtquả) là số liên tiếp từ 1 đến hết (1----103),
- ở cột CA (bảng kết quả ) thì copy ở cột AR (bảng 2) sang bảng kết quả.
- các cột BY,CA, CC,CE được lấy từ bảng 2 (tương ứng là cột AU,AR,AS,AT). ở bảng kết quả vị trí và giá trị các ô tương ứng ở Bảng 2 được giữ nguyên.
Đúng là câu hỏi không nêu rõ từ đầu. Làm lại lần cuối vậy.
 

File đính kèm

Upvote 0
Public Sub GPE()
Dim Dic As Object, Sarr(), Arr(), Darr(), Tem As String, I As Long, J As Long, K As Long
Set Dic
= CreateObject("Scripting.Dictionary")
Arr = Range([AS4], [AS65000].End(xlUp)).Resize(, 3).Value
ReDim Darr
(1 To UBound(Arr, 1), 1 To 41)
For
K = 1 To UBound(Arr, 1)
Tem = UCase(Arr(K, 1) & Arr(K, 2) & Arr(K, 3))
If
Not Dic.Exists(Tem) Then Dic.Add Tem, K
Darr
(K, 1) = K: Darr(K, 32) = Arr(K, 1)
Darr(K, 34) = Arr(K, 2): Darr(K, 28) = Arr(K, 3)
Next K
Sarr
= Range([A4], [A65000].End(xlUp)).Resize(, 41).Value
For I = 1 To UBound(Sarr, 1)
Tem = UCase(Sarr(I, 32) & Sarr(I, 34) & Sarr(I, 28))
If
Dic.Exists(Tem) Then
For J = 1 To 41
Darr
(Dic.Item(Tem), J) = Sarr(I, J)
Next
End
If
Next I
[AX4].Resize(65000, 41).ClearContents
[AX4].Resize(K - 1, 41).Value = Darr
Set Dic
= Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
7n
Chào các anh chị!
Mong các anh chị giúp em trường hợp này, một học trò cũ của Thầy em gửi hỏi Thầy và Thầy giao cho tụi em xử lý nhưng chưa tìm ra giải pháp.

1. Bảng 1 là báo cáo kho thành phẩm, cũng có những thông tin như Số Lot (cột D), Số Cây (cột E), Số YDS (cột L),
2. Bảng 2 là báo cáo kiểm tra hàng, cũng có những thông tin như Số Lot (cột C), Số Cây (cột D), Số YDS (cột E), và có thêm cột “GHI CHÚ” (cột AN) nữa.

Em muốn dò trong 2 bảng 1 và 2, nếu số Lot, số Cây, Số YDS trong 2 bảng trùng nhau thì điền thông tin cột GHI CHÚ bên bảng 2 vào cột “REASON” (S) trong bảng 1.
File dung lượng lớn anh chị download ở đây giúp em https://www.mediafire.com/?pc2pnhp7kng1gv7
Nếu được xin hướng dẫn em cách làm luôn ah.
Xin cảm ơn anh chị!
Chưa xem File nhưng chắc đây là File báo cáo kiểm vải. Trong ngành may. Thế thầy của em đã có giải pháp gì chưa?. Sao bạn không hỏi thầy mình trước để biết được ít nhất một giải pháp.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom