Mình cần giúp về cách tự động cập nhật giá trị gần nhất của 1 ô sang ô kế bên

Liên hệ QC

doinho

Thành viên thường trực
Tham gia
22/8/08
Bài viết
234
Được thích
9
Chào các bạn GPE,

Mình đang cần trợ giúp VBA cách làm thế nào ghi nhận lại giá trị cũ/giá trị gần nhất của 1 cell sang ô kế bên.

Ví dụ: trong file đính kèm. Mình muốn các dữ liệu gần nhất trong từng ô của cột C sẽ được ghi nhận sang cột D tương ứng (ô C1-D1, ô C2-D2, ...)

Giá trị của ô C1 mình cho bằng với ô H1. Hay nói cách khác, mình update giá trị mới trong ô H1, thì ô C1 sẽ đổi, và giá trị gần nhất trong ô C1 sẽ được ghi nhận trong ô D1.

Hiện ô C1 mình đang là 9. Mình đổi ô H1 thành 1 giá trị khác, ví dụ 11 chẳng hạn, thì giá trị ô C1 là 11 và ô D1 tự động ghi nhận giá trị là 9. Mình đổi giá trị ô H1 là 20, thì ô C1 là 20 và ô D1 sẽ là giá trị gần nhất là 11.

Các bạn giúp mình với. Cảm ơn các bạn nhiều!
 

File đính kèm

  • Tu dong cap nhat gia tri gan nhat.xlsx
    10.7 KB · Đọc: 5
Chào các bạn GPE,

Mình đang cần trợ giúp VBA cách làm thế nào ghi nhận lại giá trị cũ/giá trị gần nhất của 1 cell sang ô kế bên.

Ví dụ: trong file đính kèm. Mình muốn các dữ liệu gần nhất trong từng ô của cột C sẽ được ghi nhận sang cột D tương ứng (ô C1-D1, ô C2-D2, ...)

Giá trị của ô C1 mình cho bằng với ô H1. Hay nói cách khác, mình update giá trị mới trong ô H1, thì ô C1 sẽ đổi, và giá trị gần nhất trong ô C1 sẽ được ghi nhận trong ô D1.

Hiện ô C1 mình đang là 9. Mình đổi ô H1 thành 1 giá trị khác, ví dụ 11 chẳng hạn, thì giá trị ô C1 là 11 và ô D1 tự động ghi nhận giá trị là 9. Mình đổi giá trị ô H1 là 20, thì ô C1 là 20 và ô D1 sẽ là giá trị gần nhất là 11.

Các bạn giúp mình với. Cảm ơn các bạn nhiều!
Thử đoạn code dưới đây
copy đoạn code bên dưới->chuột phải vào sheettab sheet1->view code->ctrl+v
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL0, DL1, DL2, rws, i
Application.EnableEvents = False
If Target.Column = 8 Then
    rws = Range("H" & Rows.Count).End(xlUp).Row
    DL0 = Range("H1:H" & rws)
    Application.Undo
    DL1 = Range("C1:C" & rws)
    DL2 = Range("D1:D" & rws)
    For i = 1 To rws
        If DL0(i, 1) <> DL1(i, 1) Then DL2(i, 1) = DL1(i, 1)
    Next i
    Range("D1:D" & rws) = DL2
    Range("H1:H" & rws) = DL0
End If
Application.EnableEvents = True
End Sub
 
Upvote 0
Cảm ơn bạn @CHAOQUAY nhiều nhé. Mình đã làm thành công theo cách hướng dẫn của bạn.
 
Upvote 0
Web KT
Back
Top Bottom