Lọc ô theo màu nền+xóa khoản trắng

Liên hệ QC

phonglan99

Thành viên mới
Tham gia
13/6/09
Bài viết
9
Được thích
1
Chào các anh chị,
-Cho em hỏi có cách nào lọc các ô theo màu được không ạ?(chỉ lọc lấy ra những ô có tô màu nền thôi).
-Em muốn loại bỏ các khoản trắng phía sau các chuỗi text thì phải làm sao a?
Rất mong các anh chị chỉ giúp
em xin cám ơn.
 

File đính kèm

Được mà bạn. Bạn chọn sort by color đó bạn.
 
-Em muốn loại bỏ các khoản trắng phía sau các chuỗi text thì phải làm sao a?
Bajn dùng công thức sau : =TRIM(A1) trong đó A1 là ô chứa Text có khoảng trắng.
 
Lần chỉnh sửa cuối:
Được mà bạn. Bạn chọn sort by color đó bạn.
Chức năng này chỉ có ở Excel 2007 thôi nha bạn.
-Cho em hỏi có cách nào lọc các ô theo màu được không ạ?(chỉ lọc lấy ra những ô có tô màu nền thôi).
Bạn dùng cột phụ với hàm Macro4 GET.CELL(13) rồi lọc theo cột phụ này. Xem cách tôi làm trong file.
 

File đính kèm

Chức năng này chỉ có ở Excel 2007 thôi nha bạn.

Bạn dùng cột phụ với hàm Macro4 GET.CELL(13) rồi lọc theo cột phụ này. Xem cách tôi làm trong file.
Dùng cách như bạn lọc ra hết những cell có tô màu, nó không phân biệt là màu gì.
Ở 2007 thì không nói, vì nó có sẵn chức năng lọc theo màu, nhưng 2003 trở về trước thì không.
Nếu dùng cột phụ để lọc ra theo màu bạn muốn thì phải thêm 1 function là lấy mã màu, sau đó so với điều kiện lọc là được.

Đây là Function đó:

PHP:
Option Explicit
'---------------------------------------------------------------------
Function ColorIndex(rng As Range, _
                    Optional text As Boolean = False) As Variant
'---------------------------------------------------------------------
On Error Resume Next
Dim cell As Range, row As Range
Dim i As Long, j As Long
Dim iWhite As Long, iBlack As Long
Dim aryColours As Variant
    If rng.Areas.Count > 1 Then
        ColorIndex = CVErr(xlErrValue)
        Exit Function
    End If
    iWhite = WhiteColorindex(rng.Worksheet.Parent)
    iBlack = BlackColorindex(rng.Worksheet.Parent)
    If rng.Cells.Count = 1 Then
        If text Then
            aryColours = DecodeColorIndex(rng, True, iBlack)
        Else
            aryColours = DecodeColorIndex(rng, False, iWhite)
        End If
    Else
        aryColours = rng.Value
        i = 0
        For Each row In rng.Rows
            i = i + 1
            j = 0
            For Each cell In row.Cells
                j = j + 1
                If text Then
                    aryColours(i, j) = _
                      DecodeColorIndex(cell, True, iBlack)
                Else
                    aryColours(i, j) = _
                      DecodeColorIndex(cell, False, iWhite)
                End If
            Next cell
        Next row
    End If
    ColorIndex = aryColours
End Function
'---------------------------------------------------------------------
Private Function WhiteColorindex(oWB As Workbook)
'---------------------------------------------------------------------
Dim iPalette As Long
    WhiteColorindex = 0
    For iPalette = 1 To 56
        If oWB.Colors(iPalette) = &HFFFFFF Then
            WhiteColorindex = iPalette
            Exit Function
        End If
    Next iPalette
End Function
'---------------------------------------------------------------------
Private Function BlackColorindex(oWB As Workbook)
'---------------------------------------------------------------------
Dim iPalette As Long
    BlackColorindex = 0
    For iPalette = 1 To 56
        If oWB.Colors(iPalette) = &H0 Then
            BlackColorindex = iPalette
            Exit Function
        End If
    Next iPalette
End Function
'---------------------------------------------------------------------
Private Function DecodeColorIndex(rng As Range, _
                                  text As Boolean, _
                                  idx As Long)
'---------------------------------------------------------------------
Dim iColor As Long
    If text Then
        iColor = rng.Font.ColorIndex
    Else
        iColor = rng.Interior.ColorIndex
    End If
    If iColor < 0 Then
        iColor = idx
    End If
    DecodeColorIndex = iColor
End Function
'---------------------------------------------------------------------

Bạn xem file đính kèm nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Còn nếu như dùng 1 cell để so sánh với các cell có chứa màu thì dùng code sau:

PHP:
Sub FilterByColor()
On Error Resume Next
    Sheet1.Range("F1") = ColorIndex(Sheet1.Range("d1"))
    Application.ScreenUpdating = False
    Dim cel As Range, rng As Range
    Set rng = Sheet1.Range("F3", Sheet1.Range("D65536").End(xlUp).Offset(, 2))
    For Each cel In rng
        If cel.Offset(, -2).Interior.ColorIndex = Sheet1.Range("F1") Then
          
            cel.Value = Sheet1.Range("F1")
        End If
    Next cel
   
    With Sheet1.Rows("2:65536")
        .AutoFilter
      
        .AutoFilter Field:=6, Criteria1:=Sheet1.Range("F1")
    End With
    Application.ScreenUpdating = True
End Sub

Bỏ lọc:

PHP:
Sub UnFilterMe()
    Application.ScreenUpdating = False
       If Sheet1.AutoFilterMode Then
        Sheet1.Cells.AutoFilter
        Sheet1.Range("f1", Sheet1.Range("f65536").End(xlUp)).Clear
       ' Sheet1.Range("d1").Clear
       End If
    Application.ScreenUpdating = True
