Vezi cand a fost modificata o celula in Excel cu Timestamp


Ma bucur cand lumea ma intreaba cum pot face lucruri mai complicate in Excel, in acest fel primesc si eu idei de articole. Intrebarea pe care am primit-o relativ recent era urmatoarea:

Radu cum pot face o chestie de genul timestamp? adica atunci cand fac modificari in anumite coloane sa imi puna data modificarii in alta coloana

Pe langa intrebarea asta eu am mai intuit un lucru, persoana care m-a intrebat foloseste Excel-ul ca si CRM, are probabil un tabel cu informatii despre clienti care arata probabil ca si in imaginea de mai jos:

Timestamp

Vreau ca ori de cate ori se modifica ceva in coloanele A,B sau C (alea verzi) pe coloana D sa fie inserata data schimbarii. Veti vedea si mai jos ca avem aici 2 variante, varianta manuala care implica sa tin minte o combinatie de taste si varianta automata in care totul se intampla, pai, automat.



Varianta manuala

Pentru cei care nu vor sa invete lucruri noi dar sunt dispusi sa faca lucruri repetitive am chiar mai multe variante:

  1. Scrie manual data, pentru ineficienta maxima
  2. Combinatie de taste CTRL + ;
  3. Folosirea formulei Today(), dupa care facem un copy si paste values pentru ca data sa nu se schimbe maine

2 si 3 sunt solutii plauzibile, problema e ca implica ca eu sa tin minte ca de fiecare data cand modific ceva in tabel sa mai fac inca 1,2 actiuni, deci nu ne place.

Varianta automata – VBA

Radu ce e ala VBA? vine de la Visual Basic for Applications, pe scurt un limbaj de programare pe care il poti rula in MS Excel. Am folosit VBA pentru ca aveam nevoie de ceva care sa ma ajute sa detectez schimbarile la nivel de celula.

Pentru ca sa putem rula cod VBA e nevoie sa salvam workbook-ul ca si Macro Enabled Workbook.

Enable developer toolbar

Pentru ca sa incep sa ma gandesc la VBA e nevoie sa pot vedea tab-ul Developer in Excel din zona de optiuni, trebuie sa bife ca sa il vad, ca in imaginea de mai jos.

Macro

Visual basic editor

Daca tot vorbeam de cod care poate fi rulat in Excel, avem nevoie de un loc unde sa rulam acel cod nu? in imaginea de mai jos puteti vedea unde scriem codul efectiv (click pe Visual basic)

Timestamp

Vedem mai jos ca putem sa scriem cod pentru un anumit sheet, sau tot documentul. In cazul nostru asociem codul cu Sheet1.

Timestamp

Codul efectiv

Nu o sa stau sa bat campii inca 500 de cuvinte despre codul de mai jos, spun doar ca functia detecteaza cand a avut loc o schimbare de valoare si in cazul in care aceasta schimbare a fost pe coloana 1,2 sau 3, pune data de azi pe coloana 4.

Private Sub Worksheet_Change (ByVal Target As Range)

If Target.Column = 1 Then
Cells(Target.Row, 4).Value = Now
End If

If Target.Column = 2 Then
Cells(Target.Row, 4).Value = Now
End If

If Target.Column = 3 Then
Cells(Target.Row, 4).Value = Now
End If

End Sub

Si eu inca nu nou in ceea ce inseamna VBA, totusi am vazut ca nu e operatie pe creier ca sa adaptez codul de mai sus pentru ce am eu nevoie.

Rezultatul

In video-ul de mai jos puteti vedea rezultatul final:

Download

Vezi daca merge butonul de mai jos.