У меня есть журнал задач, который я создал на работе, чтобы расставить приоритеты в моих ежедневных делах.

В одном столбце я добавил формулу для автоматического вычисления чисел квадранта Кови на основе того, назначил ли я задачу как срочную или нет, срочную, важную или менее важную (которая задается как 1 , 2 , 3 или 4). У меня также есть столбец, чтобы назначить срок. Я хочу автоматически назначить дату исполнения и написал для этого формулу, но функция TODAY означает, что завтра мои сроки исполнения изменятся. Вот что я хочу сделать:

  1. Я хочу, чтобы срок оплаты рассчитывался автоматически на основе квадранта в столбце G и сегодняшней даты.
  2. Я хочу, чтобы срок исполнения оставался неизменным, когда я открою книгу завтра.
  3. Когда я завтра ввожу новую задачу, я хочу, чтобы срок выполнения снова автоматически вычислялся с использованием функции СЕГОДНЯ, а затем снова оставался статичным на следующий день, и так далее, и так далее.

Я в течение некоторого времени яростно изучал эту тему в Интернете, но безрезультатно. Я нашел много рекомендаций использовать CTRL+ для автоматического ввода сегодняшней даты в ячейку, и это не то, что я ищу.

Пожалуйста, просмотрите мою формулу ниже и дайте мне знать, если есть какой-либо способ для достижения моих целей, макро, VBA, формула или иным образом. Пожалуйста, будьте очень подробны в своих направлениях, так как я только изучаю макро и vba.

=IF(ISBLANK(E4),"",IF([@QUADRANT]=1, TODAY()+1,IF([@QUADRANT]=2, TODAY()+7,IF([@QUADRANT]=3, TODAY()+3, IF([@QUADRANT]=4, TODAY()+30)))))

1 ответ1

0

Я хотел бы предложить ДВА решения, чтобы достичь цели.

Решение 1:

Используйте эти коды VBA в качестве модуля. Первый преобразует текущую дату в ячейке A1 в значение статической даты, а при сохранении рабочей книги, а второй макрос преобразует значение статической даты в энергозависимое.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    With Sheet1.Range("A1")
        .Value = .Value
    End With

End Sub


Private Sub Workbook_Open()

     With Sheet1.Range("A1")
        .Value = "=Today()"
    End With

    End Sub

Решение 2:

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

    Private Sub CommandButton1_Click()

     If CommandButton1.Caption = "Convert Static" Then

      With Sheet1.Range("A1")
      .Value = .Value
      End With

   CommandButton1.Caption = "Convert Volatile"

   ElseIf CommandButton1.Caption = "Convert Volatile" Then

    With Sheet1.Range("A1")
            .Value = "=Today()"
        End With

  CommandButton1.Caption = "Convert Static"
  End If

  End Sub

NB: выполните следующие действия для выполнения задания.

  1. На листе 1, где вы выполняете свою формулу, в ячейке A1 напишите эту формулу = Today().
  2. Для решения 1, нажмите Alt+F11, чтобы открыть редактор VBA, найдите "Объекты Microsoft Excel".
  3. Щелкните правой кнопкой мыши на нем, найдите "Вставить", а затем "Модуль".
  4. Скопируйте и вставьте оба макроса.

Для решения 2 выполните следующие действия.

  1. На листе 1 нажмите вкладку « Разработчик», найдите «Режим разработки», слева от него - «Вставить».
  2. Найдите элементы управления ActiveX, в первую очередь это Command Button, нажмите на нее и нарисуйте кнопку в пустой области.
  3. Щелкните правой кнопкой кнопку «Команда», найдите «Свойства», «Найти заголовок» и измените его на «Преобразовать статический».
  4. Вернитесь на страницу, дважды нажмите кнопку «Command», редактор VBA будет открыт.
  5. Скопируйте и вставьте код VBA, перейдите в меню «Файл», нажмите «Закрыть» и «Вернуться в Excel».
  6. Снова нажмите кнопку «Дизайн» сверху, чтобы отключить его.
  7. Нажмите кнопку «Command», измените значение «Volatile Date» в ячейке A1 на «Static» и измените заголовок кнопки «Command» также на «Convert Volatile».
  8. Нажмите его еще раз, если вы хотите изменить значение ячейки A1 на статическое.

Помните, что при каждом щелчке по макросу дата в ячейке А1 будет изменяться на статическую на волатильную.

Обратите внимание, что в ВАШЕЙ ФОРМУЛЕ используйте ячейку A1 вместо СЕГОДНЯ ().

Вы можете написать = Today() Formula в любой пустой ячейке, но не забудьте соответствующим образом изменить адрес ячейки.

Я уверен, что это поможет вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .