Другие языки программирования и технологии

Подскажите, как сделать автоматическое добавление текущей даты в ячейку в excel???

Что надо сделать что бы при заполнении столбца B в столбце A автоматически вставлялась текущая дата?
Вариант Ивана Леконтцева не очень удачный. Он, конечно, работает, но при открытии книги на следующий день или еще позже, даты изменения ячеек пересчитаются на текущую дату.
Данную задачу можно решить макросом по событию изменения на листе, как показал BeS Yara, но код “тяжелый” и очень много ЕСЛИ (если Tab, если Enter, если кликом мышки) .

Предлагаемый вариант решения макросом по событию изменения значений на листе, код помещается в модуль листа, в котором заполняются ячейки колонки В
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Cells(Target.Row, 1) = IIf(Cells(Target.Row, Target.Column) <> "", Date, "")
End Sub
Михаил Помесячный
Михаил Помесячный
27 337
Лучший ответ
формула:
=ЕСЛИ (B1>0;СЕГОДНЯ ();"")
Если В1 больше нуля-вставляет текущую дату, иначе пусто-пусто.
Не забудьте ячейки с формулой перевести в формат даты. Так же можно поэкспериментировать с форматом даты...
KK
Kuat Kuatov
28 058
=now()
вставь в ячейку
Антон Глинский
Антон Глинский
13 661
через формулу подставить дату и потом маркером автозаполнения заполнять весь столбец А
Есть конечно функция СЕГОДНЯ (), но она будет пересчитываться по текущей дате, поэтому не очень подходит (копировать вручную значение тоже не вариант) .

Полуавтоматический вариант предложить сходу могу :)
Создаём макрос:
Sub TodayDay()
Cells(ActiveCell.Row, 1).Value = Date
End Sub

Назначаем макросу горячую клавишу (например Ctrl-D), после ввода данных в столбце B нажимаетм TAB(чтобы покинуть ячейку, но остаться в той-же строке) , потом Ctrl-D.

Если удобнее завершение редактирования по ENTER, то надо в макросе поправить строку куда будет вставляться дата - Cells(ActiveCell.Row - 1, 1).
|======================================================|
Более автоматизированный вариант.
Создаём для ДАННОГО листа макрос:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 3 Then
Cells(ActiveCell.Row, 1).Value = Date
End If
If ActiveCell.Column = 2 Then
Cells(ActiveCell.Row - 1, 1).Value = Date
End If
End Sub
При изменении листа проверяется колонка - если третья, значит завершение ввода было по табу (пишем дату в туже строку, в первую колонку) ; если вторая, значит было завершение ввода данных по ENTER(пишем дату в предидущей строке, в первую колонку) .
На 2003-ем работает.
<updated>
Если после ввода данных во втором столбце завершать ввод кликом мышки куда попало, то этот макрос толку никакого не даст :(
</updated>