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

Cum se completează automat data în celulă atunci când celula adiacentă este actualizată în Excel?

Uneori, când actualizați o celulă dintr-o anumită coloană, poate doriți să marcați cea mai recentă dată despre actualizare. Acest articol va recomanda o metodă VBA pentru a rezolva această problemă. Când celula este actualizată, celula adiacentă va fi completată automat cu data curentă imediat.

Completați automat data curentă în celulă atunci când celula alăturată este actualizată cu codul VBA


Completați automat data curentă în celulă atunci când celula alăturată este actualizată cu codul VBA

Presupunând că datele pe care trebuie să le actualizați localizează în coloana B și când celula din coloana B este actualizată, data curentă va fi populată în celula adiacentă a coloanei A. Vedeți captura de ecran:

Puteți rula următorul cod VBA pentru a rezolva această problemă.

1. Faceți clic dreapta pe fila de foaie de care aveți nevoie pentru a completa automat data pe baza celulei adiacente actualizate, apoi faceți clic pe Afișați codul din meniul cu clic dreapta.

2. În fereastra Microsoft Visual Basic pentru aplicații, vă rugăm să copiați și să lipiți codul VBA de mai jos în fereastra Cod.

Cod VBA: completează automat data curentă într-o celulă atunci când celula adiacentă este actualizată

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

notițe:

1). În cod, B: B înseamnă că datele actualizate se află în coloana B.
2). -1 indică faptul că data curentă va fi populată în coloana din stânga a coloanei B. Dacă doriți ca data curentă să fie populată în coloana C, modificați -1 la 1.

3. presa Alt + Q tastele în același timp pentru a închide Microsoft Visual Basic pentru aplicații fereastră.

De acum înainte, la actualizarea celulelor din coloana B, celula adiacentă din coloana A va fi completată imediat cu data curentă. Vedeți captura de ecran:


Legate de articole:


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 (46)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc. Acest lucru a ajutat foarte mult. Dar când șterg un rând sau adaug un rând, aceasta dă o eroare de rulare 13 Tip nepotrivire. Cum să abordăm această problemă. Se așteaptă o revenire cât mai curând posibil.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dragă Jishnu,
Problema mentionata de tine nu apare in cazul meu. Vă rugăm să furnizați versiunea dvs. Office?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am un set de foi de lucru Excel intitulate luni, marți, miercuri etc. Trebuie să pun data de început luni în celula a1 și să completeze datele ulterioare de marți până vineri în celula a1 de pe fiecare dintre acele foi. Nu cunosc deloc codul, așa că trebuie doar să știu care este formula simplă pe care o pot introduce acolo. :) mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Draga Leah,
Trebuie doar să utilizați formula =luni!A1+1 pe foaia de marți, =marți!A1+1 pe foaia de miercuri și așa mai departe...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Se poate realiza acest lucru pe o celulă care conține o formulă?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dragă Tammy,
Codul a fost actualizat. Poate fi realizat pe o celulă care conține o formulă acum. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc, funcționează bine, dar când vine vorba de închidere și salvare, primesc o eroare că caracteristica „proiect VB” nu poate fi salvată într-un registru de lucru fără macro. Vă rugăm consultaţi
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc, funcționează bine, dar când vine vorba de închidere și salvare, primesc o eroare că caracteristica „proiect VB” nu poate fi salvată într-un registru de lucru fără macro. Vă rugăm consultaţi
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie doar să „salvați ca” un registru de lucru cu macrocomandă Excel...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Puteți utiliza această funcție de două ori pe aceeași foaie? adică dacă aș dori să fac intrări în coloana B în coloana de marcare temporală A ȘI să pun intrări în coloana D în coloana de marcare temporală C. Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am făcut acest lucru să funcționeze făcând următoarele:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
„Actualizat de Extendoffice 2017/10/12
Dim xRg As Range, xCell As Range
La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("B:B"))) Este Nimic) Atunci _
Target.Offset(0, -1) = Data
Application.EnableEvents = Fals
Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
Dacă (Nu xRg este nimic) atunci
Pentru fiecare xCell în xRg
xCell.Offset(0, -1) = Data
Pagina Următoare →
Final, dacă
Application.EnableEvents = Adevărat
Final, dacă


