1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Вопрос по Excel: Автовставка фиксированной даты

Тема в разделе "Софт", создана пользователем Dirk Pitt, 10.04.09.

  1. Dirk Pitt

    Dirk Pitt Активный участник

    1.092
    0
    Каждый день в таблицу Exel вносятся данные - номера. Задача: Чтобы при вводе значения, например, в ячейку B1, в ячейке А1 автоматически устанавливалась дата внесения значения в ячейку В1 и т.д. После того, как дата занесена в ячейку А1, она не должна изменяться, если не меняется соответствующая ячейка В1. Изначально попробовал воспользоваться функцией =СЕГОДЯ(), как =ЕСЛИ(B1>0; СЕГОДНЯ(); " "). Да, дата подставляется (например, 8.04.2009), но если дальше продолжать заполнять поля В на следующий день, или на следующий день сохранить/открыть/обновить страницу, то все даты из ячеек А заменяются на сегодняшнюю (например, 9.04.2009). Как сделать так, чтобы дата подставлялась фиксированная и не менялась? Вариант Ctrl + ; известен, но это ручное заполнение, не то. Автозаполнение датой тоже не подходит, так как ячейки заполняются не последовательно, а вразнобой. Поэтому интересует больше формула.
    На сайте office.microsoft.ru также решения не нашел. Там говориться о СЕГОДНЯ() и ТДАТА(), но они динамически меняются с обновлением документа. Что касается фиксированной даты, то Microsoft предлагает использовать комбинацию Ctrl+;. Но вот только это не решение...
    Заранее спасибо.
     
  2. Sem

    Sem Активный участник

    2.227
    4
    элементарно
    вставляешь макрос в модуль ЭтаКнига(). При изменении второй колонки будет вставлять ЗНАЧЕНИЕ сегодняшней даты в первую колонку по строке изменения :)

    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
     
  3. Dirk Pitt

    Dirk Pitt Активный участник

    1.092
    0
    Sem,
    Спасибо. Только надо, чтобы даты проставлялись только на одном листе. Просто в книге 9 листов, а данный макрос распространяет свое действие на все листы в целом. Также задача усложняется еще и тем, что на нужном листе есть несколько колонок, куда должны автоматически подставляться даты B->A; I->H, L->K (например, при заполнении В1 дата ставится в А1; I4-H4; L2-K2)
    Еще раз спасибо.
     
  4. Sem

    Sem Активный участник

    2.227
    4
    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
     
    Последнее редактирование: 12.04.09
  5. Dirk Pitt

    Dirk Pitt Активный участник

    1.092
    0
    Sem,
    [off]Совершенно верно:) По роду деятельности не связан с программированием, просто привык по возможности максимально все автоматизировать и упрощать, вот и ищу варианты[/off]

    Спасибо за помощь)