VBA-Xin code cập nhật dữ liệu qua sheet khác (1 người xem)

Liên hệ QC

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

hongtram2804

Thành viên mới
Tham gia
7/11/16
Bài viết
15
Được thích
0
Em xin chào anh chị trên diễn đàn,

nhờ anh chị xem giúp file của em, Sheet " Du lieu" em lấy dữ liệu từ sheet data bằng công thức Vlookup. Tại Sheet 3 em cũng có các diễn giải giống như sheet " Du lieu" nhưng cột xuất xứ em sẽ nhập bằng tay, khi nhập xong em bấm nút thì nó sẽ tự động cập nhật các giá trị cột xuất xứ sang sheet " Du lieu" ( Cái nào trống thì bỏ qua-chỉ lấy ô nào có giá trị thôi). Nhờ anh chị xem giúp em phải đặt Code như thế nào ạ.

Em cảm ơn anh chị rất nhiều.
 

File đính kèm

Em xin chào anh chị trên diễn đàn,

nhờ anh chị xem giúp file của em, Sheet " Du lieu" em lấy dữ liệu từ sheet data bằng công thức Vlookup. Tại Sheet 3 em cũng có các diễn giải giống như sheet " Du lieu" nhưng cột xuất xứ em sẽ nhập bằng tay, khi nhập xong em bấm nút thì nó sẽ tự động cập nhật các giá trị cột xuất xứ sang sheet " Du lieu" ( Cái nào trống thì bỏ qua-chỉ lấy ô nào có giá trị thôi). Nhờ anh chị xem giúp em phải đặt Code như thế nào ạ.

Em cảm ơn anh chị rất nhiều.
Nếu đã chơi code thì code hết luôn chứ VLOOKUP làm gì
Vào sheet "Du Lieu" nhập Code xong bấm ...cái tròn tròn, code sẽ cập nhật "Diễn giải".
Vào sheet3 nhập "Xuất xứ" xong bấm cái nút "dài dài" sẽ cập nhật "Xuất xứ" ở sheet "Du Lieu"
Mà sao phải cập nhật ......."lòng vòng" vậy Trời
Thân
 

File đính kèm

Upvote 0
Nếu đã chơi code thì code hết luôn chứ VLOOKUP làm gì
Vào sheet "Du Lieu" nhập Code xong bấm ...cái tròn tròn, code sẽ cập nhật "Diễn giải".
Vào sheet3 nhập "Xuất xứ" xong bấm cái nút "dài dài" sẽ cập nhật "Xuất xứ" ở sheet "Du Lieu"
Mà sao phải cập nhật ......."lòng vòng" vậy Trời
Thân
Rất Cảm ơn anh concogia, nhưng thành thật xin lỗi anh, chạy code của anh mới biết bị thiếu 1 vấn đề là phải thêm 1 điều kiện nữa, 2 mặt hàng giống nhau nhưng chủng loại khác nhau thì sẽ có xuất xứ khác nhau- do đó em tạo thêm 1 cột chủng loại và nhờ anh xem Code lại giúp em nha.

+ Mặt hàng giống nhau nhưng chủng loại khác nhau >> Xuất xứ khác nhau
+ Khi cập nhật qua thì bên sheet " Du Lieu" Highlight màu đỏ lên các ô đó để biết là mình mới cập nhật qua.


- Trong sheet " Du lieu" em vẫn chạy Vlookup là vì dữ liệu nó không liên tiếp nhau nên không dùng VBA được, em dùng công thức cho tiện, muốn đặt chổ nào thì đặt. hjhjjh

Nhờ anh xem giúp em nha.
 

File đính kèm

Upvote 0
Rất Cảm ơn anh concogia, nhưng thành thật xin lỗi anh, chạy code của anh mới biết bị thiếu 1 vấn đề là phải thêm 1 điều kiện nữa, 2 mặt hàng giống nhau nhưng chủng loại khác nhau thì sẽ có xuất xứ khác nhau- do đó em tạo thêm 1 cột chủng loại và nhờ anh xem Code lại giúp em nha.

+ Mặt hàng giống nhau nhưng chủng loại khác nhau >> Xuất xứ khác nhau
+ Khi cập nhật qua thì bên sheet " Du Lieu" Highlight màu đỏ lên các ô đó để biết là mình mới cập nhật qua.


- Trong sheet " Du lieu" em vẫn chạy Vlookup là vì dữ liệu nó không liên tiếp nhau nên không dùng VBA được, em dùng công thức cho tiện, muốn đặt chổ nào thì đặt. hjhjjh

Nhờ anh xem giúp em nha.
Bạn thử file này, cập nhật vài lần xem sao
+ Khi cập nhật qua thì bên sheet " Du Lieu" Highlight màu đỏ lên các ô đó để biết là mình mới cập nhật qua.
Có cập nhật mới thì chỉ tô màu các cell mới, xóa hết màu cũ nhé
Thân
 

File đính kèm

Upvote 0
Xin chào anh concogia,

Sau khi test kỹ code này thì nó vẫn chưa đúng yêu cầu.

1- Bên Sheet 3 những mặt hàng nào có xuất xứ để trống thì cần bỏ qua nhưng Code này thì copy qua hết luôn.
>> Yêu cầu: Bỏ qua các dòng có xuất xứ để trống

2- Bên sheet 3 khi em ẩn vài dòng đi, mục đích là không cần cập nhật các dòng đó nhưng code này cũng tìm ra và copy qua luôn. hjc hjc. Nó tìm siêu quá trốn không thoát.
>> Yêu cầu: Những dòng nào đã ẩn đi (hoặc dùng filter) thì bỏ qua.

