Каждый день в таблицу Exel вносятся данные - номера. Задача: Чтобы при вводе значения, например, в ячейку B1, в ячейке А1 автоматически устанавливалась дата внесения значения в ячейку В1 и т.д. После того, как дата занесена в ячейку А1, она не должна изменяться, если не меняется соответствующая ячейка В1. Изначально попробовал воспользоваться функцией =СЕГОДЯ(), как =ЕСЛИ(B1>0; СЕГОДНЯ(); " "). Да, дата подставляется (например, 8.04.2009), но если дальше продолжать заполнять поля В на следующий день, или на следующий день сохранить/открыть/обновить страницу, то все даты из ячеек А заменяются на сегодняшнюю (например, 9.04.2009). Как сделать так, чтобы дата подставлялась фиксированная и не менялась? Вариант Ctrl + ; известен, но это ручное заполнение, не то. Автозаполнение датой тоже не подходит, так как ячейки заполняются не последовательно, а вразнобой. Поэтому интересует больше формула. На сайте office.microsoft.ru также решения не нашел. Там говориться о СЕГОДНЯ() и ТДАТА(), но они динамически меняются с обновлением документа. Что касается фиксированной даты, то Microsoft предлагает использовать комбинацию Ctrl+;. Но вот только это не решение... Заранее спасибо.
элементарно вставляешь макрос в модуль ЭтаКнига(). При изменении второй колонки будет вставлять ЗНАЧЕНИЕ сегодняшней даты в первую колонку по строке изменения Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range) If Target.Column = 2 Then Cells(Target.Row, 1)= CStr(Date) End If End Sub
Sem, Спасибо. Только надо, чтобы даты проставлялись только на одном листе. Просто в книге 9 листов, а данный макрос распространяет свое действие на все листы в целом. Также задача усложняется еще и тем, что на нужном листе есть несколько колонок, куда должны автоматически подставляться даты B->A; I->H, L->K (например, при заполнении В1 дата ставится в А1; I4-H4; L2-K2) Еще раз спасибо.
Dirk Pitt, видно что с программированием на ВЫ Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range) If Target.Column = 2 And Sh.CodeName = "Лист1" Then ' проверка если значение было изменено во второй колонке и на листе "Лист1", что одно и что другое условие можно менять Cells(Target.Row, 1) = CStr(Date) ' формат Cells(), первый параметр - номер строки в которую будет вписываться занчение Cells(Target.Row+1, 3) = CStr(Date) ' второй параметр - НОМЕР колонки куда будет вписываться значение Cells(Target.Row+2, 4) = CStr(Date) Worksheets("Лист2").Cells(3, 4) = CStr(Date) ' либо фиксировано всегда ставить в третью строку четвертой колонки на лист с именем "Лист2" End If End Sub
Sem, [off]Совершенно верно По роду деятельности не связан с программированием, просто привык по возможности максимально все автоматизировать и упрощать, вот и ищу варианты[/off] Спасибо за помощь)