Lấy chỉ số màu nền cũa cell đã dc tô màu bằng CF

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Các cao thủ cho hỏi:
Thông thường khi ta muốn lấy chỉ số màu nền tại 1 cell thì ta dùng code:
Cells(..).Interior.ColorIndex....
Nhưng với 1 cell đang dc tô màu bằng Conditional Formating thì dùng code gì?
Giã sử cell A1 đang thõa d/k nào đó cũa CF nên nó đang dc tô màu đỏ, giờ tôi muốn 1 code nào đó đễ lấy dc giá trị trã về =3
Xin trợ giúp!
ANH TUẤN
 
Ôi trời... tưởng đơn giãn ko ngờ nó rắc rối thế... code đó nhìn ngọng luôn... hi.. hi...
Cãm ơn Phong nha! Đễ nghiên cứu xem (chắc 5 năm nữa mới hiểu)
ANH TUẤN
 
Upvote 0
Hãy tìm trên Goolge với từ khóa 'FormatConditions.Item'

Mình cũng đang ngâm cứu; & cảm ơn câu hỏi của Anh Tuấn nha;

KQuả ngâm cứu của mình mới là vầy, Nhưng còn nhiều chổ có dấu chấm hỏi & chấm than lắm!:
PHP:
Option Explicit

Sub CFColorIndex()
     Range("A2:A18").Select
    Selection.Interior.ColorIndex = 40
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
    Formula1:="15", Formula2:="16"
    Selection.FormatConditions(1).Interior.ColorIndex = 34
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=MOD(A2:A18;9)<4"
    Selection.FormatConditions(2).Interior.ColorIndex = 33
    Range("C20").Select
    Dim Rng As Range, Clls As Range
    Dim iJ As Integer
    For iJ = 2 To 18
        With Cells(iJ, 1)
            .Offset(, 1) = .Interior.ColorIndex
            
14          .Offset(, 2) = CheckConditionalFormat(Cells(iJ, 1))
        End With
    Next iJ
End Sub
'  *        *          *        *          *        *'

Function CheckConditionalFormat(MRng As Range) As Integer
     'from http://www.mrexcel.com/archive/VBA/10959.html'
    Dim bcheck As Integer   'Boolean'
    Dim iW As Long
    ' Cells.FormatConditions.Item(1)?'
    With MRng
        For iW = 1 To .FormatConditions.Count
            If .FormatConditions.Item(iW).Type = 1 Then
                bcheck = 0      'False'
                Select Case .FormatConditions.Item(iW).Operator
                Case 1 ' between'
                    If .Value >= .FormatConditions.Item(iW).Formula1 And _
                    .Value <= .FormatConditions.Item(iW).Formula2 Then _
                    bcheck = 1      'True'
                Case 2 ' not between'
                    If .Value < .FormatConditions.Item(iW).Formula1 Or _
                    .Value > .FormatConditions.Item(iW).Formula2 Then _
                    bcheck = 1      'True'
                Case 3 ' equal to'
                    If .Value = .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                Case 4 ' not equal to'
                    If .Value <> .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                Case 5 ' greater then'
                    If .Value > .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                Case 6 ' less then'
                    If .Value < .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                Case 7 ' greater & equal then'
                    If .Value >= .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                Case 8 ' less & equal then'
                    If .Value <= .FormatConditions.Item(iW).Formula1 Then _
                    bcheck = 1      'True'
                End Select
                If bcheck = 1 Then      'True'
                    CheckConditionalFormat = .FormatConditions(iW).Interior.ColorIndex
                    Exit Function
                End If
            ElseIf .FormatConditions.Item(iW).Type = 2 Then
                CheckConditionalFormat = .FormatConditions(iW).Interior.ColorIndex
                Exit Function                       'Type =2?'
            ElseIf .FormatConditions.Item(iW).Type = 0 Then  '?!!?'
                CheckConditionalFormat = .Interior.ColorIndex
                Exit Function
            End If
        Next iW
    End With
    CheckConditionalFormat = 0
End Function
 
Upvote 0
Tôi thì cứ nghĩ đơn giãn là dùng IF, đại khái như:
PHP:
If Condition1 = True then
    Range(...) = Range(...).FormatConditions(1).Interior.ColorIndex
ElseIf Condition2= True then
    Range(...) = Range(...).FormatConditions(2).Interior.ColorIndex
Else: Range(...) = Range(...).FormatConditions(3)Interior.ColorIndex
End If
Dù sao CF cũng chỉ có 3 điều kiện, ko lẽ ko có chiêu nào đơn giãn tương tự như tôi nói ở trên sao nhỉ?
ANH TUẤN
 
Upvote 0
Có 1 diễn đàn, họ cho rằng:

&&&%$R
The single best way to use the same condition as used in the Conditionally Formatted cells.

However, I would strongly advise against any reliance on cell colors, especially as the result of Conditional Formatting. It's just too flaky and bad practice, IMO.
__________________
. . . . . . --=0 :=\+
 
Upvote 0
Tìm hoài đến đây rồi không biết đi đâu nữa. Em có một file Data dùng CF để đánh dấu các tên trùng nhau bằng cách tô màu. Em muốn có một thông báo nhỏ nhắc nhở là Data có trùng dữ liệu bằng hàm IF đơn giản thôi vậy mà tìm đến đây rồi không biết đi đâu nữa. Có ai giúp em cách khác không Em cám ơn nhiều!
 
Upvote 0
Tìm hoài đến đây rồi không biết đi đâu nữa. Em có một file Data dùng CF để đánh dấu các tên trùng nhau bằng cách tô màu. Em muốn có một thông báo nhỏ nhắc nhở là Data có trùng dữ liệu bằng hàm IF đơn giản thôi vậy mà tìm đến đây rồi không biết đi đâu nữa. Có ai giúp em cách khác không Em cám ơn nhiều!
Thì lấy công thức điều kiện trong CF ra mà xài ---> Tức là lúc trước ta tô màu bằng công thức nào thì giờ cứ lấy công thức ấy ra "chế" lại
 
Upvote 0
Em bị vướng cái "địa chỉ" chưa chế được, công thức em dùng là: "=COUNTIF($I$2:$I$310,$I2)>1" Trong CF thì em thấy Excel tự hiểu còn đưa công thức vào một cell thì phải làm sao? Nhờ Bác chỉ bảo giúp!
 
Upvote 0
Em bị vướng cái "địa chỉ" chưa chế được, công thức em dùng là: "=COUNTIF($I$2:$I$310,$I2)>1" Trong CF thì em thấy Excel tự hiểu còn đưa công thức vào một cell thì phải làm sao? Nhờ Bác chỉ bảo giúp!

Thì cứ mang nguyên công thức ấy cho vào dòng 2 (cột nào cũng được) rồi kéo fill xuống đến dòng 310 là được rồi ---> cell nào cho kết quả = TRUE tức là có trùng và ngược lại
 
Upvote 0
Cám ơn bác. Có nghĩa là vẫn phải dùng cột phụ.
 
Upvote 0
Web KT
Back
Top Bottom