Note: The other languages of the website are Google-translated. Back to English

Як вставити поточну мітку часу, коли дані в іншій комірці змінюються в Excel?

Припустимо, ви отримаєте аркуш, на якому потрібно змінити дані у певному стовпці. А після модифікації робочого аркуша вам потрібно вставити модифіковану позначку часу, щоб інші повідомили, які клітинки були змінені. Як з цим боротися? Ця стаття покаже вам спосіб вставлення поточної позначки часу, коли дані в іншій комірці змінюються в Excel, як показано нижче.

Вставте поточну мітку часу, коли дані в іншій комірці змінюються за допомогою коду VBA


Вставте поточну мітку часу, коли дані в іншій комірці змінюються за допомогою коду VBA

Як показано нижче на скріншоті, вам потрібно заповнити позначку часу у стовпці E, якщо відповідні клітинки у стовпці C змінено. Будь ласка, виконайте наступне.

1. На аркуші потрібно змінити та позначити позначкою часу, клацніть правою кнопкою миші вкладку аркуша, а потім клацніть Переглянути код з меню, що клацне правою кнопкою миші.

2. Потім скопіюйте та вставте наведений нижче код VBA в код вікно Microsoft Visual Basic для додатків вікно. Дивіться знімок екрана:

Код VBA: Вставте поточну мітку часу, коли змінюються дані в іншій комірці

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180830
Dim xCellColumn As Integer
Dim xTimeColumn As Integer
Dim xRow, xCol As Integer
Dim xDPRg, xRg As Range
xCellColumn = 3
xTimeColumn = 5
xRow = Target.Row
xCol = Target.Column
If Target.Text <> "" Then
    If xCol = xCellColumn Then
       Cells(xRow, xTimeColumn) = Now()
    Else
        On Error Resume Next
        Set xDPRg = Target.Dependents
        For Each xRg In xDPRg
            If xRg.Column = xCellColumn Then
                Cells(xRg.Row, xTimeColumn) = Now()
            End If
        Next
    End If
End If
End Sub

примітки: У коді цифра 3 означає, що ви збираєтеся змінити дані у стовпці C, а 5 означає, що мітка часу буде заповнена у стовпці E. Будь ласка, змініть їх відповідно до своїх потреб.

3 Натисніть кнопку інший + Q клавіші, щоб закрити Microsoft Visual Basic для додатків вікна.

Відтепер при зміні даних у стовпці C позначка часу буде заповнена у відповідні клітинки у стовпці E, як показано на знімку екрана нижче.

Порада. Вибір дати, Вставити дату корисність Kutools для Excel допомагає швидко вставити дату із заданим форматом дати у вибрану комірку.
Завантажте та спробуйте зараз! (30-денний безкоштовний маршрут)


Статті по темі:


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (52)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт, наведена вище формула буде корисною для оновлення позначки часу однієї клітинки. Наприклад: якщо ми введемо будь-які дані в 3-ю клітинку, мітка часу автоматично оновиться в 5-й клітинці. Будь ласка, порадьтеся щодо оновлення кількох клітинок. Наприклад: якщо ми введемо будь-які дані в 3-й клітинці, мітка часу автоматично оновиться в 5-й клітинці, а якщо ми введемо в 4-й клітинці, вона оновиться в 6-й клітинці.
Цей коментар був мінімізований модератором на сайті
Мене теж цікавить саме це питання. Ви знайшли відповідь? Чи приверне мій коментар до цього питання ще когось?!
Цей коментар був мінімізований модератором на сайті
Я вставляю кілька рядків і стовпців даних (одночасно і завжди одночасно). я хотів би, щоб штамп часу відображався лише в одній клітинці. іншими словами, щоразу, коли змінюється клітинка C9 (верхній лівий кут моїх даних), показувати час у клітинці A1. будь-яка допомога буде дуже вдячна!
Цей коментар був мінімізований модератором на сайті
як ми можемо заблокувати формат часу.. оскільки він щоразу оновлюється та вставляє дату та час.
Цей коментар був мінімізований модератором на сайті
Я створюю робочий аркуш у Excel, де я хочу відстежувати час початку та закінчення певної транзакції за допомогою позначки часу. У стовпці також буде показано тривалість часу. Будь ласка, дивіться зображення нижче. Хтось може мені допомогти? Зображення нижче.

