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

Cum se inserează marcajul de timp curent atunci când datele dintr-o altă celulă se modifică în Excel?

Presupunând că primiți o foaie de lucru care necesită modificarea datelor într-o anumită coloană. Și după ce ați modificat foaia de lucru, trebuie să inserați marcajul de timp modificat pentru a informa ceilalți ce celule au fost modificate. Cum să te descurci? Acest articol vă va arăta metoda de inserare a marcajului de timp curent atunci când datele dintr-o altă celulă se modifică în Excel, după cum se arată în imaginea de mai jos.

Introduceți marcajul de timp curent când datele dintr-o altă celulă se modifică cu codul VBA


Introduceți marcajul de timp curent când datele dintr-o altă celulă se modifică cu codul VBA

Așa cum este prezentat mai jos, trebuie să completați marca de timp în coloana E dacă celulele corespunzătoare din coloana C sunt modificate. Vă rugăm să faceți următoarele.

1. În foaia de lucru, trebuie să modificați și să marcați cu marcaj de timp, faceți clic dreapta pe fila foaie, apoi faceți clic pe Afișați codul din meniul cu clic dreapta.

2. Apoi copiați și lipiți codul VBA de mai jos în Cod fereastra de Microsoft Visual Basic pentru aplicații fereastră. Vedeți captura de ecran:

Cod VBA: introduceți marcajul de timp curent când datele dintr-o altă celulă se schimbă

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

notițe: În cod, numărul 3 înseamnă că urmează să modificați datele din coloana C, iar 5 indică faptul că marcajul de timp va fi completat în coloana E. Vă rugăm să le modificați în funcție de nevoile dvs.

3. apasă pe Alt + Q tastele pentru a închide Microsoft Visual Basic pentru aplicații fereastră.

De acum înainte, când schimbați datele din coloana C, marcajul de timp va fi populat în celulele corespunzătoare din coloana E, așa cum se arată mai jos.

Bacsis. Data Picker. Introduceți data utilitatea Kutools pentru Excel vă ajută să inserați rapid data cu formatul de dată specificat într-o celulă selectată.
Descărcați și încercați acum! (30- traseu liber de o zi)


Articole pe aceeași temă:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (57)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Formula de mai sus va fi utilă pentru actualizarea marcajului de timp pentru o singură celulă Ex: Dacă introducem date în celula a treia, marcajul de timp se actualizează automat în celula a cincea. Vă rugăm să sfătuiți pentru actualizarea mai multor celule. Ex: Dacă introducem date în a 3-a celulă, marca temporală se actualizează automat în a 5-a celulă și dacă introducem pe a 3-a celulă, se va actualiza pe a 5-a celulă.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Si eu ma intereseaza exact aceasta intrebare. Ai găsit un răspuns? Comentariul meu despre aceasta va atrage atenția altcuiva asupra acestei întrebări?!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Lipiz mai multe rânduri și coloane în valoare de date (la un moment dat și întotdeauna în același timp). Aș dori doar ca marca temporală să fie afișată într-o singură celulă. cu alte cuvinte, ori de câte ori se modifică celula C9 (colțul din stânga sus al datelor mele), afișați ora în celula A1. orice ajutor ar fi foarte apreciat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
cum putem bloca formatul orei... pentru că se actualizează de fiecare dată și inserează data și ora.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Creez o foaie de lucru în Excel în care vreau să urmăresc ora de începere și de sfârșit a unei anumite tranzacții folosind un marcaj de timp. O coloană va afișa și durata de timp. Vă rugăm să vedeți imaginea de mai jos. Ma poate ajuta cineva? Imaginea de mai jos.

Am găsit 2 coduri VBA care înregistrează marcaje de timp. Cu toate acestea, nu știu cum să le îmbin, așa că vor funcționa în această foaie:


Codul 1. Afișează marca temporală în coloana „Ora de începere” (B4) când introduceți un număr de tranzacție în rubrica „ID caz” (A4).


Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
La eroare GoTo Handler
Dacă Target.Column = 1 și Target.Value <> "" Atunci
Application.EnableEvents = Fals
Target.Offset(0, 1) = Format(Acum(), „mm/zz/aaaa HH:mm:ss”)
Application.EnableEvents = Adevărat
Final, dacă
Manipulator:
End Sub


