Excel'de bir hücrenin önceki değerini nasıl hatırlayabilir veya kaydedebilirim?
Excel'de bir hücreyi düzenlediğinizde, önceki değer anında üzerine yazılır ve geri alma işlemi yapmadığınız sürece artık görünmez hale gelir. Bu önceki değeri karşılaştırma, denetim veya geri alma amacıyla saklamanız gerekiyorsa, her değişiklikten önce kısa bir VBA rutiniyle eski değeri otomatik olarak bir yardımcı sütuna kaydedebilirsiniz. Alternatif olarak, dosyanız OneDrive veya SharePoint'te saklanıyorsa, Microsoft 365’teki “Değişiklikleri Göster” ve “Sürüm Geçmişi” gibi araçlarla değişiklikleri inceleyebilirsiniz. Bu eğitim, iş akışınıza ve yönetişim ihtiyaçlarınıza en uygun yöntemi seçmeniz için her iki yaklaşımı da ayrıntılı şekilde açıklar.
➤ Microsoft 365 — Değişiklikleri Göster ve Sürüm Geçmişi ile önceki ve güncellenmiş hücre değerlerini inceleyin
Excel'de VBA koduyla önceki hücre değerini kaydedin
Aşağıdaki ekran görüntüsünde gösterildiği gibi bir tablonuz olduğunu varsayalım. C sütunundaki herhangi bir hücre düzenlendiğinde, önceki değerini G sütunundaki ilgili hücreye kaydetmek ya da eski değeri ileride başvurmak ve incelemek üzere otomatik olarak bir Yorum olarak eklemek isteyebilirsiniz. Bu yaklaşım, devam eden veri girişi veya kalite kontrolleri sırasında eski değerlere hızlıca başvurmanız ya da sürekli bir günlük tutmanız gerektiğinde özellikle yararlıdır.

Temel senaryo: Stok takibi, günlük kayıtlar veya finansal izleme gibi düzenli olarak değişiklikleri incelediğiniz ya da uzlaştırdığınız çalışma sayfalarında, önceki değerlerin görünür olması zamanı kazandırır ve yanlışlıkla veri kaybını en aza indirir.
Başlamak için öncelikle önceki değerleri kaydetmek istediğiniz çalışma sayfasını açın. Ardından aşağıdaki adımları uygulayın:
1. Sayfa sekmesine sağ tıklayın ve kısayol menüsünden **"Kodu Görüntüle"** seçeneğini seçin—bu işlem, Visual Basic for Applications (VBA) düzenleyicisini açar. Ekran görüntüsüne göz atın:

