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

Ինչպե՞ս հիշել կամ պահպանել փոխված բջիջի նախորդ բջջային արժեքը Excel- ում:

Սովորաբար, նոր բովանդակությամբ բջիջը թարմացնելիս նախորդ արժեքը ծածկված կլինի, եթե չեղարկեք գործողությունը Excel-ում: Այնուամենայնիվ, եթե ցանկանում եք պահպանել նախկին արժեքը թարմացված արժեքի հետ համեմատելու համար, ապա նախորդ բջիջի արժեքը մեկ այլ բջիջում կամ բջիջի մեկնաբանության մեջ պահելը լավ ընտրություն կլինի: Այս հոդվածի մեթոդը կօգնի ձեզ հասնել դրան:

Պահպանեք նախորդ բջջային արժեքը Excel- ում VBA կոդով


Պահպանեք նախորդ բջջային արժեքը Excel- ում VBA կոդով

Ենթադրելով, որ դուք ունեք սեղան, ինչպես ցույց է տրված էկրանի նկարը: Եթե ​​C սյունակում որևէ բջիջ փոխվել է, ապա դուք ցանկանում եք պահպանել դրա նախորդ արժեքը G սյունակի համապատասխան բջիջում կամ ավտոմատ կերպով պահպանել մեկնաբանության մեջ: Դրան հասնելու համար արեք հետևյալը.

1. Աշխատաթերթում պարունակում է այն արժեքը, որը դուք կփրկեք թարմացնելիս, սեղմեք աջ սեղմեք թերթիկի ներդիրի վրա և ընտրեք Դիտել կոդը աջ կտտացնելու ցանկից: Տեսեք,

2. Բացման մեջ Microsoft Visual Basic հավելվածների համար պատուհանը, պատճենեք ներքևի VBA կոդը օրենսգրքի պատուհանում:

Հաջորդ 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 կոդը

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: սեղմեք Գործիքներ > Սայլակ բացելու համար Հղումներ - VBAP նախագիծ երկխոսության տուփ, ստուգեք Microsoft Scripting Runtime տուփը և վերջապես կտտացրեք այն OK կոճակ Տեսեք,

4. Սեղմեք ալտ + Q ստեղները փակելու համար Microsoft Visual Basic հավելվածների համար պատուհան.

Այսուհետ, երբ C սյունակում բջջային արժեքը թարմացվի, բջիջի նախորդ արժեքը կպահպանվի G սյունակի համապատասխան բջիջներում կամ կփրկվի մեկնաբանության մեջ, ինչպես ցույց են տրված ստորև նշված նկարները

Պահպանեք նախորդ բջիջների արժեքները այլ բջիջներում.

Պահպանեք նախորդ բջիջների արժեքները մեկնաբանություններում.


Գրասենյակի արտադրողականության լավագույն գործիքները

Excel-ի համար Kutools-ը լուծում է ձեր խնդիրների մեծ մասը և բարձրացնում ձեր արտադրողականությունը 80%-ով

  • Վերաօգտագործել: Արագ տեղադրեք բարդ բանաձևեր, գծապատկերներ և այն ամենը, ինչ դուք նախկինում օգտագործել եք. Ryածկագրել բջիջները գաղտնաբառով; Ստեղծեք փոստային ցուցակ և նամակներ ուղարկել ...
  • Super Formula Bar (հեշտությամբ խմբագրեք տեքստի և բանաձևի բազմաթիվ տողեր); Ընթերցանության դասավորությունը (հեշտությամբ կարդալ և խմբագրել մեծ թվով բջիջներ); Տեղադրել ֆիլտրացված տիրույթում...
  • Միաձուլել բջիջները / տողերը / սյունակները առանց տվյալների կորստի. Պառակտված բջիջների պարունակությունը; Միավորել կրկնօրինակ տողերը / սյունակները... Կանխել կրկնօրինակ բջիջները; Համեմատեք միջակայքերը...
  • Ընտրեք Կրկնօրինակ կամ Եզակի Շարքեր; Ընտրեք դատարկ շարքեր (բոլոր բջիջները դատարկ են); Super Find և Fuzzy Find շատ աշխատանքային գրքույկներում; Պատահական ընտրություն ...
  • Actշգրիտ պատճեն Բազմաթիվ բջիջներ ՝ առանց բանաձևի հղումը փոխելու; Ավտոմատ ստեղծեք հղումներ դեպի մի քանի թերթեր; Տեղադրեք փամփուշտներ, Տուփեր և ավելին ...
  • Քաղվածք տեքստ, Տեքստ ավելացնել, հեռացնել ըստ դիրքի, Հեռացնել տարածությունը; Ստեղծել և տպել էջային ենթագոտիներ; Փոխարկել բջիջների բովանդակության և մեկնաբանությունների միջև...
  • Սուպեր զտիչ (պահպանել և կիրառել ֆիլտրի սխեմաները այլ թերթերի վրա); Ընդլայնված տեսակավորում ըստ ամիս / շաբաթ / օր, հաճախականություն և ավելին; Հատուկ զտիչ համարձակ, շեղատառով ...
  • Միավորել աշխատանքային տետրերը և աշխատանքային թերթերը; Միավորել աղյուսակները ՝ հիմնված հիմնական սյունակների վրա; Տվյալները բաժանեք մի քանի թերթերի; Խմբաքանակի փոխակերպում xls, xlsx և PDF...
  • Ավելի քան 300 հզոր հատկություններ. Աջակցում է Office / Excel 2007-2021 և 365: Աջակցում է բոլոր լեզուներին: Հեշտ տեղակայում ձեր ձեռնարկությունում կամ կազմակերպությունում: Ամբողջական հնարավորություններ 30-օրյա անվճար փորձարկում: 60-օրյա գումարի վերադարձի երաշխիք:
kte էջանիշը 201905

Office Tab- ը Tabbed ինտերֆեյսը բերում է Office, և ձեր աշխատանքը շատ ավելի դյուրին դարձրեք

  • Միացնել ներդիրներով խմբագրումը և ընթերցումը Word, Excel, PowerPoint- ով, Հրատարակիչ, Access, Visio և Project:
  • Բացեք և ստեղծեք բազմաթիվ փաստաթղթեր նույն պատուհանի նոր ներդիրներում, այլ ոչ թե նոր պատուհաններում:
  • Բարձրացնում է ձեր արտադրողականությունը 50%-ով և նվազեցնում մկնիկի հարյուրավոր սեղմումները ձեզ համար ամեն օր:
officetab ներքևում
Տեսակավորել մեկնաբանությունները ըստ
մեկնաբանություններ (20)
Դեռևս գնահատականներ չկան: Եղիր առաջինը, ով կգնահատի:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ինձ պետք է նման բան, բայց միայն հատուկ բջիջներում (օրինակ՝ G12՝ H23-ում հին արժեքը ցույց տալու համար)
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Եվ այլ ... Ինձ պետք է այս գործարկումը, երբ բջիջը փոխվում է արդյունքով (ՕՐԻՆԱԿ՝ A1 + B1 = C1... եթե փոխեմ A կամ B արժեքը, սկրիպտը չի աշխատում, G բջիջում ոչինչ չի պատահում)
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջու՜յն ! Ուղղակի ուզում էի իմանալ՝ հնարավո՞ր է գրանցել բազմակի փոփոխություններ բջիջում, նկատի ունեմ, որ եթե ես տվյալները դնեմ C2 բջիջում և հետո փոխեմ այդ տվյալները այլ տեղեկությունների համար, ապա նախորդ տվյալները անցնում են G2 բջիջ (ինչպես այս գրառման մեջ. ), բայց եթե C2 բջիջում ևս մեկ անգամ փոխեմ արժեքը, ապա երկրորդ փոփոխությունը, որ կատարել եմ, անցնում է H2 բջիջ (օրինակ) և հիմա գրանցել եմ իմ հասկացած 3 շարժումների տեղեկատվությունը և դա անում եմ գրեթե 5 անգամ. ավելին (5 անգամ պահպանել նախորդ բջիջի արժեքը): Եթե ​​կարողանայիք ինձ օգնել, ես շատ կգնահատեի, քանի որ այստեղ ձեր գրառման մեջ դա միակ տեղն է, որը ես գտա, որտեղ մասամբ լուծում է իմ խնդիրը: Շնորհակալություն այս բովանդակությունը կիսելու համար!!!!
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
գտաք, թե ինչպես դա անել:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես մտածում էի «If/else» նախադասության մասին, բայց ես նոր եմ օգտագործում VBA-ն, այնպես որ, եթե ունեք մեկ այլ գրառում, որը կարող է օգնել ինձ, խնդրում եմ կիսվեք ինձ հետ և կրկին շնորհակալություն: շարունակեք կիսվել գիտելիքներով
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ինչու վերը նշված կոդը չի աշխատում DDE տվյալների համար, ես ունեմ տվյալ սյունակում, որը փոխվում է dde-ի միջոցով, բայց այն պահին, երբ ես կիրառեցի այս կոդը՝ այդ սյունակի նախորդ արժեքը մեկ այլ սյունակում պահպանելու համար, այն ոչինչ չի անում:

Դրան հասնելու համար ցանկացած օգնություն շատ գնահատելի է:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Hi!

