Hỏi về lọc duy nhất tại 1 cột

Liên hệ QC

kkls4745

Thành viên mới
Tham gia
7/11/08
Bài viết
10
Được thích
1
Xin hỏi có cach nào lọc trong VBA, lọc không trùng nhau như file mấu.
Chi lọc 1 giá trị 12 duy nhất trong nhiều giá trị 12
" Trong cột : MA1 chỉ lọc giá trị không trùng nhau :
KQ
12 x x x
15 x x x
 

File đính kèm

Lần chỉnh sửa cuối:
Xin hỏi có cach nào lọc trong VBA, lọc không trùng nhau như file mấu.
Chi lọc 1 giá trị 12 duy nhất trong nhiều giá trị 12
" Trong cột : MA1 chỉ lọc giá trị không trùng nhau :
KQ
12 x x x
15 x x x

Có phải ý bạn muốn thế này không?
 

File đính kèm

Upvote 0
Lọc duy nhất

Gửi bạn 1 giải pháp lọc lấy các giá trị duy nhất.

-hvl-
 

File đính kèm

Upvote 0
Can loc MA1 khong co co gia tri trung nhau. Co 6 gai tri 12, chi can lay 1 gia tri thoi, gia tri nao cung duoc
KET QUA MONG MUON
12.....51....50......24
15.....1 ......45 25
Can loc MA1 khong co co gia tri trung nhau
Co 6 gia tri 12, chi can lay 1 gia tri thoi, gia tri nao cung duoc

Giống như giả sử : MA1 : gồm nhiều TEN giống nhau
LAN..DC1 ....NAM SINH 1
TUAN.DC2....NS2
HUNG ..DC3 ..NS3
LAN ...DC4..NS4
HUNG...DC5 ...NS5
PHONG .DC6 ...NS6
LE .........DC7....NS7
Cần lọc TEN khong trung nhau cho dù địa chỉ và nam sinh có khác nhau hay giống nhau thì không quan tâm, chỉ lấy 1 tên thôi. "Tên nào cũng đưoc"
Ket qua:
LAN.......DC .....NS1
TUAN.....DC......NS2
HUNG....DC .....NS5
PHONG....DC ....NS6
LE ...........DC ,,,,NS7
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thử code này xem:
PHP:
Sub Loc()
  Dim Rng As Range, Clls As Range, TempRng As Range, DkRng As Range
  Dim i As Long
  Set Rng = [A5].CurrentRegion
  [H5].CurrentRegion.Clear
  Rng.Resize(, 1).AdvancedFilter 2, , [H5], True
  With [H5].CurrentRegion
    Set DkRng = .Offset(1).Resize(.Rows.Count - 1)
  End With
  For Each Clls In DkRng
     Set TempRng = Rng.Resize(, 1).Find(Clls).Resize(, Rng.Columns.Count)
     With TempRng
       [H5].Offset(i + 1).Resize(, .Columns.Count) = .Value
       i = i + 1
     End With
  Next
  [H5].Resize(, Rng.Columns.Count).Value = Rng.Resize(1).Value
End Sub
Và còn nhiều cách khác nữa
Xem file
 

File đính kèm

Upvote 0
Các bạn còn có những cách lọc khác không để mình tham khảo thêm. Cảm ơn.
Như : nhập điều kiện lọc vào trong Ô điều kiện và lọc không trùng nhau.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin hỏi có cach nào lọc trong VBA, lọc không trùng nhau như file mấu.
Chi lọc 1 giá trị 12 duy nhất trong nhiều giá trị 12
" Trong cột : MA1 chỉ lọc giá trị không trùng nhau :
KQ
12 x x x
15 x x x

Góp vui mấy cái UDF về lọc danh sách duy nhất :


PHP:
Function DanhSach(MangDL As Range, Optional MangMa As Range)
    On Error Resume Next
    Dim i As Long
    If MangDL.Rows.Count < 1 Then Exit Function
    If MangMa.Rows.Count = 0 Then DanhSach = MangDL(1): Exit Function
    For i = 1 To MangDL.Rows.Count
        If WorksheetFunction.CountIf(MangMa, MangDL(i)) = 0 Then
            DanhSach = MangDL(i)
            Exit For
    End If: Next
End Function

PHP:
Function DanhSachM(MangDL As Range)
    Application.ScreenUpdating = False
    Dim i As Long, i2, i1 As Long, m As Integer, Tim As Boolean, Ma As Range
    Dim MangTemp(1 To 1000, 0) As Variant
    Dim Mang(1 To 1000, 0)
    If MangDL.Rows.Count = 0 Then Exit Function
    For Each Ma In MangDL
        i = i + 1
        If i = 1 Then
            m = m + 1
            MangTemp(m, 0) = Ma.Value
        Else
            For i1 = 1 To m
                If UCase(MangTemp(i1, 0)) = UCase(Ma) Then
                    Tim = True
                    Exit For
                End If
            Next i1
            If Tim = False Then
                m = m + 1
                MangTemp(m, 0) = Ma.Value
            End If
        End If
        Tim = False
    Next
    DanhSachM = MangTemp()
    Set Ma = Nothing
    Application.ScreenUpdating = True
End Function

PHP:
Function DanhSachMSX(MangDL As Range)
    Application.ScreenUpdating = False
    Dim i As Long, i2, i1 As Long, m As Integer, Tim As Boolean, Ma As Range
    Dim MangTemp(1 To 1000, 0) As Variant
    Dim Mang(1 To 1000, 0)
    If MangDL.Rows.Count = 0 Then Exit Function
    For Each Ma In MangDL
        i = i + 1
        If i = 1 Then
            m = m + 1
            MangTemp(m, 0) = Ma.Value
        Else
            For i1 = 1 To m
                If UCase(MangTemp(i1, 0)) = UCase(Ma) Then
                    Tim = True
                    Exit For
                End If
            Next i1
            If Tim = False Then
                m = m + 1
                MangTemp(m, 0) = Ma.Value
            End If
        End If
        Tim = False
    Next
    'Loc Danh Sach
    For i = 1 To m
        If i = 1 Then ' Gan PT dau tien
            Mang(1, 0) = MangTemp(1, 0)
        Else
            For i1 = 1 To i - 1 ' Xem co nho hon GT nao trong Mang khong ??
                If LCase(MangTemp(i, 0)) < LCase(Mang(i1, 0)) Then Tim = True: Exit For
            Next i1
            
            If Tim = False Then ' Khong co : Cho xuong duoi Danh Sach
                Mang(i, 0) = MangTemp(i, 0)
            Else ' Neu co :
                For i2 = i To i1 + 1 Step -1
                    Mang(i2, 0) = Mang(i2 - 1, 0) 'Dich chuyen danh sach xuong 1 nac
                Next i2
                Mang(i1, 0) = MangTemp(i, 0) ' Cho phan tu vao DS
            End If
        End If
        Tim = False
    Next
    DanhSachMSX = Mang()
    Set Ma = Nothing
    Application.ScreenUpdating = True
End Function

Thân!
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom