Điền giá trị vào các ô trống được chọn với điều kiện trùng mã số (1 người xem)

Liên hệ QC

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

wanghuy3

Thành viên mới
Tham gia
2/3/12
Bài viết
32
Được thích
2
Nghề nghiệp
nhân viên ocean bank
Nhờ mọi người giúp đỡ.
Mình có 1 bảng số liệu như sau:
[TABLE="width: 231"]
[TR]
[TD="class: xl65, width: 77"]mã hàng[/TD]
[TD="class: xl65, width: 77"]nơi nhận[/TD]
[TD="class: xl65, width: 77"]số lượng[/TD]
[/TR]
[TR]
[TD="class: xl65"]1011[/TD]
[TD="class: xl65"]a[/TD]
[TD="class: xl65"]10[/TD]
[/TR]
[TR]
[TD="class: xl65"]1111[/TD]
[TD="class: xl65"]b[/TD]
[TD="class: xl65"]11[/TD]
[/TR]
[TR]
[TD="class: xl65"]1211[/TD]
[TD="class: xl65"]c[/TD]
[TD="class: xl65"]12[/TD]
[/TR]
[TR]
[TD="class: xl65"]1311[/TD]
[TD="class: xl65"]d[/TD]
[TD="class: xl65"]11[/TD]
[/TR]
[TR]
[TD="class: xl65"]1410[/TD]
[TD="class: xl65"]a[/TD]
[TD="class: xl65"]10[/TD]
[/TR]
[TR]
[TD="class: xl66"]1211[/TD]
[TD="class: xl66"]b[/TD]
[TD="class: xl66"][/TD]
[/TR]
[TR]
[TD="class: xl66"]1311[/TD]
[TD="class: xl66"]x[/TD]
[TD="class: xl66"][/TD]
[/TR]
[TR]
[TD="class: xl66"]1410[/TD]
[TD="class: xl66"]y[/TD]
[TD="class: xl66"][/TD]
[/TR]
[/TABLE]

Mình nhờ mọi người hướng dẫn mình tạo 1 macro sao cho nếu mã hàng (những ô in đậm và gạch dưới) trùng với những mã hàng đã có sẵn bên trên thì tại ô số lượng của những mã hàng này (những ô in đậm và gạch dưới) thì tự động những giá trị số lượng của mã hàng trước đó sẽ tự động điền vào ô số lượng của những mã hàng in đậm này. Với cột mã hàng luôn ở column A.

Đúng ra thì nếu dùng Vlookup thì nhanh nhưng khi làm việc mình có thể thêm mã vào bất cứ vị trí nào trong bảng nên dùng hàm ko tiện với lại mình thường xuyên làm trên nhiều mẫu khác nhau và có rất nhiều cột nên ko thể cài hàm vào 1 file để làm mẫu, rất mong mọi người giúp đỡ. xin cảm ơn mọi người!!!
 
Lần chỉnh sửa cuối:
Đây là macro sự kiện trên cột [A:A] để bạn tham khảo
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns("A:A")) Then
    Dim Rng As Range, sRng As Range
    
    Set Rng = Range([A1], Target.Offset(-1))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        Target.Offset(, 2).Value = "Nothing"
    Else
        Target.Offset(, 2).Value = sRng.Offset(, 2).Value
    End If
 End If
End Sub
 
Upvote 0
Ý là khi làm việc gặp nhiều dạng như vậy nhưng ko có mẫu chung, trường hợp chèn 1 mã vào giữa 2 mã thì ko biết cái mã cũ ở vùng nào thì làm sao mà quét chọn vùng được ạ!
 
Upvote 0
Nhiều mẫu, nhiều cột.. nhiều vị trí # nhau,.......v.v.v......bạn nghỉ là Macro sẽ nhanh hơn bạn dùng hàm hả??? trên 1 cột mà làm như vậy, khi nào bạn dùng dò tìm, khi nào bạn gõ trực tiép.........không hiểu???--=0--=0--=0
Ý là khi làm việc gặp nhiều dạng như vậy nhưng ko có mẫu chung, trường hợp chèn 1 mã vào giữa 2 mã thì ko biết cái mã cũ ở vùng nào thì làm sao mà quét chọn vùng được ạ!
 
Upvote 0
Nhiều mẫu, nhiều cột.. nhiều vị trí # nhau,.......v.v.v......bạn nghỉ là Macro sẽ nhanh hơn bạn dùng hàm hả??? trên 1 cột mà làm như vậy, khi nào bạn dùng dò tìm, khi nào bạn gõ trực tiép.........không hiểu???--=0--=0--=0
Duy nhất cột mã hàng luôn ở cột A
 
Upvote 0
Đây là macro sự kiện trên cột [A:A] để bạn tham khảo
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns("A:A")) Then
    Dim Rng As Range, sRng As Range
    
    Set Rng = Range([A1], Target.Offset(-1))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        Target.Offset(, 2).Value = "Nothing"
    Else
        Target.Offset(, 2).Value = sRng.Offset(, 2).Value
    End If
 End If
End Sub
Bạn có thể giải thích sơ giúp mình không, mình đang trong giai đoạn mò mẫm macro nên không thể hiểu rõ đoạn code này lắm, rất cảm ơn bạn!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn có thể giải thích sơ giúp mình không,. . . rất cảm ơn bạn!
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns("A:A")) Then
2    Dim Rng As Range, sRng As Range
    
    Set Rng = Range([A1], Target.Offset(-1))
4    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
6        Target.Offset(, 2).Value = "Nothing"
    Else
8        Target.Offset(, 2).Value = sRng.Offset(, 2).Value
    End If
10 End If
End Sub

D1: Nếu ô bạn vừa nhập (gì vô nó) thuộc cột [A:A] thì thực hiện các lệnh cho đến hết (macro)
(Nôm na là: Hễ bạn nhập liệu vô ô nào đó của cột [A:A] thì. . . )

D2: Dịnh nghĩa 2 biến đối tượng để xài (trong macro)

D3: Đem vùng bắt đầu từ [A1] cho đến ô trên kế ô vừa "đụng vào" gán vô 1 biến đối tượng đã khai báo.

D4: Áp dụng fương thức FIND() để tìm dữ liệu bạn vừa nhập (tức thì) có trong ô nào đó của vùng soát xét hay không.

D5: Nếu không tìm thấy thì thực hiện D6; Nếu tìm thấy thì thực hiện D8;

D6: Ghi tử "Nothing" này vô ô cách 2 ô với ô vừa nhập về bên fải

D8: Lấy trị ở ô cách ô tìm thấy 2 ô về fía fải ghi vô ô cách 2 ô về fía fải của ô vừa nhập

D9: Kết thúc điều kiện ở D5;

D10: Kết thúc điều kiện ở D1;


Những mong là hữu ích với bạn ít nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom