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

Cum să înregistrați valorile modificate într-o celulă din Excel?

Cum să înregistrați fiecare valoare în schimbare pentru o celulă care se schimbă frecvent în Excel? De exemplu, valoarea inițială în celula C2 este 100, la schimbarea numărului 100 la 200, valoarea originală 100 va fi afișată automat în celula D2 pentru înregistrare. Continuați să schimbați 200 la 300, numărul 200 va fi introdus în celula D3, schimbarea 300 la 400 va afișa 300 la D4 și așa mai departe. Metoda din acest articol vă poate ajuta să o realizați.

Înregistrați valorile modificate într-o celulă cu cod VBA


Înregistrați valorile modificate într-o celulă cu cod VBA

Codul VBA de mai jos vă poate ajuta să înregistrați fiecare valoare schimbătoare într-o celulă din Excel. Vă rugăm să faceți următoarele.

1. În foaia de lucru conține celula pe care doriți să înregistrați valorile modificate, faceți clic dreapta pe fila foaie și apoi faceți clic pe Afișați codul din meniul contextual. Vedeți captura de ecran:

2. Apoi Microsoft Visual Basic pentru aplicații se deschide fereastra, copiați mai jos codul VBA în fereastra Cod.

Cod VBA: înregistrați valorile modificate într-o celulă

Dim xVal As String
'Update by Extendoffice 2018/8/22
Private Sub Worksheet_Change(ByVal Target As Range)
    Static xCount As Integer
    Application.EnableEvents = False
    If Target.Address = Range("C2").Address Then
        Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
    Else
        If xVal <> Range("C2").Value Then
         Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
        End If
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    xVal = Range("C2").Value
End Sub

notițe: În cod, C2 este celula pe care doriți să o înregistrați toate valorile sale schimbătoare. D2 este celula pe care o veți completa prima valoare schimbătoare a lui C2.

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

De acum înainte, de fiecare dată când modificați valorile din celula C2, valorile anterioare modificate vor fi înregistrate în D2 și celulele de sub D2.


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 (50)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hi


Acest lucru funcționează foarte bine dacă valoarea din C2 este introdusă de fiecare dată, dar nu funcționează dacă C2 conține o formulă. Există o modalitate de a face același lucru, dar cu o formulă în C2?


Mulțumesc pentru această soluție ușoară.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dacă aflați cum să îl utilizați dacă C2 conține o formulă, vă rog să-mi spuneți cum ați procedat. Se pare că nu găsesc cum să fac nicăieri pe internet.
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Codul a fost optimizat. Vă rugăm să încercați și vă mulțumesc pentru comentariu.

Dim xVal As String
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
Application.EnableEvents = Fals
Dacă Target.Address = Range("C2").Adresa Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Altfel
Dacă xVal <> Range("C2").Valoare Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("C2").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
HAI,



VBS-ul de mai sus DOAR C2 MUTA LA D2,



INEED C2 LA C55 MUTAȚI LA D2 LA D55



PUTEȚI AJUTA ȘI MI TRIMITEȚI alexmathew33@gmail.com
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă rog să mă ajutați în scenariul de mai jos:
Din foaia 1:
A1=VALOARE (Modificări datorate RTD cu formulă)
B2= VALUE1 (Modificări datorate RTD cu formulă)

Copiați toate valorile anterioare celulele A1, B1 în Sheet2 din coloanele M, NOF Același excel sau Sheet1 of New Workbook

Vă rugăm să împărtășiți cu mine la melukotahari@gmail.com

-Melukota
Acest comentariu a fost redus la minimum de moderatorul de pe site
PUTEM OBȚIUNE VBS PENTRU CELE DE MAI SUS
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă celula C2 este o formulă? Cum înregistrez valorile lui C2 dacă este o formulă?
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Codul a fost optimizat. Vă rugăm să încercați și vă mulțumesc pentru comentariu.