Я знайшов 2 коди VBA, які записують часові позначки. Однак я не знаю, як їх об’єднати, щоб вони працювали на цьому аркуші:


Код 1 . Він показує мітку часу в стовпці «Час початку» (B4), коли ви вводите номер транзакції в графі «Ідентифікатор справи» (A4).


Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Помилка GoTo Handler
Якщо Target.Column = 1 і Target.Value <> "" Тоді
Application.EnableEvents = False
Target.Offset(0, 1) = Формат(Зараз(), "mm/dd/yyyy HH:mm:ss")
Application.EnableEvents = True
End If
Обробник:
End Sub


Код 2. У стовпці "Час завершення" (D4) відображається мітка часу, якщо вибрано вибір зі спадного меню в стовпці "Статус" (C4).


Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim xCellColumn як ціле число
Dim xTimeColumn як ціле число
Dim xRow, xCol як ціле число
xCellColumn = 3
xTimeColumn = 4
xRow = Target.Row
xCol = Ціль.Стовпець
Якщо Target.Text <> "" Тоді
Якщо xCol = xCellColumn Тоді
Комірки(xRow, xTimeColumn) = Зараз()
End If
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Шановна Чіа,
Не бачив вашого зображення. Натисніть кнопку «Завантажити файли» нижче, щоб завантажити своє зображення.
Цей коментар був мінімізований модератором на сайті
Що таке код, якщо я хочу позначити час для кількох клітинок окремо на одному аркуші?
Приклад: зміна в стовпці 3, позначка часу в стовпці 5. Зміна в стовпці 10, позначка часу в стовпці 11. Зміна в стовпці 13, позначка часу в стовпці 14.
xCellColumn = 3
xTimeColumn = 5
Цей коментар був мінімізований модератором на сайті
Шановна Марія,
Наведений нижче код VBA може допомогти вам. Дякуємо за коментар.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim I As Long
Dim J As Long
Dim xCols As Long
Dim xSRg As Range
Dim xRgEx як діапазон
Dim xSRgArea як діапазон
Dim xNextArea як діапазон
On Error Resume Next
Application.EnableEvents = False
Встановити xSRg = Union(Range("C:C"), Range("E:E"), Range("J:K"), Range("M:N"))
Встановити xRgEx = Intersect(xSRg, Target)
Якщо xRgEx — це нічого, перейдіть до ExitSub
Для I = 1 До xSRg.Areas.Count
J = я
Встановити xSRgArea = xSRg.Areas.Item(I)
Якщо xRgEx.Column = xSRgArea(1).Column Then
xCols = xSRgArea.Columns.Count
Якщо xCols = 1 Тоді
Встановіть xNextArea = xSRg.Areas.Item(J + 1)
Якщо xNextArea — це нічого
Перейдіть до ExitSub
ElseIf xNextArea.Columns.Count = 1 Тоді
xNextArea(xRgEx.Row).Value = Зараз()
Вихід для
End If
Інакше Якщо xCols = 2 Тоді
xSRgArea.Columns(2).Rows(xRgEx.Row).Value = Now()
Вихід для
End If
End If
Далі
ExitSub:
Application.EnableEvents = True
End Sub
Цей коментар був мінімізований модератором на сайті
Чи можете ви поділитися, що потрібно оновити, щоб зробити це специфічним для іншої електронної таблиці? Наприклад, зміни позначки часу C в E, зміни позначки часу G в I, зміни позначки часу O в Q.
Цей коментар був мінімізований модератором на сайті
Я просто об’єднав перший код, згаданий вище, змінивши всі змінні з VAR на VAR1/VAR2/VAR3 тощо
Цей коментар був мінімізований модератором на сайті
Привіт, це можна зробити, якщо будь-які значення були змінені, а позначка часу оновлена ​​лише в певній клітинці, як-от A1
Цей коментар був мінімізований модератором на сайті
Хороший день,
Якщо ви хочете завжди відображати позначку часу в клітинці A1, якщо будь-які значення змінено в певному діапазоні. Наступний код VBA може допомогти.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim xRg As Range
On Error Resume Next
Встановіть xRg = Intersect(Target, Range("B1:D4"))
Якщо xRg — нічого, вийдіть із Sub
Діапазон("A1").Значення = Зараз()
End Sub
Цей коментар був мінімізований модератором на сайті
привіт Crystal, це дуже добре, як я можу отримати зміну позначки часу в кожному відповідному рядку, коли змінюється будь-яка клітинка з діапазону клітинок у відповідному рядку. Як і A2, має оновлюватися мітка часу, коли вносяться будь-які зміни між B2 і H2 і так далі з A3, A4 тощо.
Цей коментар був мінімізований модератором на сайті
У мене є база даних в Excel, в якій мені потрібно відстежувати, що було змінено.
Чи можна змінити код так, щоб, якщо зміни були внесені на аркуші 1, він дублював змінену клітинку на аркуші 2 і забезпечував мітку часу біля неї?
Цей коментар був мінімізований модератором на сайті
Добрий день,
На жаль, не можу допомогти з цим. Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Щиро дякую за це! Я використовую кнопки прокрутки, щоб додавати 1 до моєї суми кожного разу, коли я виконую завдання, але макроси не реєструють зміни кнопок. Після додаткових досліджень я зрозумів, як призначити макрос моїм кнопкам керування, і тепер я можу відстежувати свої зміни!!!! Я зробив це складнішим, ніж потрібно, ось що у мене вийшло:


