Предположим, что лист с изменяемыми данными это лист 1, данные заносятся в колонку "D", а запись о дате изменения делаем на листе Лист 2.
Щелкаем на корешке листа 1 внизу правой кнопкой и выбираем команду ПРОСМОТРЕТЬ КОД.
Откроется окно модуля листа в редакторе VBA. Выбираем у него в верхней части объект Worksheets и событие Change
В процедуру вставляем следующий код, не забывая что столбец В по счету четвертый, то есть его номер 4
If Target.Column = 4 Then
i = 1
While Sheets("Лист2").Cells(i, 1).Value <> ""
i = i + 1
Wend
Sheets("Лист2").Cells(i, 1).Value = Date
End If
Вот и все. Не забудьте сохранить файл как книгу с поддержкой макросов с расширением xlsm или как двоичную книгу Excel с расширением xlsb? а так же разрешать макросы при ее открытии. Теперь при каждом изменении в колонке D на листе 1 в столбце А на листе 2 будет добавлена дата изменения. Кстати, если в коде поменять Date на Now, то запишется не только дата изменения, но и время. А еще можно записать рядом логин пользователя, выполнившего изменение
If Target.Column = 4 Then
i = 1
While Sheets("Лист2").Cells(i, 1).Value <> ""
i = i + 1
Wend
Sheets("Лист2").Cells(i, 1).Value = Now
Sheets("Лист2").Cells(i, 2).Value = Environ("UserName")
End If
наконец, следующий код позволит записать дату и время изменения в колонку А, и логин пользователя в колонку В на листе справа от листа, где нужно отследить изменение в колонке D, независимо от названий самих листов.
If Target.Column = 4 Then
j = ActiveSheet.Index
j = j + 1
i = 1
While Sheets(j).Cells(i, 1).Value <> ""
i = i + 1
Wend
Sheets(j).Cells(i, 1).Value = Now
Sheets(j).Cells(i, 2).Value = Environ("UserName")
End If
В общем, вариантов много, выбирайте по вкусу ))). Желаю успеха!