Dim xVal As String
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
Application.EnableEvents = Fals
Dacă Target.Address = Range("C2").Adresa Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Altfel
Dacă xVal <> Range("C2").Valoare Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("C2").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
HAI,



VBS-ul de mai sus DOAR C2 MUTA LA D2,



INEED C2 LA C55 MUTAȚI LA D2 LA D55



PUTEȚI AJUTA ȘI MI TRIMITEȚI alexmathew33@gmail.com
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, apreciez foarte mult acest tutorial... Încerc să înregistrez valoarea modificată pe o altă foaie de calcul. De exemplu, vreau să înregistrez valoarea foii1 C2 pe foaia2 D2. Puteți furniza un cod ajustat?
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Înregistrările pot fi pe orizontală în loc de pe verticală?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, Ar fi posibil ca această macrocomandă să înregistreze două celule separate în două coloane separate? ie. Pot înregistra Toate valorile din A1 în coloana B și toate valorile lui C1 în coloana D?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Vă rugăm să încercați metoda din acest articol:
Cum să vă amintiți sau să salvați valoarea celulei anterioare a unei celule modificate în Excel?
https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Acest comentariu a fost redus la minimum de moderatorul de pe site
mulțumesc pentru asta, dar în loc să continui pentru totdeauna, cum aș putea reporni înapoi la prima celulă după X de ori?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Vrei să spui că, după ce ai înregistrat X sumă de ori, vrei să repornești înapoi la prima valoare de înregistrare?
Scuze, nu sunt sigur că am primit întrebarea ta. Ar fi bine dacă ați putea oferi o captură de ecran a ceea ce încercați să faceți.
Acest comentariu a fost redus la minimum de moderatorul de pe site
mulțumesc

dar ce pot face dacă trebuie să o repet pentru mai multe celule
Acest comentariu a fost redus la minimum de moderatorul de pe site
mulțumesc

dar ce pot face dacă trebuie să o repet pentru un raw
Acest comentariu a fost redus la minimum de moderatorul de pe site
Peki bu kaydı yatay olarak nasıl kaydedeceğiz. Satırlara değil Sütunlara kaydetmesini istiyorum. Teşekkürler
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum salvez numărul de îndată ce este generat, nu după generarea unui număr nou? Problema pe care o am este că numărul nu este înregistrat imediat, ci după ce este creat un al doilea număr; asta înseamnă că nici celula pe care o înregistrez, nici celula care este țintă nu au numărul... cum pot înregistra imediat ce numărul este generat? Multumesc pentru ajutor!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna John,
Îmi pare rău că nu te pot ajuta cu asta. Bine ați venit să postați orice întrebare pe forumul nostru: https://www.extendoffice.com/forum.html. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, Ar fi posibil să aplicați acest lucru pentru mai multe celule?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut! Mulțumesc pentru cod, dar am o întrebare

Există o modalitate de a modifica codul, astfel încât să înregistreze valoarea în celulă zilnic, sau în anumite zile, pe care o specific într-o coloană separată?


Multumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Incearca asta

Dim xVal As String
Dim iVal ca întreg
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
iVal = Application.WorksheetFunction.Count(Range("F:F"), 1)
xCount = iVal
Application.EnableEvents = Fals
Dacă Target.Address = Range("C2").Adresa Atunci
Interval(„E3”).Offset(xCount, 0).Valoare = Interval(„C2”).Valoare
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
Altfel
Dacă xVal <> Range("C2").Valoare Atunci
Interval(„E3”).Offset(xCount, 0).Valoare = Interval(„C2”).Valoare
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("C2").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am încercat acest cod pentru celula C2 care conține valori DDE care se schimbă secundă cu secundă. Folosesc următorul cod, dar nu funcționează.