End Sub

Bạn tham khảo thêm file nhe.
 

File đính kèm

Dùng cách như bạn lọc ra hết những cell có tô màu, nó không phân biệt là màu gì.
Ở 2007 thì không nói, vì nó có sẵn chức năng lọc theo màu, nhưng 2003 trở về trước thì không.
Nếu dùng cột phụ để lọc ra theo màu bạn muốn thì phải thêm 1 function là lấy mã màu, sau đó so với điều kiện lọc là được.
Đâu cần phải như vậy đâu. Do ở đây tác giả chỉ muốn lọc ra những ô có tô màu. Nghĩa là chỉ phân biệt có tô màu hay không có tô màu thôi.
PHP:
-Cho em hỏi có cách nào lọc các ô theo màu được không ạ?(chỉ lọc lấy ra những ô có tô màu nền thôi).
Còn nếu như muốn lấy theo từng màu thì dùng GET.CELL(63) thay cho GET.CELL(13) ở cột phụ là được.
 
Em cám ơn các anh đã giúp, nhưng em không biết gì về VBA cả, theo em nghĩ thì copy đoạn code của các anh sau đó vào menu tools\Macro\visual basic ..\ paste đoạn code của anh vào phải không ạ? Em đã xem file các anh gửi nhưng khi mở lên thì excel báo lỗi, mặc dù em đã chọn mức security là low rồi.
Mong các anh chỉ thêm giúp em
 
Lần chỉnh sửa cuối:
Em Cám ơnsau đó vào menu tools\Macro\visual basic ..\ paste đoạn code của anh vào phải không ạ
Bạn nhấn tổ hợp phím Alt+F11 để vào cửa sổ VBA, tiếp tục vào Insert\Module, rồi dán đoạn code đó vào.
Đóng cửa sổ VBA lại gán tên cho nút, chạy...
 
Xin giúp đở

Bạn nào chèn code lọc màu vào file đính kèm sau giúp tôi với.
Tôi làm hoài không được+-+-+-+
 
Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
Ý mình muốn bấm 1 phát là bảng tính chỉ còn lại mấy hàng có ô màu xanh lá ở cột E đó.
và lần lượt từng màu khác ... Mong các bạn giúp nhe

Bên shêt "KHO" ở cột "Tồn" mình định dạng các ô tự đổi thành màu đen khi = 0 . Mình cũng muốn bấm 1 phát thì bảng tính chỉ còn lại nhung74 hàng có ô màu đen đó, để mình biết mã hàng nào đã hết mà Mua thêm thì phải làm sao các bạn?
 
Lần chỉnh sửa cuối:
Ý mình muốn bấm 1 phát là bảng tính chỉ còn lại mấy hàng có ô màu xanh lá ở cột E đó.
và lần lượt từng màu khác ... Mong các bạn giúp nhe
Bên shêt "KHO" ở cột "Tồn" mình định dạng các ô tự đổi thành màu đen khi = 0 . Mình cũng muốn bấm 1 phát thì bảng tính chỉ còn lại nhung74 hàng có ô màu đen đó, để mình biết mã hàng nào đã hết mà Mua thêm thì phải làm sao các bạn?

Nếu các ô đó được bôi màu bằng Condition Formattinng thì khó lắm;
Bạn đến đây: http://www.giaiphapexcel.com/forum/showthread.php?t=344 đọc những bài cuối xem có dễ để hiểu không đã.

(*) Tại 'Kho" sao ta không thể căn cứ vào mấy con số 0 đó mà cho ẩn hay hiện các dòng nhỉ?!?
 
Cảm ơn bạn đã nhắc , shêt "KHO" đã lọc = autofilter rất đơn giản.

Còn bên shêt "BAN" không phải màu của Condition Formattinng ,mình thấy có các bạn lọc màu được, nhưng mình vẫn chưa làm được. Mong giúp đở.
 
Cảm ơn bạn đã nhắc , shêt "KHO" đã lọc = autofilter rất đơn giản.

Còn bên shêt "BAN" không phải màu của Condition Formattinng ,mình thấy có các bạn lọc màu được, nhưng mình vẫn chưa làm được. Mong giúp đở.

Tôi thấy trong cột dữ liệu của bạn, các màu nó gắn liền với "Trả hết", "Nợ", vậy sao không Autofilter với các giá trị đó cho xong, nó cũng ra từng màu tương ứng vì các ô cùng giá trị bạn đã gán màu giống nhau rồi, mỗi Click đổi màu 1 phát bằng VBA thì qủa thật vẫn chưa nghĩ ra.
 
. . .Mỗi Click đổi màu 1 phát bằng VBA thì qủa thật vẫn chưa nghĩ ra.

Cũng có cách làm thôi:

* Nghe chừng Macro4 làm được;

* Thưc hiiện các bước:
- Cho hiện hết các dòng;
- Tạo vòng lặp duyệt toàn bộ records, nếu không phải màu ưng í thì cho ẩn dòng đó đi
(Chắc rằng chậm hơn các kiểu lọc nhiều & chỉ là biện pháp cuối cùng, một khi không có biện pháp nào khả dĩ hơn :-= --=0)
 
Cảm ơn bạn đã nhắc , shêt "KHO" đã lọc = autofilter rất đơn giản.

Còn bên shêt "BAN" không phải màu của Condition Formattinng ,mình thấy có các bạn lọc màu được, nhưng mình vẫn chưa làm được. Mong giúp đở.
Sao không dùng GET.CELL(63) như bài #10? Làm thử một file mẫu nhé. Click vào màu nào ở cột A sẽ lọc theo màu đó.
 

File đính kèm

Web KT

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

Back
Top Bottom