Для обработки многих операторов if

#excel #excel-formula

#excel #excel-формула

Вопрос:

У меня есть таблица, которую я хочу сохранить относительно прогресса в проекте оценки.

Текущая ДАТА (today())

Столбцы (здесь невозможно создать таблицу)

Дата 1 — это когда был отправлен первоначальный запрос.
Дата 2 — это когда было отправлено первое напоминание.
Дата 3 — это когда было отправлено 2-е напоминание.
Дата 4 — это время получения оценки.

Мне нужно поле, которое выдает значение, когда требуется действие. (это для того, чтобы я мог назначить ему правило условного формата).
Вот правила действия:
— Дата 4 пуста
И
— Дата 1 более 7 дней назад ( if(currentdate-date 1)> 7, 1, 0)
(это простая часть, и теперь начинается та часть, где я начинаю теряться)
Если есть дата 2:
— Дата 2 менее 7 дней назад — НИКАКИХ действий
НЕТ — Дата 2 более 7 дней назад — требуется действие
Если есть дата 3:
— Дата 3 менее 7 дней назад — НИКАКИХ действий
— Дата 3 более 7 дней назад — требуется действие

В конце я просто хочу 1 ячейку, в которой указано либо 1, либо 0 для действия / без действия.

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

Комментарии:

1. Используйте OR инструкцию: =IF(OR(currentdate-date1>7, date-date2<7, ...), 1, 0) .

Ответ №1:

вы можете вложить их 🙂 кажется, их легче читать, если перевернуть >

 if(currentdate - date1 < 7, "No Action", if(currentdate - date2 < 7, "No Action", if(currentdate - date3 < 7, "No Action", "Action")))
  

Комментарии:

1. Благодарю вас, я использую это сейчас. Переключение действительно помогло!

Ответ №2:

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

Эта функция может использоваться точно так же, как любая формула Excel, за небольшим исключением, что вам нужно сохранить вашу книгу с *.xlsm расширением файла.

Также обратите внимание, что вы дали пояснения о том, что делать, если DateDiff есть >7 и <7 , но не упомянули, что следует сделать, дата ровно 7 дней в прошлом — поэтому это не включено в формулу ниже. 😉

Вставьте это в свой модуль «ThisWorkbook» и используйте ActionRequired точно так же, как любую обычную формулу.

 Public Function ActionRequired(Optional date1 As Date = 0, Optional date2 As Date = 0, Optional date3 As Date = 0, Optional date4 As Date = 0) As Boolean

If date4 = 0 And DateDiff("d", date1, Now) > 7 Then

    If Not DateDiff("d", date2, Now) < 7 Then
        ActionRequired = True
        Exit Function
    End If

    If Not DateDiff("d", date3, Now) < 7 Then
        ActionRequired = True
        Exit Function
    End If

End If

End Function
  

Это не значит, что вложенность If формул Excel не работает (это так), но, по моему опыту, подобные вещи довольно подвержены ошибкам, поскольку они довольно быстро запутываются (кроме того, ваша формула хранится в сотнях ячеек — с UDF, она хранится ровно в одном месте — в вашем коде — и вызывается только в ячейках)

Комментарии:

1. Хорошо, никогда не работал с формулами, я изучу это. Но сейчас я буду использовать другой ответ, потому что я могу использовать его быстрее.

2. np, пожалуйста, не забудьте отметить сообщение Illpratll как ответ!