Я хотел бы, чтобы ячейки C5-C39 автоматически заполняли сегодняшнюю дату всякий раз, когда данные вводятся в ячейки B5-B39.
Я пытался заставить его работать, используя =TODAY()
но не как структурировать формулу.
Я хотел бы, чтобы ячейки C5-C39 автоматически заполняли сегодняшнюю дату всякий раз, когда данные вводятся в ячейки B5-B39.
Я пытался заставить его работать, используя =TODAY()
но не как структурировать формулу.
Я бы сказал, что самый простой способ сделать это - использовать пользовательскую функцию. Эта функция будет обновляться при изменении любой ячейки, на которую она ссылается, поэтому вам не придется связывать ее с какими-либо событиями.
Функция для вашей проблемы будет:
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)
), если условие ложно ,
Следующее помещает сегодняшнюю дату в ячейку "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 для рабочего листа, на котором вы хотите, чтобы это происходило.
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
Который теперь печатает только изменения в интересующем вас диапазоне.
Если вы хотите узнать, как изменить значение в ячейке, вы можете записать макрос, который делал это вручную, и изучить код. Надеюсь, у вас достаточно, чтобы продолжить. Дайте мне знать, если нет.