2. "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu Kod penceresine yapıştırın. Bu makro, hedef sütundaki hücrelerin önceki değerlerini başka bir sütuna kaydetmenizi sağlar.
Bu betiği çalıştırmadan önce koddaki hedef sütun referanslarını güncellediğinizden emin olun. Örneklerde "C:C", değişikliklerin izleneceği sütunu belirtirken; "7" sayısı ise önceki değerlerin saklandığı G sütununa karşılık gelir. Düzeninize uygun şekilde bu referansları özelleştirebilirsiniz.
VBA kodu: Önceki hücre değerini başka bir sütundaki hücreye kaydetme
Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xCell As Range
Dim xDCell As Range
Dim xHeader As String
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Previous value :"
x = xDic.Keys
For I = 0 To UBound(xDic.Keys)
Set xCell = Range(xDic.Keys(I))
Set xDCell = Cells(xCell.Row, 7)
xDCell.Value = ""
xDCell.Value = xDic.Items(I)
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
On Error GoTo Label1
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Set xDependRg = Target.Dependents
If xDependRg Is Nothing Then GoTo Label1
If Not xDependRg Is Nothing Then
Set xDependRg = Intersect(xDependRg, Range("C:C"))
End If
Label1:
Set xRg = Intersect(Target, Range("C:C"))
If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = xDependRg
ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
Set xChangeRg = xRg
Else
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
For I = 1 To xChangeRg.Areas.Count
Set xRgArea = xChangeRg.Areas(I)
For J = 1 To xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Formula
Next
Next
Set xChangeRg = Nothing
Set xRg = Nothing
Set xDependRg = Nothing
Application.EnableEvents = True
End Sub Önceki değeri bir Yorum olarak saklamak daha uygunsa—hızlı görüntüleme ve açıklama için yararlıdır—hedef sütundaki bir hücre her değiştirildiğinde bunu otomatik olarak gerçekleştiren aşağıdaki VBA kodunu kullanın:
VBA kodu: Önceki hücre değerini yoruma kaydetme
Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xCell As Range
Dim xHeader As String
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Previous value :"
For I = 0 To UBound(xDic.Keys)
Set xCell = Range(xDic.Keys(I))
If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
With xCell
.AddComment
.Comment.Visible = False
.Comment.Text xHeader & vbCrLf & xDic.Items(I)
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
On Error GoTo Label1
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Set xDependRg = Target.Dependents
If xDependRg Is Nothing Then GoTo Label1
If Not xDependRg Is Nothing Then
Set xDependRg = Intersect(xDependRg, Range("C:C"))
End If
Label1:
Set xRg = Intersect(Target, Range("C:C"))
If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = xDependRg
ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
Set xChangeRg = xRg
Else
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
For I = 1 To xChangeRg.Areas.Count
Set xRgArea = xChangeRg.Areas(I)
For J = 1 To xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Text
Next
Next
Set xChangeRg = Nothing
Set xRg = Nothing
Set xDependRg = Nothing
Application.EnableEvents = True
End Sub Parametre notları:
- Number7 ifadesi,
Cells(xCell.Row,7)içinde G sütununu belirtir. Önceki değeri başka bir sütunda saklamak istiyorsanız, bu değeri değiştirin. Range("C:C"), hangi sütundaki değişikliklerin izleneceğini belirler. Gerektiğinde bunu "D:D" gibi başka bir sütunla güncelleyin.
3. Betik için sözlük desteğini etkinleştirmek üzere VBA Düzenleyici’de “Araçlar” > “Referanslar…” seçeneğine gidin. “Referanslar – VBAProject” iletişim kutusu açıldığında “Microsoft Scripting Runtime” seçeneğini işaretleyin ve aşağıda gösterildiği gibi “Tamam”a tıklayın:

4. VBA düzenleyicisini kapatıp çalışma sayfanıza dönmek için "Alt" + "Q" tuşlarına basın.
Bu andan itibaren C sütunundaki bir değer değiştirildiğinde Excel, önceki değeri otomatik olarak G sütununa kopyalayacak veya ilgili hücrenin yorumuna ekleyecektir. Böylece değişiklikleri kolayca izleyebilir, doğrulayabilir ve geçmiş verilere inceleme, denetim veya hata düzeltme amacıyla erişebilirsiniz.
Diğer hücrelere önceki hücre değerlerini kaydetmenin örnek çıktısı:

Yorumlara önceki hücre değerlerini kaydetmenin örnek çıktısı:

