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 (1 người xem)

  • Thread starter Thread starter doinho
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

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

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

Bài viết mới nhất

Back
Top Bottom