rắc rối lọc số liệu cần hỏi ?

Liên hệ QC

bsthoi

Thành viên mới
Tham gia
30/6/07
Bài viết
8
Được thích
0
Chào các bạn! mình có một rắc rối ai biết giúp mình với cần gấp lắm!!
mình cần lọc những số liệu nhiều hơn 1 (hoặc loại bỏ những số liệu < 2 lần xuất hiện) như sau:
BẢNG SỐ LIỆU:
stt tên hàng giá
1 vàng 90
2 nhôm 15
3 vàng 90
4 đồng 4
5 chì 45
6 kẽm 23
7 đồng 4
8 đồng 4
9 sắt 5
10 kẽm 23

CẦN LỌC RA BẢNG MỚI NHƯ SAU:
stt tên hàng giá
1 vàng 90
3 vàng 90
4 đồng 4
7 đồng 4
8 đồng 4
6 kẽm 23
10 kẽm 23
Cám ơn nhiều nhé!
 
Chào bạn,

Cách đơn giản nhất là bạn tạo cột phụ và dùng hàm CountIf để đếm, sau đó dùng AutoFilter để lọc dữ liệu. Xem tập tin đính kèm.

TP.
 

File đính kèm

  • test.rar
    3.7 KB · Đọc: 46
cám ơn bạn nhiều!
bạn có thể giúp mình xác lập hàm cụ thể cho ví dụ số liệu trên được không? vì mình không rành cái này nhiều lắm.
 
File của Bạn TTPHONG2007 là OK rồi mà. Hay là thêm cột tên hàng lọc D, số lượng : E D2=IF(COUNTIF($B$2:$B$11,$B2)>1,B2,"") E2=IF(COUNTIF($B$2:$B$11,$B2)>1,C2,"") Nghĩa là tìm thấy >1 thì lấy tên hàng đó. Sau đó Autofilter, Custom chọn NonBlank
 
Chỉ để tham khảo, cho ai đó thích VBA

Mã:
[b]Sub ChonLoc()[/b]
 Dim Ten, iJ As Integer, iZ As Integer, TTu, Gia, iRec As Integer
 iRec = Range("A65432").End(xlUp).Row
 ReDim DaChep(iRec) As Boolean
 For iJ = 2 To iRec
    Ten = Range("B" & iJ).Value:        Gia = Range("C" & iJ).Value
    TTu = Range("A" & iJ).Value
    
    For iZ = iJ + 1 To iRec
    
        If Range("B" & iZ).Value = Ten And DaChep(iZ) = False Then
        If DaChep(iJ) = False Then
            Range("F" & Range("F65432").End(xlUp).Row + 1).Value = Ten
            Range("e" & Range("e65432").End(xlUp).Row + 1).Value = TTu
            Range("G" & Range("G65432").End(xlUp).Row + 1).Value = Gia
            DaChep(iJ) = True
        End If
            DaChep(iZ) = True:
            Range("F" & Range("F65432").End(xlUp).Row + 1).Value = Range("B" & iZ).Value
            Range("e" & Range("e65432").End(xlUp).Row + 1).Value = Range("A" & iZ).Value
            Range("G" & Range("G65432").End(xlUp).Row + 1).Value = Range("C" & iZ).Value
         End If
    Next iZ
 Next iJ
[b]End Sub[/b]
 
SA_DQ đã viết:
Mã:
[b]Sub ChonLoc()[/b]
 Dim Ten, iJ As Integer, iZ As Integer, TTu, Gia, iRec As Integer
 iRec = Range("A65432").End(xlUp).Row
 ReDim DaChep(iRec) As Boolean
 For iJ = 2 To iRec
    Ten = Range("B" & iJ).Value:        Gia = Range("C" & iJ).Value
    TTu = Range("A" & iJ).Value
    
    For iZ = iJ + 1 To iRec
    
        If Range("B" & iZ).Value = Ten And DaChep(iZ) = False Then
        If DaChep(iJ) = False Then
            Range("F" & Range("F65432").End(xlUp).Row + 1).Value = Ten
            Range("e" & Range("e65432").End(xlUp).Row + 1).Value = TTu
            Range("G" & Range("G65432").End(xlUp).Row + 1).Value = Gia
            DaChep(iJ) = True
        End If
            DaChep(iZ) = True:
            Range("F" & Range("F65432").End(xlUp).Row + 1).Value = Range("B" & iZ).Value
            Range("e" & Range("e[COLOR="Red"]65432[/COLOR]").End(xlUp).Row + 1).Value = Range("A" & iZ).Value
            Range("G" & Range("G65432").End(xlUp).Row + 1).Value = Range("C" & iZ).Value
         End If
    Next iZ
 Next iJ
[b]End Sub[/b]

Bác cho em hỏi, các số 65432 có phải là số dòng cuối của Excel không ? Nếu đúng thì ta có thể thay bằng 65536.
 
vungoc đã viết:
Bác cho em hỏi, các số 65432 có phải là số dòng cuối của Excel không ? Nếu đúng thì ta có thể thay bằng 65536.

Bác SA nhập VD cho nhanh thôi mà. 654321, cho nó tiện thôi chứ chắc rằng dữ liệu cũng không chạy hết đâu.

Chúc các bác khỏe!!!
 
Web KT
Back
Top Bottom