Совет. Другие языки - Google-Translated. Вы можете посетить English версия этой ссылки.
Войти
x
or
x
x
Регистрация
x

or

Как автоматически заполнять дату в ячейке, когда смежная ячейка обновляется в Excel?

Иногда при обновлении ячейки в определенном столбце вы можете отметить последнюю дату обновления. В этой статье мы рекомендуем метод VBA для решения этой проблемы. Когда ячейка обновляется, смежная ячейка будет автоматически заполнена текущей датой немедленно.

Автоматическое заполнение текущей даты в ячейке, когда смежная ячейка обновляется кодом VBA


Объединение нескольких рабочих листов / книг в один рабочий лист / книгу:

Объединение нескольких рабочих листов или рабочих книг в один рабочий лист или книгу может быть огромной задачей в вашей повседневной работе. Но если у вас есть Kutools for Excel, его мощная утилита - Сочетать может помочь вам быстро объединить несколько рабочих листов, рабочих книг в один рабочий лист или книгу

Kutools for Excel: с более чем 200 удобными надстройками Excel, бесплатно попробовать без ограничений в 60-дни. Скачайте бесплатную пробную версию прямо сейчас!


Автоматическое заполнение текущей даты в ячейке, когда смежная ячейка обновляется кодом VBA


Предположим, что данные, необходимые для обновления мест поиска в столбце B, и когда ячейка в столбце B обновлена, текущая дата будет заполнена в соседней ячейке столбца A. См. Снимок экрана:

Для решения этой проблемы вы можете запустить следующий код VBA.

1. Щелкните правой кнопкой мыши вкладку листа, которая вам нужна для автоматического заполнения даты на основе смежной обновленной ячейки, а затем нажмите Просмотреть код из контекстного меню.

2. В окне Microsoft Visual Basic для приложений скопируйте и вставьте следующий код VBA в окно кода.

Код VBA: автоматически заполнять текущую дату в ячейке при обновлении смежной ячейки

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 2017/10/12
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
            Target.Offset(0, -1) = Date
        Application.EnableEvents = False
        Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
        If (Not xRg Is Nothing) Then
            For Each xCell In xRg
                xCell.Offset(0, -1) = Date
            Next
        End If
        Application.EnableEvents = True
    End If
End Sub

Примечания:

1. В коде B: B означает, что обновленные данные находятся в столбце B.

2. -1 указывает, что текущая дата будет заполнена в левом столбце столбца B. Если вы хотите, чтобы текущая дата была заполнена в столбце C, измените -1 на 1.

3. Нажмите другой + Q в то же время, чтобы закрыть Microsoft Visual Basic для приложений окна.

С этого момента при обновлении ячеек в столбце B соседняя ячейка в столбце A будет немедленно заполнена текущей датой. Смотрите скриншот:


Статьи по теме:



Рекомендуемые инструменты для повышения производительности в Excel

Kutools для Excel помогает всегда завершать работу раньше времени и выделяться из толпы

  • Больше, чем мощные расширенные функции 300, разработанные для рабочих сценариев 1500, повышающие производительность на 70%, дают вам больше времени, чтобы заботиться о семье и радоваться жизни.
  • Больше не нужно запоминать формулы и коды VBA, дайте вашему мозгу отдохнуть.
  • Станьте экспертом по Excel за минуты 3. Сложные и повторяющиеся операции можно выполнить за считанные секунды,
  • Ежедневно сокращайте тысячи операций с клавиатурой и мышью, попрощайтесь с профессиональными заболеваниями сейчас.
  • Высокоэффективные люди 110,000 и выбор всемирно известных компаний 300 +.
  • 60-Day полнофункциональная бесплатная пробная версия. 60-день гарантии возврата денег. 2 лет бесплатного обновления и поддержки.

Обеспечивает просмотр и редактирование с помощью вкладок в Microsoft Office, гораздо более мощный, чем вкладки браузера

  • Вкладка Office предназначена для Word, Excel, PowerPoint и других приложений Office: Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов в новых вкладках одного и того же окна, а не в новых окнах.
  • Увеличивает вашу производительность на 50% и уменьшает сотни щелчков мышью для вас каждый день!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Joe · 1 months ago
    Hello, I need some help. I am trying to populate the current date into column A if any cells B through N are modified. The offset is throwing me off. Can this code be written to auto populate the date in Column A specifically?
  • To post as a guest, your comment is unpublished.
    Gwen · 4 months ago
    Hi. I'm trying to use the "Auto Populate Current Date In Cell When Adjacent Cell Is Updated With VBA Code". This works on Sheet 1, but I have 11 other sheets I need the code to work on. Please advise. I'm not VBA saavy at all so I appreciate any help I can get!

    Thanks.
    • To post as a guest, your comment is unpublished.
      crystal · 4 months ago
      Hi Gwen,
      Please repeat the steps to copy the code to other sheets. It may be tedious, but it works.
  • To post as a guest, your comment is unpublished.
    Tracey · 5 months ago
    I used this code to auto populate a column and now wish to auto populate more columns based on date entered into column H. In other words, once a date is entered can I auto populate columns to add date 90, 60, and 30 days out?
    • To post as a guest, your comment is unpublished.
      crystal · 5 months ago
      Hi Tracey,
      The following VBA code can help you solve the probem. Please have a try.

      Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      Dim xRg As Range, xCell As Range
      Dim xRgAddress As String
      xRgAddress = "H:H"
      On Error Resume Next
      If (Target.count = 1) Then
      If (Not Application.Intersect(Target, Me.Range(xRgAddress)) Is Nothing) Then
      Target.Offset(0, 1) = Date + 90
      Target.Offset(0, 2) = Date + 60
      Target.Offset(0, 3) = Date + 30
      End If
      Application.EnableEvents = False
      Set xRg = Application.Intersect(Target.Dependents, Me.Range(xRgAddress))
      If (Not xRg Is Nothing) Then
      For Each xCell In xRg
      xCell.Offset(0, 1) = Date + 90
      xCell.Offset(0, 2) = Date + 60
      xCell.Offset(0, 3) = Date + 30
      Next
      End If
      Application.EnableEvents = True
      End If
      End Sub
  • To post as a guest, your comment is unpublished.
    Jen · 1 years ago
    Nevermind...I tried John's response below and it works - thank you!
  • To post as a guest, your comment is unpublished.
    Jen · 1 years ago
    HI - new to VBA - I want to loop the code - VBA code: auto populate current date in a cell when the adjacent cell is updated so that after a cell is updated with a date, then move on to say "J:J" and update K with date and then do 2 more times. Not sure if it is a loop or for? Thank you