基于日期的另一个单元格中的条件格式Excel

时间:2019-01-27 14:52:18

标签: excel conditional-formatting

我仔细检查了所有重新格式化的内容,但没有涉及到我的问题。

我试图根据另一个单元格中的日期以及相关单元格中的文本突出显示列中的单元格。我已经能够将这两个部分分别作为基本的条件格式进行处理,但不确定如何使用公式将它们全部作为一个部分来工作。

A1有文字,D1有日期。如果日期是今天,并且文本是2或3,我希望使用条件格式为单元格着色。

这是我尝试用于条件格式的公式,但没有结果:-

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

基本上,如果D1中的日期是今天,而A1是2或3,则应用条件格式。看起来很简单,但我只能将其作为单独的部分工作

预先感谢

3 个答案:

答案 0 :(得分:1)

可以使用

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

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

答案 1 :(得分:1)

只需“想象”条件格式的IF

  • Excel中的每个日期实际上都是一个数字,例如对于27.01.2019,它是 43492。您可以将包含日期的单元格格式化为数字,然后查看 为你自己。
  • 当有时间和日期时,还会有一个 小数部分,例如对于27.01.2019 14:52:17,数字为 大约43492.6196,与43492不同。

因此,您必须使用INT函数将数字四舍五入到最接近的整数,从而产生以下条件格式设置公式

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

使用过的用于单元格E1

  • 因此可以解释公式背后的逻辑: IF):IF的单元格D1的四舍五入值等于 TODAY的值(日期)AND单元格A1中的值为EITHER FA_Win_3 OR FA_Win_2应用格式(否则不要)。

答案 2 :(得分:0)

我不在电脑前,但是您可以尝试以下操作:

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

如果用户在粘贴单元格和弄乱条件格式时遇到麻烦,则可以将此sorouroutine添加到工作表中。

要添加它:
 -按F11
 -双击工作表名称
 -复制粘贴代码
 -阅读代码中的注释,并使其适应您的需求
 -将工作簿另存为启用宏

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

  

如果有帮助,请标记此答案