filter theo điều kiện

Liên hệ QC

huongmuine

Thành viên GPE
Tham gia
27/5/10
Bài viết
222
Được thích
32
Giới tính
Nam
Các chủ đề về filter có nhiều trên diễn dàn, nhưng em chưa thể áp dụng vào công việc cụ thể của mình được rất mong anh chị giúp đỡ.
Yêu cầu:
Từ sheet Data trích lọc sang sheet DN5 với nội dung điều kiện:
1. theo dòng tiêu đề AA1:AF1 ( nội dung tiêu đề có thể thay đổi )
2. dữ liệu lọc AA2:AF2 ( nếu kiều kiện ở những ô nào thì lọc theo tất cả điều kiện tại các ô đó, nếu không có điều kiện nào thì lọc hết )
3. Nội dung lọc sẽ được ghi vào từ B12 của sheetDN5 ( Theo dòng tiêu đề B11:R11)
4. Cột A sheetDN5 sẽ đánh số thứ thự theo các dòng dữ liệu
5. Ẩn ( hiện cho vừa với vùng dữ liệu ) dòng từ dòng 411 trở lên đến dòng có dữ liệu cuối cùng theo cột B sheet DN5.
6. Có thể sử dụng code này cho các sheet tương tự có tên bắt đầu bằng DN khác.
Em xin cảm ơn.
 

File đính kèm

  • PhoCap - Copy.rar
    25.4 KB · Đọc: 9
Các chủ đề về filter có nhiều trên diễn dàn, nhưng em chưa thể áp dụng vào công việc cụ thể của mình được rất mong anh chị giúp đỡ.
Yêu cầu:
Từ sheet Data trích lọc sang sheet DN5 với nội dung điều kiện:
1. theo dòng tiêu đề AA1:AF1 ( nội dung tiêu đề có thể thay đổi )
2. dữ liệu lọc AA2:AF2 ( nếu kiều kiện ở những ô nào thì lọc theo tất cả điều kiện tại các ô đó, nếu không có điều kiện nào thì lọc hết )
3. Nội dung lọc sẽ được ghi vào từ B12 của sheetDN5 ( Theo dòng tiêu đề B11:R11)
4. Cột A sheetDN5 sẽ đánh số thứ thự theo các dòng dữ liệu
5. Ẩn ( hiện cho vừa với vùng dữ liệu ) dòng từ dòng 411 trở lên đến dòng có dữ liệu cuối cùng theo cột B sheet DN5.
6. Có thể sử dụng code này cho các sheet tương tự có tên bắt đầu bằng DN khác.
Em xin cảm ơn.
Bạn xem thử file này, yêu cầu 6. chưa thấy chưa hiểu.
 

File đính kèm

  • PhoCap - Copy.rar
    34.7 KB · Đọc: 39
Upvote 0
Bạn xem thử file này, yêu cầu 6. chưa thấy chưa hiểu.
Yêu cầu 6 là: ví dụ em thêm sheet mới có tên DN1 hay DN2 ( DN1, DN2 cũng có cấu trúc tương tự DN5 nhưng sẽ khác nội dung lọc ) ... thì vẫn sử dụng được code trên ạ
File đúng yêu cầu rồi ạ
Xin cảm ơn Ba Tê.
 
Lần chỉnh sửa cuối:
Upvote 0
File của mình lọc ( nội dung lọc ở sheet DN5) không được như mong muốn không biết vì lỗi gì.
Mong nhờ các anh chị có thể chỉ giúp lỗi.
 

File đính kèm

  • PhoCap - Copy.xlsb
    66.8 KB · Đọc: 9
Lần chỉnh sửa cuối:
Upvote 0
File của mình lọc ( nội dung lọc ở sheet DN5) không được như mong muốn không biết vì lỗi gì.
Mong nhờ các anh chị có thể chỉ giúp lỗi.
With Sheets("Data")
sArr = .Range("A2", .Range("A60000").End(xlUp)).Resize(, 44).Value
End With
Cột A sheet Data "có quái" gì đâu?
Sửa "A60000" thành "O60000" thử xem sao.
 
