Conditional Formatting Excel Based On Date In Another Cell

半城伤御伤魂 提交于 2019-12-11 08:43:50

问题


I looked through everything re conditional formatting, but nothing touched on my issue.

I am trying to highlight cells in a column based on the date in another cell, as well as the text in the cell in question. I have been able to do both parts separately as basic conditional formatting, but not sure how to have it all work as one using a formula.

A1 has the text and D1 has the date. If the date is today and the text is either 2 or 3, I want the cell to be coloured using conditional formatting.

Here is the formula I tried for conditional formatting, but with no result:-

=IF(AND($D1=TODAY(), OR(A1="3", A1="2")))

Basically, if the date in D1 is today and A1 is either a 2 or 3, then apply the conditional formatting. Seems simple, but I can only get it working as separate parts

Thanks in advance


回答1:


Either use

=IF(AND($D1=TODAY(), OR($A$1=3, $A$1=2)),TRUE,FALSE)

Or

=AND($D1=TODAY(), OR($A$1=3, $A$1=2))



回答2:


Just 'Imagine' IF in Conditional Formatting

  • Every date in Excel is actually a number, e.g. for 27.01.2019 it is 43492. You can format a cell containing a date, as number, and see for yourself.
  • When there is time with a date, there is additionally a decimal part, e.g. for 27.01.2019 14:52:17 the number would be approximately 43492.6196, which is different than 43492.

Therefore you have to use the INT function to round the number down to the nearest integer resulting in the following conditional formatting formula:

=AND(INT(D1)=TODAY(),OR(A1="FA_Win_3",A1="FA_Win_2"))

used e.g. for cell E1.

  • So the logic behind the formula could be interpreted: (just imagine the IF): IF the rounded down value of cell D1 is equal to TODAY's value (date) AND the value in cell A1 is EITHER FA_Win_3 OR FA_Win_2, DO apply the formatting (, or else don't).



回答3:


I’m not in front a computer, but you can try this:

=AND(TEXT($B2,"dd/mm/yyyy")=TEXT(TODAY(),"dd/mm/yyyy"), OR(A1="FA_Win_3", A1="FA_Win_2"))

If you have trouble with users pasting over the cells and messing up with the conditional format, you can add this soubroutine to the worksheet.

To add it:
- Press F11
- Double click the sheet name
- Copy paste the code
- Read the comments inside the code and adapt it to fit your needs
- Save the workbook as macro-enabled

Private Sub Worksheet_Change(ByVal Target As Range)

    ' This method has a drawback and is that the undo feature in this sheet no longer works (if you can live with it, no problem)
    ' Here is an option to bring it back: https://www.jkp-ads.com/Articles/UndoWithVBA04.asp

    ' Define variables
    Dim targetRange As Range
    Dim formulaEval As String

    ' Define the Range where they paste the date. This is the range that receives the conditional format
    Set targetRange = Range("B2:B70")

    ' Define the formula evaluated by the conditional format (replace ; for ,)
    formulaEval = "=AND(TEXT(" B2 ",""dd/mm/yyyy"")=TEXT(TODAY(),""dd/mm/yyyy""), OR(A" 2 "=""FA_Win_3"", A" 2 "=""FA_Win_2""))"

    If Not Intersect(Target, targetRange) Is Nothing Then
        With Target
            .FormatConditions.Add Type:=xlExpression, Formula1:=formulaEval
            .FormatConditions(.FormatConditions.Count).SetFirstPriority

            ' This is where the format applied is defined (you can record a macro and replace the code here)
            With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = RGB(0, 176, 80)
                .TintAndShade = 0
                .Font.Color = RGB(255, 255, 255)
                .Font.Bold = True
            End With
            .FormatConditions(1).StopIfTrue = False
        End With
    End If

End Sub

Please mark this answer if it helped you



来源:https://stackoverflow.com/questions/54389428/conditional-formatting-excel-based-on-date-in-another-cell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!