Lọc dữ liệu theo điều kiện

Liên hệ QC

huongmuine

Thành viên GPE
Tham gia
27/5/10
Bài viết
225
Được thích
32
Giới tính
Nam
Mình muốn lọc danh sách từ sheet Data sang sheet Loc theo kết quả tại sheet Loc. Nếu các mã khuyết tật có ký tự X- đứng đầu sẽ đánh dấu x vào cột "Có giấy chứng nhận". Xin cảm ơn.
 

File đính kèm

Mình muốn lọc danh sách từ sheet Data sang sheet Loc theo kết quả tại sheet Loc. Nếu các mã khuyết tật có ký tự X- đứng đầu sẽ đánh dấu x vào cột "Có giấy chứng nhận". Xin cảm ơn.
Tham khảo code và file đính kèm.
Mã:
Sub Loc()
Dim sArr(), dArr(), i As Long, j As Long
sArr = Sheet1.Range("A9:D" & Sheet1.Range("A65535").End(3).Row).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
For i = 1 To UBound(sArr, 1)
    If sArr(i, 4) <> "" Then
        j = j + 1
        dArr(j, 1) = j
        dArr(j, 2) = sArr(i, 2)
        If InStr(sArr(i, 4), "X-") Then
            dArr(j, 3) = Replace(sArr(i, 4), "X-", "")
            dArr(j, 5) = "X"
        Else
            dArr(j, 3) = sArr(i, 4)
        End If
    End If
Next i
If j Then
    Sheet2.Range("A6:E1000").ClearContents
    Sheet2.Range("A6").Resize(j, 5) = dArr
End If
End Sub
 

File đính kèm

Upvote 0
Tham khảo code và file đính kèm.
Mã:
Sub Loc()
Dim sArr(), dArr(), i As Long, j As Long
sArr = Sheet1.Range("A9:D" & Sheet1.Range("A65535").End(3).Row).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
For i = 1 To UBound(sArr, 1)
    If sArr(i, 4) <> "" Then
        j = j + 1
        dArr(j, 1) = j
        dArr(j, 2) = sArr(i, 2)
        If InStr(sArr(i, 4), "X-") Then
            dArr(j, 3) = Replace(sArr(i, 4), "X-", "")
            dArr(j, 5) = "X"
        Else
            dArr(j, 3) = sArr(i, 4)
        End If
    End If
Next i
If j Then
    Sheet2.Range("A6:E1000").ClearContents
    Sheet2.Range("A6").Resize(j, 5) = dArr
End If
End Sub
Rất cảm ơn Bạn đã giúp đỡ.
Bài đã được tự động gộp:

Cảm ơn Bạn đã quan tâm.
Bài đã được tự động gộp:

Rất xin lỗi các Bạn vì gửi nhầm file ( MÌnh cũng đã kiểm tra file khi gửi - nhưng lại gửi nhầm). Mong các Bạn thông cảm và giúp lại mình lần nữa. Rất cảm ơn các Bạn.
 

File đính kèm

Upvote 0
Nhờ các Bạn giúp hộ mình file trên. Xin cảm ơn
 
Upvote 0
Nhờ các Bạn giúp hộ mình file trên. Xin cảm ơn
Xem file đính kèm nhe
Mã:
Sub Loc()
Dim sArr(), sArr2(), sArr3(), dArr(), i As Long, j As Long, k As Long
sArr = Sheet1.Range("B9:D" & Sheet1.Range("B65535").End(3).Row).Value
sArr2 = Sheet3.Range("B2:C" & Sheet3.Range("B65535").End(3).Row).Value
sArr3 = Sheet2.Range("D5:" & Sheet2.Range("D5").End(xlToRight).Address(0, 0)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 13)
For i = 1 To UBound(sArr, 1)
    If sArr(i, 3) <> "" Then
        j = j + 1
        dArr(j, 1) = j
        dArr(j, 2) = sArr(i, 1)
        For k = 1 To UBound(sArr2, 1)
            If Replace(sArr(i, 3), "X-", "") = sArr2(k, 1) Then
                If InStr(sArr(i, 3), "X-") Then
                    dArr(j, k + 3) = "x"
                    dArr(j, 13) = "x"
                Else
                    dArr(j, k + 3) = "x"
                End If
            End If
        Next k
    End If
