Условное форматирование для дат - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь придумать простую формулу условного формата для выделения ячеек с датой, которая на три месяца старше сегодняшней. Кажется, однако, что опция «Дата до» дает только несколько опций, но ни одна из них не позволяет то, что я ищу. Существует ли специальная формула, которая могла бы выполнить sh это?

Редактировать: добавив фрагмент столбца, о котором идет речь:

Picture

Ответы [ 4 ]

1 голос
/ 07 февраля 2020

Формула:

=DAYS(now(),B2)>90

enter image description here

0 голосов
/ 06 февраля 2020

try:

=1*C2>DATE(YEAR(TODAY()), MONTH(TODAY())+3, DAY(TODAY()))

0

также убедитесь, что у вас есть действительные даты, а не даты в текстовом формате. Вы можете проверить это с ISDATE формула

0 голосов
/ 07 февраля 2020

Вы можете использовать Apps Script и Custom Menu , чтобы решить вашу проблему с настройкой цвета в ячейке в зависимости от даты. Go до Инструменты-> Редактор сценариев и вставьте этот код:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Check Difference', 'dateDifference')
      .addToUi();
}

function dateDifference(){
  var sheet = SpreadsheetApp.getActiveSheet().getActiveRange(); // Get the selected range on the sheet
  var dates = sheet.getValues(); // Get the values in the selected range
  var oneDay = 1000*60*60*24;
  var row = 1;
  var re = /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/; // This will help you to check if it's really a date
  dates.forEach(function(el){ // Iterate over each value
    if(typeof el[0] == 'object'){ // Check if it's really a date
      var gmtZone = el[0].toString().split(" ")[4].split(":")[0]; // Take the date's GMT 
      var dateFormatted = Utilities.formatDate(el[0], gmtZone, "dd/MM/yyyy"); // Format the date
      if(re.test(dateFormatted)){ // Test if it's the right format
        // This part will calculate the difference between the current date and the future date
        var futureDateMs = new Date(el[0]);
        var todayDateMs = (new Date()).getTime();                               
        var differenceInMs = futureDateMs - todayDateMs;
        var differenceInDays = Math.round(differenceInMs/oneDay);
        if(differenceInDays >= 91.2501){ // Test if the difference it's greater to 91.2501 days (3 motnhs)
          sheet.getCell(row, 1).setBackground("#00FF00"); // Set the color to the cell
        } 
        row++;
      }
    }
  });                                 

Сохраните его, нажав Файл-> Сохранить .


Затем вы можете выбрать диапазон в столбце и нажать Пользовательское меню-> Проверить разницу , как вы можете видеть на следующем изображении: enter image description here

Как видите, вы получите желаемый результат: enter image description here


Обратите внимание

Очень важно быть осторожным с тем, что вы считаете «месяцем», я имею в виду, сколько дней вы собираетесь принять во внимание. В своем коде я принял предложение Google о 1 = 30.4167. enter image description here

Документы

Вот другие документы, которые я прочитал, чтобы помочь вам:


Я надеюсь, что это подход может помочь вам.

0 голосов
/ 06 февраля 2020

Go к пользовательской формуле в правилах условного форматирования и используйте это:

=DATEDIF(A1,TODAY(),"D")<90
...