Підмітка часу ()
'
' Макрос позначки часу
' Позначка часу на кнопках прокручування
'
'
Діапазон("j2").Значення = Зараз()

End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, це працює ідеально, якщо я вручну зміню клітинку, коли я копіюю та вставляю інформацію, не працює. Я намагаюся мати цю позначку часу кожного разу, коли хтось вставляє нову інформацію. Замість того, щоб змінювати інформацію клітинки одну за одною, я хочу зафіксувати поведінку, коли дані вставляються масово для кількох клітинок. Хтось знає, що мені робити?


Спасибі,
Цей коментар був мінімізований модератором на сайті
велике спасибі за це, однак мітка часу змінюється, лише якщо значення в комірці змінено «вручну». Якщо воно змінено через зміну в іншій клітинці, а значення змінюється як частина формули, позначки часу немає. Чи є у вас рішення для цього? Спасибі! Деніс
Цей коментар був мінімізований модератором на сайті
Шановний Денис,
Код оновлено, проблема вирішена. Дякую за коментар.
Цей коментар був мінімізований модератором на сайті
привіт,

Це саме те, що я шукав! Проте мені було цікаво, чи можете ви допомогти мені змусити його працювати із захищеним аркушем. Здається, він працює лише на незахищеному (коли мітка часу оновлюється через зміну значення як частину формули, подібно до запиту Денніса).

Дуже дякую! Bassel
Цей коментар був мінімізований модератором на сайті
привіт,
Це також може працювати на захищеному аркуші. Перш ніж захистити аркуш, потрібно відформатувати змінені клітинки та клітинки з міткою часу, щоб вони були розблоковані. Будь ласка, спробуйте ще раз. Дякую за коментар.
Цей коментар був мінімізований модератором на сайті
привіт,


Чи можна змінити код так, щоб будь-які зміни в кількох стовпцях створювали нову позначку часу в тій самій клітинці? Тобто я вношу редагування в будь-яку клітинку A3, B3 або C3, а мітка часу оновлюється тільки в C4?


