İpucu: Digər dillər Google-tərcümə olunur. Sizi ziyarət edə bilərsiniz English bu linkin versiyası.
Daxil ol
x
or
x
x
Qeydiyyatdan
x

or

Excel-də dəyişmiş bir hücrenin əvvəlki hüceyrə dəyərini necə yadda saxlamaq və yadda saxlamaq olar?

Normalda, yeni məzmunlu bir hüceyrəni yeniləşdirərkən əvvəlki dəyər Excel-də əməliyyatın geri qaytarılmasa örtüləcəkdir. Əvvəlki dəyəri yenilənmiş bir ilə müqayisə etmək üçün əvvəlki dəyəri saxlamaq istəyirsinizsə, əvvəlki dəyəri başqa bir hüceyrəyə və ya hüceyrə şərhə qənaət etmək yaxşı bir seçimdir. Bu yazıda göstərilən metod onu əldə etməyə kömək edəcək.

Əvvəlki cell dəyərini Excel-də VBA kodu ilə saxla


Əvvəlki cell dəyərini Excel-də VBA kodu ilə saxla


Aşağıda göstərilən ekran görüntüsü kimi bir masanız olduğunu düşünürəm. Sütun C-də hər hansı bir hüceyrə dəyişibsə, əvvəlki dəyərini müvafiq sütun G hüceyrəsinə saxlamaq və ya avtomatik olaraq şərh yazmaq istəyirik. Buna nail olmaq üçün xahiş edirəm.

1. Çalışma kitabında güncellenirken saxlayacağınız dəyər ehtiva edir, hesabatı sekmesini sağ basın və seçin Kodları baxın sağ tıklayarak menyudan. Ekran görüntüsünə baxın:

2. Açılışda Proqramlar üçün Microsoft Visual Basic Aşağıdakı VBA kodunu Kod penceresine kopyalayın.

Aşağıdakı VBA kodu müəyyən sütunun əvvəlki hüceyrə dəyərini başqa bir sütuna saxlamağa kömək edir.

VBA kodu: Əvvəlki hüceyrənin dəyərini digər sütun hüceyrəsinə qeyd edin

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

Şərhdə əvvəlki hüceyrə dəyərini qənaət etmək üçün aşağıdakı VBA kodunu tətbiq edin

VBA kodu: Şərhdə əvvəlki hüceyrə dəyərini qeyd edin

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

QeydKodu: 7 nömrəsi əvvəlki hüceyrəni saxlayacaqsınız və C: C əvvəlki hüceyrə dəyərini saxlayacaq sütundur. Xahiş edirik ehtiyaclarınıza uyğun olaraq onları dəyişdirin.

3. klik Tools > References açmaq üçün Referanslar - VBAProject informasiya qutusunu kontrol edin Microsoft Scripting Runtime qutusu və nəhayət basın OK düyməsini basın. Ekran görüntüsünə baxın:

4. Basın Dayandırmaq + Q düymələri bağlamaq üçün Proqramlar üçün Microsoft Visual Basic pəncərə.

İndi, sütun C-də güncellenen hücre dəyəri, hücrenin önceki değeri, sütun G'deki ilgili hücrelere kaydedilir ya da ekran görüntüsünün aşağıda göstərdiyi kimi qeyddə saxlanılacaq.

Əvvəlki dəyəri başqa bir hüceyrəyə:

Şərhdə əvvəlki dəyəri saxla:



Təklif olunan Məhsuldarlıq Vasitələri

Office Tab

qızıl star1 Chrome, Firefox və yeni Internet Explorer kimi Excel və digər Office proqramlarına lazımlı sekmeleri gətirin.

Excel üçün Kutools

qızıl star1 Amazing! 5 dəqiqədə məhsuldarlığınızı artırın. Heç bir xüsusi bacarıqa ehtiyac yoxdur, hər gün iki saat saxlaya bilərsiniz!

qızıl star1 300 Excel üçün yeni funksiyalar, Excel çox asan və güclü olun:

  • Veriyi ləğv etmədən Cell / Satır / Sütunları birləşdirin.
  • Bir neçə Çarşaf və İş Kitabını birləşdirin və birləşdirin.
  • Çaprazları müqayisə edin, birdən çox aralığa kopyalayın, mətni tarixə, vahidə və valyuta çevrilməsinə çevirin.
  • Rənglər, Paging Subtotals, Advanced Sort və Super Filter tərəfindən sayılan,
  • Daha çox seçin / Insert / Sil / Mətn / Biçim / Bağlantı / Yorum / Çalışma kitabları / Çalışma Qurğuları Tools ...

Excel üçün Kutools-un ekranı

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Gustavo Vier · 8 months ago
    i need something like this, but only in specific cells (ex.: G12 to show in H23 the old value)
    • To post as a guest, your comment is unpublished.
      Gustavo Vier · 8 months ago
      And other ... I need this run when a cell change by a result (EX.: A1 + B1 = C1... if I change A or B value, the script does not work - nothing happens in G cell)