Nhờ anh Concogia xem code lại giúp em lần nữa nha.
 
Upvote 0
Xin chào anh concogia,

Sau khi test kỹ code này thì nó vẫn chưa đúng yêu cầu.

1- Bên Sheet 3 những mặt hàng nào có xuất xứ để trống thì cần bỏ qua nhưng Code này thì copy qua hết luôn.
>> Yêu cầu: Bỏ qua các dòng có xuất xứ để trống

2- Bên sheet 3 khi em ẩn vài dòng đi, mục đích là không cần cập nhật các dòng đó nhưng code này cũng tìm ra và copy qua luôn. hjc hjc. Nó tìm siêu quá trốn không thoát.
>> Yêu cầu: Những dòng nào đã ẩn đi (hoặc dùng filter) thì bỏ qua.

Nhờ anh Concogia xem code lại giúp em lần nữa nha.
Bạn chép code này đè lên code cũ (mở bảng tính, bấm Alt + F11 sẽ thấy code)
Mã:
Public Sub XuatXu()
    Dim Vung, VungDo, Dic, I, Kq, Tam, ToMau, Tach
    Set Vung = Range([C4], [C50000].End(xlUp)).SpecialCells(12)
    Vung.Select
    Set VungDo = Sheets("Du lieu").Range(Sheets("Du lieu").[C4], Sheets("Du lieu").[C50000].End(xlUp)).Resize(, 2)
    Kq = Sheets("Du lieu").[E4].Resize(VungDo.Rows.Count)
    Set Dic = CreateObject("scripting.dictionary")
        For Each I In Vung
            If I.Offset(, 2) <> "" Then Dic.Add I & " " & I.Offset(, 1), I.Offset(, 2)
        Next I
            For I = 1 To VungDo.Rows.Count
                Tam = VungDo(I, 1) & " " & VungDo(I, 2)
                If Dic.exists(Tam) Then
                    Kq(I, 1) = Dic.Item(Tam)
                    ToMau = IIf(ToMau = "", VungDo(I, 1).Address, ToMau & " " & VungDo(I, 1).Address)
                End If
            Next I
    Sheets("Du lieu").Select
    Sheets("Du lieu").[E4].Resize(UBound(Kq)) = Kq
    Range([C4], [C50000].End(xlUp)).Resize(, 3).Interior.ColorIndex = xlNone
    Tach = Split(ToMau)
        For I = LBound(Tach) To UBound(Tach)
            Range(Tach(I)).Resize(, 3).Interior.ColorIndex = 6
        Next I
End Sub
Cái vụ ẩn dòng này hơi ngộ, sao không tạo một cột, đánh dấu "x" nếu không muốn cập nhật mà phải ẩn dòng cho nó cực lại tiềm ẩn nhiều ...nguy hiểm
Nhưng thôi, dữ liệu của bạn thì bạn cứ làm theo ý mình, miễn chạy thì thôi
Thân
 
Upvote 0
Bạn chép code này đè lên code cũ (mở bảng tính, bấm Alt + F11 sẽ thấy code)
Mã:
Public Sub XuatXu()
    Dim Vung, VungDo, Dic, I, Kq, Tam, ToMau, Tach
    Set Vung = Range([C4], [C50000].End(xlUp)).SpecialCells(12)
    Vung.Select
    Set VungDo = Sheets("Du lieu").Range(Sheets("Du lieu").[C4], Sheets("Du lieu").[C50000].End(xlUp)).Resize(, 2)
    Kq = Sheets("Du lieu").[E4].Resize(VungDo.Rows.Count)
    Set Dic = CreateObject("scripting.dictionary")
        For Each I In Vung
            If I.Offset(, 2) <> "" Then Dic.Add I & " " & I.Offset(, 1), I.Offset(, 2)
        Next I
            For I = 1 To VungDo.Rows.Count
                Tam = VungDo(I, 1) & " " & VungDo(I, 2)
                If Dic.exists(Tam) Then
                    Kq(I, 1) = Dic.Item(Tam)
                    ToMau = IIf(ToMau = "", VungDo(I, 1).Address, ToMau & " " & VungDo(I, 1).Address)
                End If
            Next I
    Sheets("Du lieu").Select
    Sheets("Du lieu").[E4].Resize(UBound(Kq)) = Kq
    Range([C4], [C50000].End(xlUp)).Resize(, 3).Interior.ColorIndex = xlNone
    Tach = Split(ToMau)
        For I = LBound(Tach) To UBound(Tach)
            Range(Tach(I)).Resize(, 3).Interior.ColorIndex = 6
        Next I
End Sub
Cái vụ ẩn dòng này hơi ngộ, sao không tạo một cột, đánh dấu "x" nếu không muốn cập nhật mà phải ẩn dòng cho nó cực lại tiềm ẩn nhiều ...nguy hiểm
Nhưng thôi, dữ liệu của bạn thì bạn cứ làm theo ý mình, miễn chạy thì thôi
Thân
Xin chào anh concogia
Vì nhiều lúc em chỉ muốn cập nhật các mặt hàng theo loại 1 thôi, nên em sẽ filter theo Loại 1 và cập nhật sang bên kia.
Code hiện tại đã đáp ứng được 95% yêu cầu của em rồi ạ. Chỉ còn 1 vấn đề là nếu tại cột E "Xuất xứ" bên sheet "Du Lieu" tại các dòng không cần cập nhật xuất xứ, sau khi chạy code thì nó tự động mất công thức chỉ còn lại giá trị.

Em cảm ơn anh rất nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom