Условное форматирование Excel на основе даты в другой ячейке - PullRequest
0 голосов
/ 27 января 2019

Я просмотрел все, что касается условного форматирования, но ничего не затронуло мою проблему.

Я пытаюсь выделить ячейки в столбце на основе даты в другой ячейке, а также текста в ячейке ввопрос.Я смог сделать обе части по отдельности в качестве основного условного форматирования, но не уверен, как заставить все это работать как единое целое, используя формулу.

A1 имеет текст, а D1 имеет дату.Если дата сегодня, а текст 2 или 3, я хочу, чтобы ячейка была окрашена с использованием условного форматирования.

Вот формула, которую я пытался использовать для условного форматирования, но без результата: -

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

Обычно, если дата в D1 - это сегодня, а A1 - это либо 2или 3, затем примените условное форматирование.Кажется простым, но я могу заставить его работать только как отдельные части

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Я не за компьютером, но вы можете попробовать это:

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

Если у вас проблемы с тем, что пользователи вставляют ячейки и портят условный формат, вы можетедобавьте это сообщение в рабочий лист.

Чтобы добавить его:
- Нажмите 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

Отметьте этот ответ, если он помог вам

0 голосов
/ 24 февраля 2019

Просто «представьте», если в условном форматировании

  • Каждая дата в Excel на самом деле является числом, например, для 27.01.2019 это 43492.Вы можете отформатировать ячейку, содержащую дату, как число, и убедитесь сами.
  • Когда есть время с датой, дополнительно указывается десятичная часть, например, для 27.01.2019 14:52:17 число будет приблизительно * 1009.*, который отличается от 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, DO применить форматирование (или иначе не ).
0 голосов
/ 27 января 2019

Либо используйте

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

Или

=AND($D1=TODAY(), OR($A$1=3, $A$1=2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...