La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("D:D"))) Este Nimic) Atunci _
Target.Offset(0, -1) = Data
Application.EnableEvents = Fals
Set xRg = Application.Intersect(Target.Dependents, Me.Range("D:D"))
Dacă (Nu xRg este nimic) atunci
Pentru fiecare xCell în xRg
xCell.Offset(0, -1) = Data
Pagina Următoare →
Final, dacă
Application.EnableEvents = Adevărat
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Poate cineva să sugereze un cod pentru când introduc un număr în coloana A și coloana B și în coloana CI am păstrat o formulă precum coloana A + coloana B. Acum am nevoie de un cod vba care să poată oferi ora și data în coloana D ori de câte ori coloana C se schimbă nu la inserarea numerelor în coloana A și B.
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Orice întrebare despre Excel, vă rugăm să nu ezitați să postați pe forumul nostru: https://www.extendoffice.com/forum.html.
Veți primi mai multe asistențe despre Excel de la profesionistul nostru Excel.
Acest comentariu a fost redus la minimum de moderatorul de pe site
HI - nou în VBA - vreau să fac bucla codul - Cod VBA: populați automat data curentă într-o celulă atunci când celula adiacentă este actualizată, astfel încât după ce o celulă este actualizată cu o dată, apoi treceți să spuneți „J:J” și actualizați K cu data și apoi faceți încă 2 ori. Nu sunteți sigur dacă este o buclă sau pentru? Mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu contează... Am încercat răspunsul lui John de mai jos și funcționează - mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am folosit acest cod pentru a completa automat o coloană și acum doresc să populez automat mai multe coloane pe baza datei introduse în coloana H. Cu alte cuvinte, odată ce o dată este introdusă, pot completa automat coloanele pentru a adăuga data 90, 60 și 30 de zile. ?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Tracey,
Următorul cod VBA vă poate ajuta să rezolvați problema. Vă rugăm să încercați.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim xRg As Range, xCell As Range
Dim xRgAddress ca șir
xRgAddress = „H:H”
La data de eroare CV următoare
Dacă (Target.count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range(xRgAddress)) Este Nimic) atunci
Target.Offset(0, 1) = Data + 90
Target.Offset(0, 2) = Data + 60
Target.Offset(0, 3) = Data + 30
Final, dacă
Application.EnableEvents = Fals
Set xRg = Application.Intersect(Target.Dependents, Me.Range(xRgAddress))
Dacă (Nu xRg este nimic) atunci
Pentru fiecare xCell în xRg
xCell.Offset(0, 1) = Data + 90
xCell.Offset(0, 2) = Data + 60
xCell.Offset(0, 3) = Data + 30
Pagina Următoare →
Final, dacă
Application.EnableEvents = Adevărat
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut. Încerc să folosesc „Populare automată data curentă în celulă când celula adiacentă este actualizată cu codul VBA”. Acest lucru funcționează pe foaia 1, dar mai am alte 11 foi pe care am nevoie de cod pentru a lucra. Vă rugăm consultaţi. Nu sunt deloc înțelept de VBA, așa că apreciez orice ajutor pe care îl pot obține!