Upvote 0
Cho em hỏi mình cần chỉnh dòng nào trong code để dữ liệu tìm được là giá trị đúng với điều kiện cần tìm.
Trong file điều kiện tìm AB3= 15
tuy nhiên cột R lại cho ra một số các giá trị khác với 15.
Em cảm ơn.
 

File đính kèm

  • PhoCap - Copy.xlsb
    73.9 KB · Đọc: 5
Upvote 0
Cho em hỏi mình cần chỉnh dòng nào trong code để dữ liệu tìm được là giá trị đúng với điều kiện cần tìm.
Trong file điều kiện tìm AB3= 15
tuy nhiên cột R lại cho ra một số các giá trị khác với 15.
Em cảm ơn.
Lúc muốn tìm "giống giống", lúc muốn tìm chính xác thì gây khó rồi.
Code này tìm chính xác từng cột. 15 là Number khác với 15 là Text nhé.
PHP:
Public Sub GpE_LoC()
Dim sArr(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
With Sheets("Data")
    sArr = .Range("A2", .Range("A60000").End(xlUp)).Resize(, 44).Value
End With
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 18)
With Sheets("DN5")
    TieuDe = .Range("AA1:AF3").Value
    tArr = .Range("A10:R10").Value
    For I = 1 To R
        DK = True
        For J = 1 To UBound(TieuDe, 2)
            If TieuDe(3, J) <> Empty Then
                If sArr(I, TieuDe(1, J)) <> TieuDe(3, J) Then
                    DK = False
                    Exit For
                End If
            End If
        Next J
        If DK = True Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To UBound(tArr, 2)
                If tArr(1, J) <> Empty Then dArr(K, J) = sArr(I, tArr(1, J))
            Next J
        End If
    Next I
    .Rows("12:450").Hidden = False
    .Range("A12:R450").ClearContents
    If K Then
        .Range("A12:R12").Resize(K) = dArr
        .Rows(K + 12 & ":450").Hidden = True
    End If
End With
End Sub
 

File đính kèm

  • PhoCap - Copy.rar
    67.2 KB · Đọc: 32
Upvote 0
Lúc muốn tìm "giống giống", lúc muốn tìm chính xác thì gây khó rồi.
Code này tìm chính xác từng cột. 15 là Number khác với 15 là Text nhé.
PHP:
Public Sub GpE_LoC()
Dim sArr(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
With Sheets("Data")
    sArr = .Range("A2", .Range("A60000").End(xlUp)).Resize(, 44).Value
End With
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 18)
With Sheets("DN5")
    TieuDe = .Range("AA1:AF3").Value
    tArr = .Range("A10:R10").Value
    For I = 1 To R
        DK = True
        For J = 1 To UBound(TieuDe, 2)
            If TieuDe(3, J) <> Empty Then
                If sArr(I, TieuDe(1, J)) <> TieuDe(3, J) Then
                    DK = False
                    Exit For
                End If
            End If
        Next J
        If DK = True Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To UBound(tArr, 2)
                If tArr(1, J) <> Empty Then dArr(K, J) = sArr(I, tArr(1, J))
            Next J
        End If
    Next I
    .Rows("12:450").Hidden = False
    .Range("A12:R450").ClearContents
    If K Then
        .Range("A12:R12").Resize(K) = dArr
        .Rows(K + 12 & ":450").Hidden = True
    End If
End With
End Sub
Em cảm ơn nhiều ạ.
Vì công việc cần song song 2 điều kiện như thế.
 
Upvote 0
Nhờ các Bạn giúp thêm đoạn code vào đoạn code có sẵn trong file. Yêu cầu:
Dựa vào sheet Ma để điền dữ liệu tại cột J ( sheet DN5 ) như kết quả của file.
Xin cảm ơn.
 

File đính kèm

  • PhoCap - Copy.xlsb
    73.3 KB · Đọc: 11
