Cần giúp đỡ Tô màu cho các ô trùng nhau (Không tô màu lên các ô trùng có màu sẵn có) (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
929
Được thích
240
Giới tính
Nam
Chào Quý vị và các bạn GPE!
Nhờ Quý vị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tự động tô màu vàng cho các ô có ký tự trùng nhau dọc theo cột B, với điều kiện không tô màu lên các ô trùng màu sẵn có. Nếu có 2 ô trùng nhau, mà có 1 ô chưa có màu và có 1 ô có màu sẵn có, thì vẫn tô màu vàng cho ô chưa có màu.
Ví dụ:
- Có 4 ô B5, B8, B13, B16 có ký tự trùng nhau là "CT02/19" => Tô màu vàng cho 3 ô B5, B13, B16 (Không tô màu cho ô B8 vì ô này có màu tím sẵn có).
- Có 2 ô B12, B14 có ký tự trùng nhau là "CT02/01" => Tô màu vàng cho ô B14 (Không tô màu cho ô B12 vì ô này có màu tím sẵn có).
Mong Quý vị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có File đính kèm. Tôi xài Excel 2003.
 

File đính kèm

Chào Quý vị và các bạn GPE!
Nhờ Quý vị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tự động tô màu vàng cho các ô có ký tự trùng nhau dọc theo cột B, với điều kiện không tô màu lên các ô trùng màu sẵn có. Nếu có 2 ô trùng nhau, mà có 1 ô chưa có màu và có 1 ô có màu sẵn có, thì vẫn tô màu vàng cho ô chưa có màu.
Ví dụ:
- Có 4 ô B5, B8, B13, B16 có ký tự trùng nhau là "CT02/19" => Tô màu vàng cho 3 ô B5, B13, B16 (Không tô màu cho ô B8 vì ô này có màu tím sẵn có).
- Có 2 ô B12, B14 có ký tự trùng nhau là "CT02/01" => Tô màu vàng cho ô B14 (Không tô màu cho ô B12 vì ô này có màu tím sẵn có).
Mong Quý vị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có File đính kèm. Tôi xài Excel 2003.
Chạy code này thử coi sao:
PHP:
Public Sub MauMe()
Dim Rng As Range, Cll As Range
Set Rng = Range([B5], [B5].End(xlDown))
For Each Cll In Rng
    If Application.WorksheetFunction.CountIf(Rng, Cll) > 1 Then
        If Cll.Interior.ColorIndex = xlNone Then Cll.Interior.ColorIndex = 6
    End If
Next Cll
Set Rng = Nothing
End Sub
 
Chạy code này thử coi sao:
PHP:
Public Sub MauMe()
Dim Rng As Range, 
Cll As Range
Set Rng = Range([B5], [B5].End(xlDown))
For Each Cll In Rng    
If Application.WorksheetFunction.CountIf(Rng, Cll) > 1 Then        
If Cll.Interior.ColorIndex = xlNone Then Cll.Interior.ColorIndex = 6    
End If
Next CllSet Rng = Nothing
End Sub
Vâng, em cảm ơn Quý vị ạ. Cho em hỏi thêm là:
Tại sao lại phải dùng:
PHP:
Set Rng = Range([B5], [B5].End(xlDown))
For Each Cll In Rng
Mà lại không dùng:
PHP:
For Each Cll In Range([B5], [B5].End(xlDown))
Chẵng lẽ chỉ để cho dễ nhìn thôi sao ạ?
 
Lần chỉnh sửa cuối:
[thongbao]Chẵng lẽ chỉ để cho dễ nhìn thôi sao ạ?[/thongbao]

Nếu là mình thì xin trả lời: Do thói quen thôi!
Nhưng mình không fải là chàng 3Tê nên bạn chờ đi vậy!
 

File đính kèm

  • BachDuong.jpg
    BachDuong.jpg
    55 KB · Đọc: 50
Vâng, em cảm ơn Quý vị ạ. Cho em hỏi thêm là:
Tại sao lại phải dùng:
PHP:
Set Rng = Range([B5], [B5].End(xlDown))
For Each Cll In Rng
Mà lại không dùng:
PHP:
For Each Cll In Range([B5], [B5].End(xlDown))
Chẵng lẽ chỉ để cho dễ nhìn thôi sao ạ?

nếu Rng đó được chèn thêm tên Sheet, tên Workbook thì khá dài ---> dùng Set là để áp dụng 1 số trường hợp phát sinh về sau (trong Sub MauMe đối tượng Rng được sử dụng đến 2 lần)
 
nếu Rng đó được chèn thêm tên Sheet, tên Workbook thì khá dài ---> dùng Set là để áp dụng 1 số trường hợp phát sinh về sau (trong Sub MauMe đối tượng Rng được sử dụng đến 2 lần)
Vâng, chắc cũng là để chuyên nghiệp hơn khi viết Code (Cho rõ ràng, mạch lạc).
 
Web KT

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

Back
Top Bottom