Codul 2. Afișează marca temporală în coloana „Ora de încheiere” (D4) dacă este selectată o selecție dintr-un meniu vertical din coloana „Stare” (C4).


Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim xCellColumn ca număr întreg
Dim xTimeColumn ca număr întreg
Dim xRow, xCol ca întreg
xCellColumn = 3
xTimeColumn = 4
xRow = Target.Row
xCol = Target.Column
Dacă Target.Text <> "" Atunci
Dacă xCol = xCellColumn Atunci
Cells(xRow, xTimeColumn) = Acum()
Final, dacă
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Draga Chia,
Nu ți-am văzut imaginea. Vă rugăm să faceți clic pe butonul de mai jos Încărcați fișiere pentru a încărca fotografia dvs.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Care este codul dacă vreau să ștampez mai multe celule individual în aceeași foaie de lucru?
Exemplu: modificare în coloana 3, marcaj de timp în coloana 5. Modificare în coloana 10, marcaj de timp în coloana 11. Modificare în coloana 13, marcaj de timp în coloana 14.
xCellColumn = 3
xTimeColumn = 5
Acest comentariu a fost redus la minimum de moderatorul de pe site
Draga Maria,
Următorul cod VBA vă poate ajuta. Multumesc pentru comentariu.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim I As Long
Dim J As Long
Dim xCols As Long
Dim xSRg As Range
Dim xRgEx As Range
Dim xSRgArea As Range
Dim xNextArea As Range
La data de eroare CV următoare
Application.EnableEvents = Fals
Set xSRg = Uniune(Range("C:C"), Range("E:E"), Interval ("J:K"), Interval ("M:N"))
Set xRgEx = Intersect(xSRg, Target)
Dacă xRgEx nu este nimic, atunci mergeți la ExitSub
Pentru I = 1 To xSRg.Areas.Count
J = I
Setați xSRgArea = xSRg.Areas.Item(I)
Dacă xRgEx.Coloană = xSRgArea(1).Coloană Atunci
xCols = xSRgArea.Columns.Count
Dacă xCols = 1, atunci
Setați xNextArea = xSRg.Areas.Item (J + 1)
Dacă xNextArea nu este nimic, atunci
GoTo ExitSub
ElseIf xNextArea.Columns.Count = 1 Atunci
xNextArea(xRgEx.Row).Value = Now()
Ieșiți pentru
Final, dacă
ElseIf xCols = 2 Atunci
xSRgArea.Columns(2).Rows(xRgEx.Row).Value = Now()
Ieșiți pentru
Final, dacă
Final, dacă
Pagina Următoare →
ExitSub:
Application.EnableEvents = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Puteți împărtăși ceea ce trebuie actualizat pentru a-l face specific unei alte foi de calcul? De exemplu, modificări în marcajul temporal C în E, modificările marcajului temporal G în I, modificările marcajului temporal O în Q.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pur și simplu am înșirat primul cod menționat mai sus împreună, schimbând toate variabilele din VAR în VAR1/VAR2/VAR3 etc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, se poate face dacă se modifică vreo valoare și marca temporală este actualizată numai într-o anumită celulă, cum ar fi A1
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Dacă doriți să afișați întotdeauna marcajul de timp în celula A1 dacă vreo valoare este modificată într-un anumit interval. Următorul cod VBA vă poate ajuta.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim xRg As Range
La data de eroare CV următoare
Set xRg = Intersect(Target, Range("B1:D4"))
Dacă xRg nu este nimic, ieșiți din sub
Interval("A1").Valoare = Acum()
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
salut Crystal, acest lucru este foarte bun, cum pot obține modificarea marcajului de timp în fiecare rând corespunzător când se modifică orice celulă din intervalul de celule din rândul respectiv. Ca și A2, ar trebui să fie actualizat cu marcaj de timp atunci când se fac modificări între B2 și H2 și așa mai departe cu A3, A4 etc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am o bază de date în Excel pe care trebuie să țin evidența a ceea ce a fost schimbat.
Este posibil să se modifice codul astfel încât, dacă se fac modificări în foaia 1, acesta va duplica celula modificată din foaia 2 și va furniza o ștampilă de timp lângă aceasta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Îmi pare rău, nu te pot ajuta cu asta. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumesc mult pentru asta! Folosesc butoanele de defilare pentru a adăuga 1 la totalul meu de fiecare dată când termin o sarcină, dar macrocomenzile nu înregistrează modificări ale butoanelor. După ce am făcut mai multe cercetări, mi-am dat seama cum să atribui o macrocomandă butoanelor mele de control și acum îmi pot urmări modificările!!!! Făceam totul mai complicat decât trebuia, așa am ajuns:


Sub marcaj temporal()
'
Macro-marca de timp
' Marcaj temporal pe butoanele de defilare
'
'
Interval("j2").Valoare = Acum()

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Funcționează perfect dacă schimb manual celula, când copiez și lipesc informațiile nu funcționează. Încerc să am acest marcaj de timp de fiecare dată când cineva lipește informații noi. În loc să schimb informațiile despre celulă una câte una, comportamentul pe care vreau să-l capturez este atunci când datele sunt lipite în bloc pentru mai multe celule. Stie cineva ce ar trebui sa fac?