Հիանալի ֆունկցիա, բայց ինչպե՞ս կարող է այն փոփոխվել, որպեսզի աշխատի նաև այն բջիջի հետ, որը ես ուզում եմ անգիր անել VLOOKUP պարունակող արժեքը: Ցավոք, ես չկարողացա գտնել, թե ինչ փոփոխել՝ արժեքը VLOOKUP-ից փրկելու համար: Ինչպես կա, այն չի աշխատում, երբ VLOOKUP-ները մեջտեղում են :(

Կանխավ շնորհակալություն ձեր օգնության համար:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև ձեզ, այսպիսով փոփոխեցիք ձեր ստեղծած «VBA կոդը. Պահպանեք նախորդ բջիջի արժեքը մեկ այլ սյունակի բջիջում», սակայն ես մի քանի հարց ունեմ.

1. Ինչպե՞ս է կոդը իմանում, թե որ սյունակն ունի նոր արժեքները: (որը մեկ այլ թարմացումից հետո իր արժեքները դուրս կգա մյուս սյունակում)
2. Ինչպե՞ս կարող եք սա դարձնել մակրո: Կամ գործարկել այն ավտոմատ կերպով, երբ մեկ այլ ծրագիր կանչի xlsm: ֆայլ?

Շնորհակալություն
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Սա մեկ բջջի արժեքի համար է, բայց ինչպես անել մի քանի բջիջի արժեքի համար, ես ուզում եմ, որ 4 բջջային տվյալները պահվեն և թարմացվեն այսպես, օրինակ C, D, E, F բջիջների տվյալները համապատասխանաբար G, H, I, J բջիջներում, ինչպես կարող եմ անել: խնդրում ենք օգնել
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Եթե ​​բջիջը, որը ես ուզում եմ պահպանել, բանաձև է, G բջիջը միայն կպահի բանաձևը և կհաշվարկի արժեքը: Ես պետք է պահպանեմ արժեքը, ոչ թե բանաձեւը: Ինչպես կարող եմ ասել VBA կոդը, որ արժեքը փոխվում է, չնայած բանաձևը չի փոխվում: Հարգանքներով Ֆլեմինգ
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Սա կրկնելու միջոց կա՞ բոլոր փոփոխությունների դեպքում: Ես կցանկանայի, որ Մեկնաբանությունների վանդակում հնարավորության դեպքում ցուցադրվեն բոլոր նախորդ գրառումները:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Ջենի! Ձեզ հաջողվե՞լ է լուծել այս հարցը։ Ես նաև փորձում եմ մեկնաբանությունների դաշտում հավաքել բոլոր նոր գրառումները, բայց դժվարանում եմ VBA կոդը հարմարեցնել դրան: Շնորհակալություն!
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Լավ է, եթե մուտքագրեք: Կարո՞ղ եք օգնել ինձ աշխատել այն, երբ տվյալները մուտքագրվում են, օգտագործելով նաև DDE (Dynamic Data Exchange) ֆունկցիայի արժեքը:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջու՜յն,
Կներեք, ես չեմ կարող լուծել այս խնդիրը: Առաջարկում եմ խնդիրը տեղադրել ստորև ներկայացված ֆորումում՝ Excel-ի այլ էնտուզիաստներից օգնություն ստանալու համար:
https://www.extendoffice.com/forum/kutools-for-excel.html
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
cho e hỏi chút là có cách nào để khi tính toán cộng trừ xong thì nó sẽ lưu lại giá trị khi tính toán xong kh.
ví dụ:
Giá trị ở cột A = cột B + cột C
Tín tín tín tín tín tín tín tín tín tín tín tín tín tín tín tín tạy tạy tạy tạn tạn tạn tạn tạn tạn tạy chị
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Թրունգ,
Կոդը թարմացվել է։ Խնդրում եմ, փորձեք: Շնորհակալություն Ձեր արձագանքի համար:
Հետևյալ կոդում այս տողում 5 համարը Սահմանել xDCell = Cells (xCell.Row, 5) ներկայացնում է E սյունակը, որտեղ դուք կտեղադրեք նախորդ արժեքը: A:A-ն վերաբերում է A սյունակի բջիջներին: Դուք պետք է պահպանեք այս բջիջների նախորդ արժեքները:

Dim xRg As Range
'Updated by Extendoffice 20220803
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
    Dim X
    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, 5)
        
        xDCell.NumberFormatLocal = xCell.NumberFormatLocal
        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("A:A"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("A:A"))
    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 ' xRgArea(J).Formula
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
աշխատում է միայն ձեռքով տվյալների մուտքագրման ժամանակ
բայց չի աշխատում, երբ տվյալները թարմացվում են կայքից
խնդրում ենք օգնել
շնորհակալություն
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
պահպանելով նախորդ տվյալները ձեռքով մուտքագրելիս, բայց չի աշխատում, երբ տվյալները թարմացվում են վեբ կայքից, դա ոչինչ չի անում
խնդրում ենք օգնել
շնորհակալություն
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Քամալ:
Այս խնդիրը մի քիչ բարդ է։ Տարբեր մեթոդներ փորձելուց հետո չեմ կարողանում դրանով զբաղվել։ Ցավում եմ դրա համար։
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Կարո՞ղ է որևէ մարմին օգնել այս խնդրին
Առայժմ ոչ մի մեկնաբանություն չկա
Թողեք ձեր մեկնաբանությունները
Հրապարակում որպես հյուր
×
Գնահատեք այս գրառումը.
0   Անձնավորություններ
Առաջարկվող վայրեր

Հետեւեք մեզ

Հեղինակային իրավունքի © 2009 - www.extendoffice.com. | Բոլոր իրավունքները պաշտպանված են. Powered by ExtendOffice. | | Կայքի քարտեզ
Microsoft- ը և Office- ի պատկերանշանը հանդիսանում են Microsoft Corporation- ի ապրանքային նշաններ կամ գրանցված ապրանքային նշաններ ԱՄՆ-ում և (կամ) այլ երկրներում:
Պաշտպանված է Sectigo SSL- ի կողմից