Upvote 0
Nhờ các Bạn giúp thêm đoạn code vào đoạn code có sẵn trong file. Yêu cầu:
Dựa vào sheet Ma để điền dữ liệu tại cột J ( sheet DN5 ) như kết quả của file.
Xin cảm ơn.
Nhìn quen quen, File này hồi "đời nào" vậy?
PHP:
Public Sub GPE_LoC()
Dim Dic As Object, Ma()
Dim sArr(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    sArr = Sheets("Ma").Range("A2:B14").Value
    For I = 1 To 13
        Dic.Item(sArr(I, 1)) = sArr(I, 2)
    Next I
With Sheets("Data")
    sArr = .Range("A2", .Range("A60000").End(xlUp)).Resize(, 44).Value
    R = UBound(sArr)
End With
ReDim dArr(1 To R, 1 To 18)
With Sheets("DN5")
    TieuDe = .Range("AA1:AF3").Value
    tArr = .Range("A10:R10").Value
    For I = 1 To R
        DK = True
        For J = 1 To UBound(TieuDe, 2)
            If TieuDe(3, J) <> Empty Then
                If sArr(I, TieuDe(1, J)) <> TieuDe(3, J) Then
                    DK = False
                    Exit For
                End If
            End If
        Next J
        If DK = True Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To UBound(tArr, 2)
                If tArr(1, J) <> Empty Then dArr(K, J) = sArr(I, tArr(1, J))
            Next J
            dArr(K, 10) = Dic.Item(sArr(I, 24))
        End If
    Next I
    .Rows("12:450").Hidden = False
    .Range("A12:R450").ClearContents
    If K Then
        .Range("A12:R12").Resize(K) = dArr
        .Rows(K + 12 & ":450").Hidden = True
    End If
End With
Set Dic = Nothing
End Sub
 
Upvote 0
Nhìn quen quen, File này hồi "đời nào" vậy?
PHP:
Public Sub GPE_LoC()
Dim Dic As Object, Ma()
Dim sArr(), dArr(), tArr(), TieuDe(), DK As Boolean
Dim I As Long, J As Long, K As Long, N As Long, R As Long
    Set Dic = CreateObject("Scripting.Dictionary")
    sArr = Sheets("Ma").Range("A2:B14").Value
    For I = 1 To 13
        Dic.Item(sArr(I, 1)) = sArr(I, 2)
    Next I
With Sheets("Data")
    sArr = .Range("A2", .Range("A60000").End(xlUp)).Resize(, 44).Value
    R = UBound(sArr)
End With
ReDim dArr(1 To R, 1 To 18)
With Sheets("DN5")
    TieuDe = .Range("AA1:AF3").Value
    tArr = .Range("A10:R10").Value
    For I = 1 To R
        DK = True
        For J = 1 To UBound(TieuDe, 2)
            If TieuDe(3, J) <> Empty Then
                If sArr(I, TieuDe(1, J)) <> TieuDe(3, J) Then
                    DK = False
                    Exit For
                End If
            End If
        Next J
        If DK = True Then
            K = K + 1
            dArr(K, 1) = K
            For J = 2 To UBound(tArr, 2)
                If tArr(1, J) <> Empty Then dArr(K, J) = sArr(I, tArr(1, J))
            Next J
            dArr(K, 10) = Dic.Item(sArr(I, 24))
        End If
    Next I
    .Rows("12:450").Hidden = False
    .Range("A12:R450").ClearContents
    If K Then
        .Range("A12:R12").Resize(K) = dArr
        .Rows(K + 12 & ":450").Hidden = True
    End If
End With
Set Dic = Nothing
End Sub
Rất cảm ơn Thầy.
File được Thầy giúp cách đây 2 năm rồi ạ.
Xin chúc Thầy có chuyến đi ra Bắc sắp tới nhiều niềm vui.
 
Upvote 0
Nhờ Các Bạn chỉnh giúp code một lần nữa để tra thêm Mã tại cột N (Sheet DN5). Xin cảm ơn
 

File đính kèm

  • PhoCap - Copy.xlsb
    74.9 KB · Đọc: 6
Upvote 0
Web KT
Back
Top Bottom