Крім того, чи можна зробити так, щоб код застосовувався лише до певного діапазону на аркуші?


Дякую
Цей коментар був мінімізований модератором на сайті
Привіт Алек
Будь ласка, спробуйте наведений нижче код VBA. Дякуємо за коментар.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim xRRg, xRg як діапазон
Dim xRgArray як варіант
Dim xStrCell як рядок
Dim xSCRg як діапазон
Dim xStrResult як рядок
xRgArray = Масив("A1:C10")
xStrCell = "A3, B3, C3"
xStrResult = "C4"
On Error Resume Next

Якщо Target.Cells.count > 1, вийдіть із Sub
Для xFNum = LBound(xRgArray) до UBound(xRgArray)
Якщо xRgArray(xFNum) <> "" Тоді
Встановити xRg = діапазон(xRgArray(xFNum))
Якщо ні, то xRg – це нічого
Встановіть xSCRg = Null
Встановити xSCRg = xRg.Range(xStrCell)
xSCRg.Вибрати
Якщо ні, то xSCRg – це нічого
Якщо Not Intersect(xSCRg, Target) — це ніщо
Встановити xRRg = xRg.Range(xStrResult)
Якщо xRRg Нічого, вийдіть із Sub
xRRg.Value = Зараз()
Вихід для
End If
End If
End If
End If
Далі xFNum
End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, сподіваюся, ви все ще бачите це!!! Я використовую наведений нижче код для оновлення позначки часу в C6 щоразу, коли оновлюється C5. Проблема в тому, що коли я перебуваю в решті аркуша, щоразу, коли я натискаю клавішу enter або tab, це повертає мене до C5. Якісь думки?

Dim xRRg, xRg як діапазон
Dim xRgArray як варіант
Dim xStrCell як рядок
Dim xSCRg як діапазон
Dim xStrResult як рядок
xRgArray = масив ("C5:C6")
xStrCell = "C5"
xStrResult = "C6"
On Error Resume Next

Якщо Target.Cells.Count > 1, то вийдіть із Sub
Для xFNum = LBound(xRgArray) до UBound(xRgArray)
Якщо xRgArray(xFNum) <> "" Тоді
Встановити xRg = діапазон(xRgArray(xFNum))
Якщо ні, то xRg – це нічого
Встановіть xSCRg = Null
Встановити xSCRg = xRg.Range(xStrCell)
xSCRg.Вибрати
Якщо ні, то xSCRg – це нічого
Якщо Not Intersect(xSCRg, Target) — це ніщо
Встановити xRRg = xRg.Range(xStrResult)
Якщо xRRg Нічого, вийдіть із Sub
xRRg.Value = Зараз()
Вихід для
End If
End If
End If
End If
Далі xFNum
End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, це схоже на те, що мені потрібно, я хотів би, щоб позначка часу оновлювалася в стовпці AG, коли оновлюються клітинки між A та AH.
Я спробував наведений вище код, але мені не пощастило.
Цей коментар був мінімізований модератором на сайті
У мене є проект, над яким я працюю, який я регулярно оновлюю. Здебільшого це лише для відстеження інформації мого співробітника, як-от номери телефонів, закінчення терміну дії водійських прав тощо. Оскільки я так часто оновлюю її, я хочу, щоб у верхній або нижній частині мого робочого аркуша була автоматична позначка часу, яка оновлюватиме сьогоднішню дату щоразу, коли я оновити інформацію БУДЬ-ДЕ в електронній таблиці. Зараз я використовую AN і 1-42, тому мені потрібен штамп близько M40. Як би виглядав цей код?
Цей коментар був мінімізований модератором на сайті
Відкрийте «Розробник» і виберіть у своїй книзі книгу та подію «Перед збереженням».