Dim xVal As String
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
Application.EnableEvents = Fals
Dacă Target.Address = Range("C2").Adresa Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Altfel
Dacă xVal <> Range("C2").Valoare Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("C2").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Ce versiune de Excel folosești?
Acest comentariu a fost redus la minimum de moderatorul de pe site
funcționează când introduc datele, nu funcționează când transmit date în timp real direct către această celulă (=RTD(.....)). cum pot să funcționeze cu RTD?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc foarte mult pentru tutoriale, îmi place să știu dacă există o modalitate de a face ca o celulă să se comporte ca un calculator normal.
adică această celulă ar trebui să fie capabilă să însumeze cifrele care apar într-o altă celulă, păstrând în același timp ultima cifră cumulată vizibilă.
Această altă celulă va fi celula de introducere a tastei sau celula activă.
Exemplu:
Celula 1: =2*5, Răspunsul apare în Celula 2,
Celula 1: =3*6.8, Răspunsul este adăugat la valoarea anterioară rezultată din (2*5) și apare în continuare în celula 2.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Formula de mai sus nu funcționează pentru formule, ci doar pentru introducerea manuală. Există vreo modalitate de a modifica codarea pentru a o face să funcționeze pentru celulele care conțin formulă?



Dim xVal As String
'Actualizare până la Extendoffice 2018/8/22
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
Application.EnableEvents = Fals
Dacă Target.Address = Range("C2").Adresa Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Altfel
Dacă xVal <> Range("C2").Valoare Atunci
Interval("D2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("C2").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Vă rugăm să încercați VBA de mai jos.



Dim xVal As String

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)

Static xCount ca întreg

Application.EnableEvents = Fals

Dacă Target.Address = Range("C2").Adresa Atunci

Interval("D2").Offset(xCount, 0).Value = xVal

xCount = xCount + 1

Altfel

Dacă xVal <> Range("C2").Valoare Atunci

Interval("D2").Offset(xCount, 0).Value = xVal

xCount = xCount + 1

Final, dacă

Final, dacă

Application.EnableEvents = Adevărat

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

xVal = Interval("C2").Valoare

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
nu merge pentru formule
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cu toate acestea, această lume bună, trebuie să aplic acest cod la 2 celule diferite, salvând valorile care se schimbă pentru fiecare celulă în coloane separate, corespunzătoare. Cum poate fi modificat codul? Mulțumiri.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Vă rugăm să încercați metoda din acest articol:

Cum să vă amintiți sau să salvați valoarea celulei anterioare a unei celule modificate în Excel?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil să se adapteze și să se utilizeze cu DDE/RTD? Funcționează bine la schimbarea manuală a celulelor, dar nu și cu DDE/RTD.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Poate fi schimbat pentru a funcționa pentru mai multe celule dintr-o singură foaie de lucru?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Vă rugăm să încercați metoda din acest articol:

Cum să vă amintiți sau să salvați valoarea celulei anterioare a unei celule modificate în Excel?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna! Am încercat să folosesc acest cod pentru a înregistra fiecare modificare a valorii unei anumite celule. Cu toate acestea, mă întrebam dacă cineva m-ar putea ajuta modificându-l astfel încât modificarea valorii să fie colectată într-o filă DIFERITĂ și, de asemenea, să fie salvată de fiecare dată când registrul de lucru este închis. Deoarece se resetează de fiecare dată când registrul de lucru este deschis fără a salva valorile anterioare. Cod: Dim xVal As String
'Actualizare până la Extendoffice 2018/8/22
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Static xCount ca întreg
Application.EnableEvents = Fals
Dacă țintă.Adresă = Interval("J7").Adresă Atunci
Interval("AB2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Altfel
Dacă xVal <> Range("J7").Valoare Atunci
Interval("AB2").Offset(xCount, 0).Value = xVal
xCount = xCount + 1
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Interval("J7").Valoare
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, mulțumesc pentru cele de mai jos. Întrebare rapidă... poți să resetați acest lucru uneori, astfel încât, la cererea dvs., să puteți obține macro-ul pentru a șterge toate numerele anterioare și a începe din nou înregistrarea numerelor din celula D2? Momentan sunt înregistrate numerele D2, D3, D4, D5, D6 etc
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