Next i
If j Then
    Sheet2.Range("A6:M1000").ClearContents
    Sheet2.Range("A6").Resize(j, 13) = dArr
End If
End Sub
 

File đính kèm

Upvote 0
Xem file đính kèm nhe
Mã:
Sub Loc()
Dim sArr(), sArr2(), sArr3(), dArr(), i As Long, j As Long, k As Long
sArr = Sheet1.Range("B9:D" & Sheet1.Range("B65535").End(3).Row).Value
sArr2 = Sheet3.Range("B2:C" & Sheet3.Range("B65535").End(3).Row).Value
sArr3 = Sheet2.Range("D5:" & Sheet2.Range("D5").End(xlToRight).Address(0, 0)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 13)
For i = 1 To UBound(sArr, 1)
    If sArr(i, 3) <> "" Then
        j = j + 1
        dArr(j, 1) = j
        dArr(j, 2) = sArr(i, 1)
        For k = 1 To UBound(sArr2, 1)
            If Replace(sArr(i, 3), "X-", "") = sArr2(k, 1) Then
                If InStr(sArr(i, 3), "X-") Then
                    dArr(j, k + 3) = "x"
                    dArr(j, 13) = "x"
                Else
                    dArr(j, k + 3) = "x"
                End If
            End If
        Next k
    End If
Next i
If j Then
    Sheet2.Range("A6:M1000").ClearContents
    Sheet2.Range("A6").Resize(j, 13) = dArr
End If
End Sub
Xin cảm ơn Bạn đã nhiệt tình giúp đỡ. Kết quả đúng như mình mong đợi.
Chúc Bạn cuối ngày nhiều niềm vui.
 
Upvote 0
Thêm một cách dùng "dao mỗ trâu".
PHP:
Public Sub Gpe()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Tmp As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("Ma").Range("B2:B9").Value
    For I = 1 To 8
        Dic.Item(sArr(I, 1)) = I + 3
    Next I
sArr = Sheets("Data").Range("B9", Sheets("Data").Range("B9").End(xlDown)).Resize(, 3).Value
    R = UBound(sArr)
ReDim dArr(1 To R, 1 To 13)
    For I = 1 To R
        If sArr(I, 3) <> Empty Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = sArr(I, 1)
            If Left(sArr(I, 3), 2) = "X-" Then
                Tmp = Mid(sArr(I, 3), 3)
                dArr(K, 13) = "x"
            Else
                Tmp = sArr(I, 3)
            End If
            dArr(K, Dic.Item(Tmp)) = "x"
        End If
    Next I
Sheets("Loc").Range("A6").Resize(K, 13) = dArr
Set Dic = Nothing
End Sub
 
Upvote 0
Thêm một cách dùng "dao mỗ trâu".
PHP:
Public Sub Gpe()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Tmp As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("Ma").Range("B2:B9").Value
    For I = 1 To 8
        Dic.Item(sArr(I, 1)) = I + 3
    Next I
sArr = Sheets("Data").Range("B9", Sheets("Data").Range("B9").End(xlDown)).Resize(, 3).Value
    R = UBound(sArr)
ReDim dArr(1 To R, 1 To 13)
    For I = 1 To R
        If sArr(I, 3) <> Empty Then
            K = K + 1
            dArr(K, 1) = K
            dArr(K, 2) = sArr(I, 1)
            If Left(sArr(I, 3), 2) = "X-" Then
                Tmp = Mid(sArr(I, 3), 3)
                dArr(K, 13) = "x"
            Else
                Tmp = sArr(I, 3)
            End If
            dArr(K, Dic.Item(Tmp)) = "x"
        End If
    Next I
Sheets("Loc").Range("A6").Resize(K, 13) = dArr
Set Dic = Nothing
End Sub
Rất cảm ơn Thầy đã giúp đỡ!
 
Upvote 0
Web KT

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

Back
Top Bottom