Multumesc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Gwen,
Vă rugăm să repetați pașii pentru a copia codul în alte foi. Poate fi plictisitor, dar funcționează.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am nevoie de ajutor. Încerc să populez data curentă în coloana A dacă sunt modificate celule de la B la N. Offset-ul mă aruncă. Poate fi scris acest cod pentru a completa automat data în coloana A în mod specific?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Joe,
Codul VBA de mai jos vă poate ajuta să rezolvați problema. Vă rugăm să încercați și vă mulțumesc pentru comentariu.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
„Actualizat de Extendoffice 20190924
Dim xRg As Range, xCell As Range
Dim xInt ca întreg
La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("B:N"))) este Nimic) atunci
Application.EnableEvents = Fals
xInt = Target.Row
Me.Range(„A” & xInt).Value = Data
Application.EnableEvents = Adevărat
Final, dacă
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, Pot seta data și ora de populare?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Abbey,
În codul de mai sus, înlocuiți această linie
„xCell.Offset(0, -1) = Data”
cu
„xCell.Offset(0, -1) = Format(Acum(), „aaaa-LL-zz hh:mm:ss”)”.
Sper că pot ajuta. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
asta nu a adăugat timpul în... există o altă cale?
Acest comentariu a fost redus la minimum de moderatorul de pe site
trebuie să-l schimbați în 2 locuri, dacă vedeți codul original, data este în 2 locuri, schimbați-l pe ambele cu Format(Acum(), "aaaa-LL-zz hh:mm:ss")
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, există o modalitate de a face coloana (A) populată automat cu o dată când introduceți o valoare în orice celulă din același rând?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Harry,
Codul VBA de mai jos vă poate ajuta să rezolvați problema. Vă rugăm să specificați intervalul cât mai mult posibil în cod. Multumesc pentru comentariu.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
„Actualizat de Extendoffice 20191017
Dim xRg As Range, xCell As Range
Dim xInt ca întreg
La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("B:BP"))) Este Nimic) Atunci
Application.EnableEvents = Fals
xInt = Target.Row
Me.Range(„A” & xInt).Value = Data
Application.EnableEvents = Adevărat
Final, dacă
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cred că este necesară o schimbare și la linia 7...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Știe cineva dacă există o modalitate de a completa și de a bloca automat pentru a împiedica utilizatorul să schimbe data? Când blochez celulele și protejez documentul, celulele nu se populează deloc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu vreau să introduc data, ci o valoare constantă în celulă, de exemplu: un număr sau un șir de text. Vă rugăm să sugerați modificările codului pentru același lucru.
mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Dacă doriți să introduceți un număr, înlocuiți textul Data cu număr direct în cod. Pentru a introduce un șir de text, înlocuiți textul Data în codul cu „tu șir de text” (sunt incluse ghilimelele duble).
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
„Actualizat de Extendoffice 2020/09/28
Dim xRg As Range, xCell As Range
La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("B:B"))) Este Nimic) Atunci _
Target.Offset(0, -1) = „un șir de text” „Sau introduceți direct un număr
Application.EnableEvents = Fals
Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
Dacă (Nu xRg este nimic) atunci
Pentru fiecare xCell în xRg
xCell.Offset(0, -1) = „un șir de text” „Sau introduceți direct un număr
Pagina Următoare →
Final, dacă
Application.EnableEvents = Adevărat
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Introduc acest cod în registrul meu de lucru Excel și nu se întâmplă nimic. Poate cineva te rog ajuta? În mod ideal, aș dori când ceva este pus în coloana A, timpul ar fi trecut în coloana B.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună chapo, Încearcă codul de mai jos. Sper că pot ajuta. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
„Actualizat de Extendoffice 2020/10/12
Dim xRg As Range, xCell As Range
La data de eroare CV următoare
Dacă (Target.Count = 1) Atunci
Dacă (Nu Application.Intersect(Target, Me.Range("A:A")) este Nimic) atunci _
Target.Offset(0, 1) = Timp
Application.EnableEvents = Fals
Set xRg = Application.Intersect(Target.Dependents, Me.Range("A:A"))
Dacă (Nu xRg este nimic) atunci
Pentru fiecare xCell în xRg
xCell.Offset(0, 1) = Timp
Pagina Următoare →
Final, dacă
Application.EnableEvents = Adevărat
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, folosesc codul dvs. ca referință. Vreau să întreb dacă este posibil să aibă următoarele:1. Preveniți înregistrările de date duplicat2. Aveți cele 2 intrări macro în același timp: Target.Offset(0,-1), Target,Offset(0,1)3. Este posibil să inserați automat o imagine în celulă?
Încercam să-mi dau seama, dar se pare că nu găsesc resurse online care să mă poată ajuta
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, această formulă funcționează excelent. Cu toate acestea, există o modalitate de a seta ca să actualizeze celula din coloana A numai dacă este goală?  
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Matt, Îmi pare rău, nu prea înțeleg ce vrei să spui. Poți încerca să fii mai precis cu privire la întrebarea ta sau să oferi o captură de ecran a ceea ce încerci să faci?
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