Excel में परिवर्तित सेल के पिछले सेल मान को कैसे याद रखें या सहेजें?
आम तौर पर, किसी सेल को नई सामग्री के साथ अपडेट करते समय, पिछले मान को कवर किया जाएगा जब तक कि एक्सेल में ऑपरेशन को पूर्ववत न किया जाए। हालाँकि, यदि आप अद्यतन मूल्य के साथ तुलना करने के लिए पिछले मूल्य को रखना चाहते हैं, तो पिछले सेल मूल्य को किसी अन्य सेल में या सेल टिप्पणी में सहेजना एक अच्छा विकल्प होगा। इस लेख की विधि आपको इसे हासिल करने में मदद करेगी।
Excel में VBA कोड के साथ पिछले सेल मान को सहेजें
Excel में VBA कोड के साथ पिछले सेल मान को सहेजें
मान लीजिए कि आपके पास नीचे दिखाए गए स्क्रीनशॉट के अनुसार एक तालिका है। यदि कॉलम सी में कोई सेल बदल गया है, तो आप उसके पिछले मान को कॉलम जी के संबंधित सेल में सहेजना चाहते हैं या स्वचालित रूप से टिप्पणी में सहेजना चाहते हैं। कृपया इसे प्राप्त करने के लिए निम्नानुसार कार्य करें।
1. वर्कशीट में वह मान शामिल है जिसे आप अपडेट करते समय सहेजेंगे, शीट टैब पर राइट-क्लिक करें और चयन करें कोड देखें राइट-क्लिक मेनू से. स्क्रीनशॉट देखें:
2. उद्घाटन में अनुप्रयोगों के लिए माइक्रोसॉफ्ट विज़ुअल बेसिक विंडो, नीचे दिए गए VBA कोड को कोड विंडो में कॉपी करें।
निम्नलिखित VBA कोड आपको निर्दिष्ट कॉलम के पिछले सेल मान को दूसरे कॉलम में सहेजने में मदद करता है।
वीबीए कोड: पिछले सेल मान को दूसरे कॉलम सेल में सहेजें
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
किसी टिप्पणी में पिछले सेल मान को सहेजने के लिए, कृपया नीचे दिया गया VBA कोड लागू करें
वीबीए कोड: टिप्पणी में पिछला सेल मान सहेजें
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
नोट: कोड में, नंबर 7 उस कॉलम G को इंगित करता है जिसमें आप पिछली सेल को सहेजेंगे, और C:C वह कॉलम है जिसमें आप पिछली सेल का मान सहेजेंगे। कृपया अपनी आवश्यकताओं के आधार पर उन्हें बदलें।
3। क्लिक करें टूल्स > संदर्भ को खोलने के लिए सन्दर्भ - वीबीएप्रोजेक्ट संवाद बॉक्स में, चेक करें माइक्रोसॉफ्ट स्क्रिप्टिंग रनटाइम बॉक्स, और अंत में क्लिक करें OK बटन। स्क्रीनशॉट देखें:
4। दबाएं ऑल्ट + Q बंद करने के लिए कुंजियाँ अनुप्रयोगों के लिए माइक्रोसॉफ्ट विज़ुअल बेसिक खिड़की.
अब से, जब कॉलम सी में सेल मान अपडेट किया जाएगा, तो सेल का पिछला मान कॉलम जी में संबंधित सेल में सहेजा जाएगा, या नीचे स्क्रीनशॉट में दिखाए गए अनुसार टिप्पणी में सहेजा जाएगा।
पिछले सेल मानों को अन्य सेल में सहेजें:
टिप्पणियों में पिछले सेल मान सहेजें:
सर्वोत्तम कार्यालय उत्पादकता उपकरण
एक्सेल के लिए कुटूल के साथ अपने एक्सेल कौशल को सुपरचार्ज करें, और पहले जैसी दक्षता का अनुभव करें। एक्सेल के लिए कुटूल उत्पादकता बढ़ाने और समय बचाने के लिए 300 से अधिक उन्नत सुविधाएँ प्रदान करता है। वह सुविधा प्राप्त करने के लिए यहां क्लिक करें जिसकी आपको सबसे अधिक आवश्यकता है...
ऑफिस टैब ऑफिस में टैब्ड इंटरफ़ेस लाता है, और आपके काम को बहुत आसान बनाता है
- Word, Excel, PowerPoint में टैब्ड संपादन और रीडिंग सक्षम करें, प्रकाशक, एक्सेस, विसियो और प्रोजेक्ट।
- नई विंडो के बजाय एक ही विंडो के नए टैब में एकाधिक दस्तावेज़ खोलें और बनाएं।
- आपकी उत्पादकता 50% बढ़ जाती है, और आपके लिए हर दिन सैकड़ों माउस क्लिक कम हो जाते हैं!