Multumesc,
Acest comentariu a fost redus la minimum de moderatorul de pe site
mulțumesc mult pentru asta, cu toate acestea, marca temporală se schimbă numai dacă valoarea din celulă este modificată „manual”. Dacă este schimbată din cauza unei modificări în altă celulă și valoarea se modifică ca parte a unei formule, nu există nicio marcaj de timp. Aveți o soluție pentru asta? Mulțumiri! Dennis
Acest comentariu a fost redus la minimum de moderatorul de pe site
Draga Dennis,
Codul a fost actualizat cu problema rezolvată. Multumesc pentru comentariul tau.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Este exact ceea ce căutam! Cu toate acestea, mă întrebam dacă mă puteți ajuta să funcționeze cu o foaie de lucru protejată. Se pare că funcționează doar pe unul neprotejat (când marca temporală se actualizează din cauza unei modificări a valorii ca parte a unei formule, similar cu solicitarea lui Dennis).

Mulțumesc foarte mult! Bassel
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Acest lucru poate funcționa și pe o foaie de lucru protejată. Înainte de a proteja foaia de lucru, trebuie să formatați celulele modificate și celulele de marcare temporală la starea deblocată. Vă rugăm să încercați din nou. Multumesc pentru comentariul tau.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,


Este posibil să se modifice codul astfel încât orice modificări în mai multe coloane să genereze o nouă marcaj de timp în aceeași celulă? Adică fac o editare în oricare dintre celulele A3, B3 sau C3 și amprenta temporală se actualizează doar în C4?


De asemenea, este posibil ca codul să se aplice doar unui anumit interval dintr-o foaie?


mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Alec
Vă rugăm să încercați codul VBA de mai jos. Multumesc pentru comentariu.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim xRRg, xRg As Range
Dim xRgArray ca variantă
Dim xStrCell ca șir
Dim xSCRg As Range
Dim xStrResult ca șir
xRgArray = Matrice ("A1:C10")
xStrCell = „A3, B3, C3”
xStrResult = „C4”
La data de eroare CV următoare

Dacă Target.Cells.count > 1, apoi Ieșiți din sub
Pentru xFNum = LBound(xRgArray) La UBound(xRgArray)
Dacă xRgArray(xFNum) <> "" Atunci
Set xRg = Range(xRgArray(xFNum))
Dacă nu xRg este nimic, atunci
Setați xSCRg = Null
Setați xSCRg = xRg.Range(xStrCell)
xSCRg.Select
Dacă nu xSCRg este nimic, atunci
Dacă nu se intersectează (xSCRg, țintă) nu este nimic, atunci
Setați xRRg = xRg.Range(xStrResult)
Dacă xRRg este Nimic, Ieșiți din Sub
xRRg.Value = Acum()
Ieșiți pentru
Final, dacă
Final, dacă
Final, dacă
Final, dacă
Următorul xFNum
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei, sper că încă mai vezi asta!!! Folosesc codul de mai jos pentru o actualizare a marcajului de timp în C6 oricând C5 este actualizat. Problema este că, atunci când mă aflu în restul foii de lucru, de fiecare dată când apăs pe Enter sau pe tab, mă sare înapoi la C5. Ceva gânduri?

Dim xRRg, xRg As Range
Dim xRgArray ca variantă
Dim xStrCell ca șir
Dim xSCRg As Range
Dim xStrResult ca șir
xRgArray = Matrice("C5:C6")
xStrCell = „C5”
xStrResult = „C6”
La data de eroare CV următoare

Dacă Target.Cells.Count > 1, apoi Ieșiți din sub
Pentru xFNum = LBound(xRgArray) La UBound(xRgArray)
Dacă xRgArray(xFNum) <> "" Atunci
Set xRg = Range(xRgArray(xFNum))
Dacă nu xRg este nimic, atunci
Setați xSCRg = Null
Setați xSCRg = xRg.Range(xStrCell)
xSCRg.Select
Dacă nu xSCRg este nimic, atunci
Dacă nu se intersectează (xSCRg, țintă) nu este nimic, atunci
Setați xRRg = xRg.Range(xStrResult)
Dacă xRRg este Nimic, Ieșiți din Sub
xRRg.Value = Acum()
Ieșiți pentru
Final, dacă
Final, dacă
Final, dacă
Final, dacă
Următorul xFNum
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei, este oarecum similar cu ceea ce am nevoie, aș dori ca un marcaj temporal să fie actualizat în coloana AG atunci când celulele dintre A și AH sunt actualizate.
Am încercat codul de mai sus, dar nu am avut noroc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am un proiect la care lucrez pe care îl actualizez în mod regulat. Este mai ales doar pentru a ține evidența informațiilor angajatului meu, cum ar fi numerele de telefon, expirarea permisului de conducere etc. Deoarece îl actualizez atât de des, vreau o ștampilă automată de timp care să se afle în partea de sus sau de jos a foii de lucru care se va actualiza cu data de astăzi de fiecare dată când o fac. actualizați informațiile ORIUNDE pe foaia de calcul. În prezent folosesc AN și 1-42, așa că am nevoie de o ștampilă în jurul M40. Cum ar arăta acel cod?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deschideți Developer și pe registrul de lucru selectați Registrul de lucru și evenimentul BeforeSave.