У підпорядкуванні введіть код: Range("M40").value = Now
Цей коментар був мінімізований модератором на сайті
Додавання позначки часу працює дуже добре і дуже корисно. Однак я отримую помилку, коли видаляю рядок, оскільки сценарій не може вставити позначку часу в рядок, який більше не існує.


Було б чудово, якщо хтось може порадити, як це вирішити.
Цей коментар був мінімізований модератором на сайті
Привіт, Сандер!
У моєму випадку помилки немає. Чи можете ви сказати мені свою версію Excel? Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Привіт Crystal, це дуже добре, як я можу отримати зміну позначки часу в кожному відповідному рядку, коли змінюється будь-яка клітинка з діапазону клітинок у відповідному рядку. Наприклад, A2 має оновлюватися міткою часу, коли будь-які зміни вносяться в другому рядку між B2 і H2, і аналогічним чином A3 отримує мітку часу, коли зміни вносяться від B3 до H3, і так далі до останнього рядка.
Цей коментар був мінімізований модератором на сайті
Привіт усім

Заздалегідь вдячні вам за допомогу.

Яким має бути код для оновлення поточного часу в комірці в стовпці X, якщо в будь-якій клітинці цього рядка є зміна? Наприклад, будь-яка зміна значень у клітинках a2 до w2, то час має бути оновлений у x2.


Знову дякую.
Цей коментар був мінімізований модератором на сайті
Чи обійдеться функція відмітки часу, якщо файл Excel, який ви використовуєте, є оновлюваним?
Цей коментар був мінімізований модератором на сайті
Добрий день,
Код не підтримує дані про з'єднання. Вибачте за незручності.
Цей коментар був мінімізований модератором на сайті
панове,

Вже місяць я шукаю подібне рішення, як це. Хоча наведене вище рішення здається OTM, я використовую його для фондового ринку.
Тож у мене є стовпець F, де я реалізував стратегію «Купити/продай», і аркуш продовжує оновлюватися кожні 1 хвилину. У мене є стовпець T, де я хочу відмітити час на основі таких умов:

(1) Колонка F – сигналізує про покупку або продаж
(2) Стовпець F – Зміни з покупки на продаж або з продажу на покупку
(3) Колонка F – змінюється з "Купити/Продай" на "порожню".

Хоча загальне рішення, яке доступне в мережі, здається, працює (формула Excel), але коли дані оновлюються, воно визначає поточний час, ніж час сигналу. Наприклад, якщо я отримаю покупку о 9:15 і якщо поточний час 10:30, я побачу 10:30 годин у стовпці T (час сигналу), а не 9:15 годин.

Будь-яка допомога буде вдячна.

Щирі вітання
JT
Цей коментар був мінімізований модератором на сайті
5/15/19|1:41 PM|John Smith|125B-1|10000000|Equipment|Staff|5/15/19|2:43 PM|Staff

Повідомлення вище показує дані, які вводяться в рядок. Я шукав допомоги щодо оновлення перших 2 стовпців, які містять позначку часу, щоразу, коли заповнюється стовпець ID (10000000). Якщо можливо, можна також видалити позначки часу, якщо видалено також ідентифікатор? Що стосується останніх 3 стовпців (дата|час|персонал), ці позначки часу можуть оновлюватися щоразу, коли останній стовпець заповнюється іменем співробітника. Я спробував пограти з кодом, але моя відсутність знань із VBA дозволила мені зробити так багато.
Цей коментар був мінімізований модератором на сайті
Привіт Кристал,
Я намагаюся створити функцію, де якщо я оновлю будь-яку клітинку в H9:L9 на аркуші 1, мітка часу в комірці C2 на аркуші 2 повинна оновлюватися.
Тепер мені потрібно зробити це приблизно на 100 рядках на аркуші 1 (H10:L10, H11:L11) і оновити відповідні C3, C4....на аркуші 2

Будь-яка допомога дуже цінується. Здоров'я!
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0  Персонажі
Рекомендовані місця