Определите цвет строки, проверяющей две даты в одной ячейке и текст в другой ячейке.Макросы Excel? - PullRequest
0 голосов
/ 26 сентября 2011

У меня следующая проблема .....

----------------------------------------------------------
Column1 |      Column2      | Column3 | Column4 | Column5
----------------------------------------------------------
Bla bla | 26/09/2011 10:00  | blabla  | Complete| blabla
        |                   |         |         |
bla bla | 26/09/2001 11:00  | blabla  |         |        
----------------------------------------------------------
Bla bla | 26/09/2011 11:00  | blabla  |         | blabla
        |                   |         |         |
bla bla | 26/09/2001 11:30  | blabla  |         |      
----------------------------------------------------------
Bla bla | 26/09/2011 12:00  | blabla  | Started | blabla
        |                   |         |         |
bla bla | 26/09/2001 13:00  | blabla  |         |        
----------------------------------------------------------
Bla bla | 26/09/2011 22:00  | blabla  |         | blabla
        |                   |         |         |
bla bla | 26/09/2001 23:00  | blabla  |         |        
----------------------------------------------------------

В ** В столбце 2 в каждой ячейке есть две даты со временем (когда должен начинаться и когда должен заканчиваться), а в столбце 4 у меня есть статус задачи.

Условия для установки цвета строки основаны на столбце 2 и столбце 4 .

Цветовой код имитировал бы светофор Зеленый для ОК, Оранжевый для Знания и Красный для Плохого.

Если первая дата ячейки в столбце 2 больше текущей, тогда строка цвета будет оранжевой.

Если первая дата ячейки в столбце 2 больше текущей и столбец 4 «запущен», то цвет строки зеленый.

Если вторая дата ячейки в столбце 2 больше текущей, а текст в столбце 4 не «завершен», то строка цвета имеет красный цвет. Если текст «Завершено», то цвет строки зеленый.

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

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

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

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Вы можете использовать условное форматирование:

Например, для ячейки B2, используйте следующую формулу

=DATEVALUE(LEFT(B2,FIND(CHAR(10),B2)-1))>NOW()

для первой даты в ячейке, превышающей текущую

=DATEVALUE(MID(B9,FIND(CHAR(10),B9)+1,99))>NOW()

длявторая дата в ячейке больше текущей

Остальное (наложение условий, учет статуса) должно быть прямым

0 голосов
/ 26 сентября 2011

Хорошо, я немного запутался, читая ваш запрос, но в основном вы хотите условно отформатировать ячейку, если время / дата отличаются от первой к второй.

Вам нужно что-то вроде следующего

With Worksheets("Sheet1")
If .Range("B2") > Now And .Range("D2") <> "Started" Then
   .Range("B2").Interior.Color = vbOrange
Else
   .Range("B2").Interior.Color = vbGreen
End If
End with

Теперь, если вам неудобно или вы привыкли к VBA, это немного сложнее. Но в основном вы можете изменить диапазон и имена листов, чтобы сделать все, что вам нужно. Функция "Interior.Color" будет работать с vbGreen, vbRed, vbOrange и некоторыми другими. Более чем достаточно для удовлетворения ваших потребностей.

Надеюсь, это поможет вам начать. Дайте мне знать, если вам нужна дополнительная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...