1

Я хотел бы, чтобы ячейки C5-C39 автоматически заполняли сегодняшнюю дату всякий раз, когда данные вводятся в ячейки B5-B39.

Я пытался заставить его работать, используя =TODAY() но не как структурировать формулу.

3 ответа3

0

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

Функция для вашей проблемы будет:

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

После помещения этого кода в модуль в вашей рабочей книге вы можете просто ввести =Updating_Date(B5) в C5 и затем скопировать его. Это должно привести к обновлению даты в C5 при изменении значений в столбце C.

Чтобы дата отображалась только в том случае, если ячейка в столбце B не пуста, вы можете применить формулу if в ячейке столбца C, как я уже говорил в другом вопросе, который вы задавали. Просто введите то же условие, которое я там показал (т.е. ISBLANK(B5)), и возвращаемое значение будет пустой строкой (""), если условие истинно, и UDF (Updating_Date(B5)), если условие ложно ,

0

Следующее помещает сегодняшнюю дату в ячейку "B" всякий раз, когда происходит изменение в ячейке "A":

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

Этот код необходимо поместить в модуль VBA для рабочего листа, на котором вы хотите, чтобы это происходило.

-2

AFIK, вам нужно будет сделать это через VBA. Вы можете создать функцию, которая будет отслеживать изменения на вашем рабочем листе, отфильтровывать только изменения в ячейках B5-B39 и обновлять ячейки в C соответственно.

ОБНОВЛЕНИЕ: Вы вероятно будете знать, чтобы войти в VBA, используя alt-F11.

Дважды щелкните объект Excel с именем Sheet1 или любой другой интересующий вас лист (в левом верхнем списке дерева), чтобы перейти к коду для этого листа.

Выберите «Рабочий лист» и «Изменить» из 2 раскрывающихся списков. Таким образом, вы получите код, который выглядит так:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Теперь доступна переменная "Цель", которая является ссылкой на ячейку, которая изменяется.

Добавьте код между этими строками:

debug.Print Target

и нажмите Ctrl-G, чтобы показать ближайшее окно

Сделайте некоторые изменения в рабочем листе и вернитесь к коду, вы увидите, что введенные вами данные появятся в окне «Немедленно».

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

С парой изменений, вы можете получить это:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

Который теперь печатает только изменения в интересующем вас диапазоне.

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

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