İpuçları ve sorun giderme:
- VBA makroları beklendiği gibi çalışmazsa, "Dosya" > "Seçenekler" > "Güven Merkezi" > "Makro Ayarları" altındaki makro güvenlik ayarlarını kontrol edin ve "Tüm makroları etkinleştir" seçeneğini seçin.
- Değerler beklenen konuma kaydedilmiyorsa, sütun referanslarınızı gözden geçirin.
- Sorunlar devam ederse, yukarıda belirtildiği gibi “Microsoft Scripting Runtime” kitaplığının doğru şekilde etkinleştirildiğinden emin olun.
Microsoft 365 — Önceki ve güncellenmiş hücre değerlerini Değişiklikleri Gösterve Sürüm Geçmişi
Microsoft 365'te, eski İzleme Değişiklikleri özelliğine gerek kalmadan düzenlemeleri denetleyebilirsiniz — kimin neyi ne zaman değiştirdiğini ve önceki/sonraki değerleri dahil! Hücre düzeyinde ayrıntılar için Değişiklikleri Göster özelliğini, tüm dosya anlık görüntülerini ve geri yüklemeleri görmek içinse Sürüm Geçmişi özelliğini kullanın.
Gereksinimler
- Çalışma kitabı, OneDrive veya SharePoint üzerine kaydedildi.
- Bir Microsoft 365 hesabıyla oturum açıldı; Otomatik Kaydet özelliği Açık.
- Modern biçim ().xlsx); eski Paylaşılan Çalışma Kitabı (Eski) kullanılmıyor.
Değişiklikleri Göster (hücre düzeyinde denetim)
1. Bulutta kaydedilen çalışma kitabını açın ve bölme panelini açmak için Gözden Geçir ▸ Değişiklikleri Göster yolunu izleyin.
2. (İsteğe bağlı) Sonuçları daraltmak için öncelikle bir sayfa veya aralık seçin.
3. Girişleri inceleyerek düzenleyiciyi, zaman damgasını ve eski → yeni değerleri görün; ilgili hücreye gitmek için bir girişe tıklayın.
Sürüm Geçmişi (karşılaştır ve geri yükle)
1. Şuraya gidin: Dosya ▸ Bilgi ▸ Sürüm Geçmişi.
2. Karşılaştırmak için önceki bir sürümü açın; hücreleri dışarı kopyalayın veya tüm dosyayı geri yüklemek için Geri Yükle seçeneğine tıklayın.
- Değişiklikleri Göster gri mi görünüyor?OneDrive veya SharePoint’e kaydedin, Otomatik Kaydet özelliğini açın ve Windows sürümünüz 10 veya üzeri, Excel sürümünüz ise 2013’ten yeniyse, en iyi sonucu almak için bu dosyayı dönüştürün ()Dosya ▸ Bilgi ▸ Dönüştür). Ayrıca, Paylaşılan Çalışma Kitabı (Eski) özelliğinin kapalı olduğundan emin olun. Sorun masaüstü sürümünde devam ederse, Excel for the web’i deneyin.
- Güvenlik/Kilitler: Çalışma kitabı veya sayfa koruması, şifreleme ya da IRM, Değişiklikleri Göster özelliğini devre dışı bırakabilir.
- Yerel dosyalar: Yalnızca yerel olarak saklanan dosyalar için tam geçmiş tutulmaz; en iyi sonuçlar için Sürüm Geçmişini bulut üzerinden kullanın.
- Hücrelere eski değerler kaydedilsin mi? Değişiklikleri Göster ve Sürüm Geçmişi denetim araçlarıdır. Her düzenleme sırasında "önceki değeri" bir yardımcı sütuna kaydetmek istiyorsanız, küçük bir
Worksheet_ChangeVBA olay işleyicisi kullanın.
Avantajlar
- Kimin ne zaman değiştirdiğini ve önceki/sonraki değerleriyle birlikte otomatik olarak denetler; makroya gerek kalmaz.
- OneDrive/SharePoint'te saklandığında Windows, Mac ve web dahil çoklu platformlarda sorunsuz çalışır.
Dezavantajlar
- Bulut depolama ve Otomatik Kaydet özelliğini gerektirir; bazı geçici düzenlemeler için sınırlı ayrıntı sağlar.
- Önceki değerleri hücrelere doldurmaz; iş mantığınız bunu gerektiriyorsa VBA kullanın.
En İyi Office Üretkenlik Araçları
Excel becerilerinizi Kutools for Excel ile geliştirin ve verimlilikte hiç yaşamadığınız bir deneyim yaşayın.Kutools for Excel, üretkenliği artırmak ve Zamanı Kaydet için 300’den fazla gelişmiş özelliğe sahiptir.İhtiyacınız olan özelliği hemen edinmek için buraya tıklayın…
Office Tab, Office uygulamalarına sekmeli bir arayüz kazandırarak işlerinizi çok daha kolay hale getirir.
- Word, Excel, PowerPoint, Publisher, Access, Visio ve Project'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
- Belgeleri yeni pencerelerde değil, aynı pencerenin yeni sekmelerinde açıp oluşturun.
- Günlük üretkenliğinizi %50 artırır ve her gün yüzlerce fare tıklamasından tasarruf etmenizi sağlar!
Tüm Kutools eklentileri — tek bir kurulum dosyasında!
Kutools for Office paketi, Excel, Word, Outlook ve PowerPoint eklentilerini ve ayrıca Office Tab Pro’yu içeren kapsamlı bir çözümdür; Office uygulamalarında çalışan ekipler için idealdir.
- Hepsi bir arada paket— Excel, Word, Outlook ve PowerPoint eklentileri + Office Tab Pro
- Tek kurulum, tek lisans— birkaç dakikada hazır (MSI uyumlu)
- Birlikte daha iyi çalışır— Office uygulamalarında akıcı üretkenlik
- 30 günlük tam özellikli deneme— kayıt gerekmez, kredi kartı gerekmez
- En iyi fiyat performans— ayrı ayrı eklenti satın almaya göre tasarruf sağlar