În subpuneți codul: Range("M40").value = Now
Acest comentariu a fost redus la minimum de moderatorul de pe site
Adăugarea marcajului de timp funcționează foarte bine și este foarte utilă. Totuși primesc o eroare când șterg un rând, deoarece scriptul nu poate introduce marcajul de timp în rândul care nu mai există.


Ar fi grozav dacă cineva poate sfătui cum să rezolvăm asta.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Sander,
Nu există nicio eroare în cazul meu. Îmi poți spune versiunea ta de Excel? Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Crystal, este foarte bine, cum pot obține modificarea marcajului de timp în fiecare rând corespunzător când se modifică orice celulă din intervalul de celule din rândul respectiv. De exemplu, A2 ar trebui să fie actualizat cu marcaj de timp atunci când se fac modificări pe al doilea rând între B2 și H2 și, în mod similar, A3 primește marcajul de timp atunci când se fac modificări de la B3 la H3 și așa mai departe până la ultimul rând.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua tuturor

Multumesc anticipat pentru ajutor.

Care ar trebui să fie codul pentru a actualiza ora curentă pe celula din coloana X dacă există o modificare în orice celulă de pe acel rând? De exemplu, orice modificare a valorilor pe celulele a2 la w2, atunci timpul ar trebui să fie actualizat în x2.


Mulțumesc din nou.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ar fi ocolită funcționalitatea de marcaj de timp dacă fișierul Excel pe care îl utilizați este reîmprospătabil?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Codul nu acceptă datele de conexiune. Scuze pentru neplăceri.
Acest comentariu a fost redus la minimum de moderatorul de pe site
domnilor,

A trecut o lună în care caut o soluție similară ca aceasta. În timp ce soluția de mai sus pare a fi OTM, o folosesc pentru bursă.
Deci am coloana F în care am implementat o strategie de cumpărare/vânzare și foaia continuă să se reîmprospăteze la fiecare minut. Am coloana T unde vreau marcajul de timp pe baza următoarelor condiții:

(1) Coloana F - Semnează o cumpărare sau o vânzare
(2) Coloana F - Modificări de la Cumpărare la Vânzare sau Vânzare la Cumpărare
(3) Coloana F - Modificări de la Cumpărare/Vânzare la gol

În timp ce soluția generală care este disponibilă pe net pare să funcționeze (formula excel), dar atunci când datele se reîmprospătează, bate timpul curent decât timpul semnalului. De exemplu, dacă primesc o Cumpărare la 9:15 ore și dacă ora curentă este 10:30, voi vedea 10:30 ore în coloana T (ora semnalului) și nu 9:15 ore.

Orice asistență ar fi foarte apreciată.

Salutări calde
JT
Acest comentariu a fost redus la minimum de moderatorul de pe site
5/15/19|1:41 PM|John Smith|125B-1|10000000|Equipment|Staff|5/15/19|2:43 PM|Staff

Postarea de mai sus arată datele care sunt introduse într-un rând. Am căutat ajutor pentru actualizarea primelor 2 coloane care conțin un marcaj de timp ori de câte ori este populată coloana ID (10000000). Dacă este posibil, marcajele temporale pot fi eliminate și dacă ID-ul este eliminat? În ceea ce privește ultimele 3 coloane (data|time|staff), acele marcaje temporale ar putea fi actualizate ori de câte ori ultima coloană este populată cu un nume de personal. Am încercat să joc cu codul, dar lipsa mea de cunoștințe cu VBA mi-a permis doar să fac atât de multe.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Crystal,
Încerc să creez o funcție în care, dacă actualizez orice celulă din H9:L9 din foaia 1, marcajul de timp din celula C2 din foaia 2 ar trebui să fie actualizat.
Acum trebuie să fac asta pe aproximativ 100 de rânduri din foaia 1 (H10:L10, H11:L11) și să actualizez C3, C4 corespunzătoare.... în foaia 2

Orice ajutor este foarte apreciat. Noroc.!
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL