Giúp đỡ nguyên nhân code VBA hàm Vlookup ko chạy nữa. (1 người xem)

Liên hệ QC

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

subasatran

Thành viên hoạt động
Tham gia
17/3/13
Bài viết
114
Được thích
6
Mọi người giúp em tìm nguyên nhân đoạn code VBA Vlookup của em tai sai sau khi em thêm một đoạn code nhỏ để lọc duy nhất thì hàm Vlookup không chạy nữa.
Em không biết về code nên ngồi chế biến từng đoạn dựa trên diễn đàn nên không biết nguyên nhân. Nhờ mọi người giúp đỡ.
Trước khi sửa
View attachment 147709
sau đó em thêm đoạn code này vào để lọc duy nhất.
PHP:
Arr = Range("B7:B300")    ReDim dArr(1 To UBound(Arr, 1), 1 To 1)Set Dic = CreateObject("Scripting.Dictionary")    With Dic        For i = 1 To UBound(Arr, 1)            Tmpp = Arr(i, 1)            If Not .Exists(Tmpp) Then                k = k + 1                .Add Tmpp, k                    dArr(k, 1) = Arr(i, 1)            End If        Next i    End With        Range("B7:C300").ClearContents        Range("B7").Resize(k, 1) = dArr
Rồi thì kết quả không Vlookup đuọc nữa.
View attachment 147710
Mọi người giúp em sửa lại giúp. Cám ơn mọi người.
 
ủa code trong file của ông nào mà khủng khiếp vậy cà ?
 
Upvote 0
Chào mọi người,
Thực sự thì em chẳng biết về VBA.
Nên vừa google vừa nhờ và chế biến lại code nên dẫn đến là bị lỗi là ko sửa được.
Lúc đầu thì chỉ muốn lấy theo cáu trúc nhưng sau đó thì phát sinh ra vụ vloopkup (không tự động chạy được khi nhập) rồi lên diễn đàn tìm và sửa lại với code của anh hpkhuong.

@hpkhuong : Nói thật nhờ anh giúp nhiều quá cũng ngại, Em cũng muốn có gắng để khỏi phải phiền mọi người mà càng cố thì càng quá +-+-+-+.
File này em lấy code của anh ghép vào cái code Vlookup em search trên diễn đàn mà ko biết gì về VBA nên bó tay vụ sửa.
Anh giúp em code lại được ko ?
Mục đích của em là:
Khi nhập một mã quản lý hoặc khu vực thì sẽ lấy dữ liệu bên Sheets Morning sale report để đưa qua sheet KPIs dựa vào mã code của cột D trong sheet Morning sale report.
Khi thay đổi giá trị của sheet Morning sales thì bên sheet KPIs cũng thay đổi theo.

Cám ơn mọi người.
 
Upvote 0
Ai mà biết được ông. Tui code cho cha đó có 1 đoạn....ở cái file kia (lạ hoắc so với file này). Chả đem ghép qua file này, xong nhét 1 mớ bùi nhùi vào...........và bảo sao không chạy đúng ý........thì tui cũng thật sự bó chiếu rồi........++--//*++--//*++--//*++--//* ("Bức râu ông nọ cắm cằm bà kia thì thua rồi.")
Chào mọi người,
Thực sự thì em chẳng biết về VBA.
Nên vừa google vừa nhờ và chế biến lại code nên dẫn đến là bị lỗi là ko sửa được.
Lúc đầu thì chỉ muốn lấy theo cáu trúc nhưng sau đó thì phát sinh ra vụ vloopkup (không tự động chạy được khi nhập) rồi lên diễn đàn tìm và sửa lại với code của anh hpkhuong.

@hpkhuong : Nói thật nhờ anh giúp nhiều quá cũng ngại, Em cũng muốn có gắng để khỏi phải phiền mọi người mà càng cố thì càng quá +-+-+-+.
File này em lấy code của anh ghép vào cái code Vlookup em search trên diễn đàn mà ko biết gì về VBA nên bó tay vụ sửa.
Anh giúp em code lại được ko ?
Mục đích của em là:
Khi nhập một mã quản lý hoặc khu vực thì sẽ lấy dữ liệu bên Sheets Morning sale report để đưa qua sheet KPIs dựa vào mã code của cột D trong sheet Morning sale report.
Khi thay đổi giá trị của sheet Morning sales thì bên sheet KPIs cũng thay đổi theo.
(Hic sao ko attack được file nữa)
https://www.mediafire.com/?3h8yo6l9spx35pb
Cám ơn mọi người.
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người,
Thực sự thì em chẳng biết về VBA.
Nên vừa google vừa nhờ và chế biến lại code nên dẫn đến là bị lỗi là ko sửa được.
Lúc đầu thì chỉ muốn lấy theo cáu trúc nhưng sau đó thì phát sinh ra vụ vloopkup (không tự động chạy được khi nhập) rồi lên diễn đàn tìm và sửa lại với code của anh hpkhuong.

@hpkhuong : Nói thật nhờ anh giúp nhiều quá cũng ngại, Em cũng muốn có gắng để khỏi phải phiền mọi người mà càng cố thì càng quá +-+-+-+.
File này em lấy code của anh ghép vào cái code Vlookup em search trên diễn đàn mà ko biết gì về VBA nên bó tay vụ sửa.
Anh giúp em code lại được ko ?
Mục đích của em là:
Khi nhập một mã quản lý hoặc khu vực thì sẽ lấy dữ liệu bên Sheets Morning sale report để đưa qua sheet KPIs dựa vào mã code của cột D trong sheet Morning sale report.
Khi thay đổi giá trị của sheet Morning sales thì bên sheet KPIs cũng thay đổi theo.
(Hic sao ko attack được file nữa)
https://www.mediafire.com/?3h8yo6l9spx35pb
Cám ơn mọi người.

Bạn không giải thích rõ các cột thông tin kết quả đc lấy ở đâu bên sheet Morning sale report thì ai giúp bạn đc đây. Mình sẽ giúp bạn nếu bạn giải thích rõ kết quả lấy ở đâu bên sheet Morning sale report và dặt vào đâu bên sheet KPIs. Mình là SX không hiểu tí nghiệp vụ nào của Sale cả.
 
Upvote 0
Tóm lại. Bạn xóa hết tất cả các code trong file của bạn đi. (Xóa hết không chừa 1 code nào.)

Paste code sau vào sheet KPIs
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$E$3" Then
Dim DL, kq(1 To 65000, 1 To 2), Dk As String
Dim r As Long, i As Long, j As Long, Arr, lr As Long
Dim Dic As Object, Tmp As String, dArr, k As Long
Arr = Array(6, 8, 5, 7)
Dk = Range("E3").Value
DL = Sheet2.Range("A1:H65000")
    For r = 2 To UBound(DL)
        If (DL(r, 7) = Dk Or DL(r, 6) = Dk) And Dk <> Empty And _
        (DL(r, 6) <> Empty Or DL(r, 8) <> Empty) Then
            i = i + 1
            For j = 0 To UBound(Arr)
                If DL(r, 6) = Empty Then
                    kq(i, 1) = DL(r, 8)
                    kq(i, 2) = DL(r, 5)
                Else
                    kq(i, 1) = DL(r, 6)
                    kq(i, 2) = DL(r, 5)
                End If
            Next j
        End If
    Next r
If i Then
    Range("B7:C65000,E7:H65000").ClearContents
    Range("B7").Resize(i, 2) = kq
    Arr = Range("B7:B65000")
    ReDim dArr(1 To UBound(Arr, 1), 1 To 1)
Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        For i = 1 To UBound(Arr, 1)
            Tmp = Arr(i, 1)
            If Not .exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
                    dArr(k, 1) = Arr(i, 1)
            End If
        Next i
    End With
        Range("B7:B65000,E7:H65000").ClearContents
        Range("B7").Resize(k, 1) = dArr
        lr = Range("B65000").End(3).Row
        Range("C" & lr + 1 & ":C65000").ClearContents
        Call Vlookup
Else
    Range("B7:C65000,E7:H65000").ClearContents
End If
End If
Application.ScreenUpdating = True
End Sub

Paste code sau vào Module
Mã:
Option Explicit
Sub Vlookup()
Dim i As Long, Arr(), DL(), Nguon(), Itm, Dic As Object
With Sheet1
    DL = Range(.[A6], .[A65000].End(3)).Resize(, 36)
End With
With Sheet5
    Nguon = Range("B7:B6500")
    ReDim kq(1 To UBound(Nguon), 1 To 4)
    Set Dic = CreateObject("Scripting.dictionary")
    For i = 1 To UBound(DL)
    Itm = CStr(DL(i, 4))
        If Not Dic.exists(Itm) Then
            Dic.Add Itm, i
        End If
    Next i
    For i = 1 To UBound(Nguon)
    Itm = CStr(Nguon(i, 1))
        If Dic.exists(Itm) Then
            kq(i, 1) = DL(Dic.Item(Itm), 27)
            kq(i, 2) = DL(Dic.Item(Itm), 30)
            kq(i, 3) = DL(Dic.Item(Itm), 31)
            kq(i, 4) = DL(Dic.Item(Itm), 33)
        End If
    Next i
    .[E7:H1000].ClearContents
    .[E7].Resize(i - 1, 4) = kq
Set Dic = Nothing
End With
End Sub

Paste code sau vào sheet Morning Sales Report
Mã:
Option Explicit
Private Sub Worksheet_Deactivate()
    Call Vlookup
End Sub
Công nhận anh viết nhanh thật.
Khi nhập một mã thì bên dưới nó lặp như bên dưới.
Nó bị như bên dưới là do nguyên nhận gì vậy anh. Khắc phục như thế nào nhỉ.
Em muốn Vlookup thêm 2 cột (Cột Q và Cột R trong sheet Morning sale) thêm vào sheet KPIs nữa mà vẫn chưa thêm được.
Thank a
View attachment 147722
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn không giải thích rõ các cột thông tin kết quả đc lấy ở đâu bên sheet Morning sale report thì ai giúp bạn đc đây. Mình sẽ giúp bạn nếu bạn giải thích rõ kết quả lấy ở đâu bên sheet Morning sale report và dặt vào đâu bên sheet KPIs. Mình là SX không hiểu tí nghiệp vụ nào của Sale cả.

Hi anh,
Em muốn lấy các tiêu chi bên của sheet KPIs tương ứng với bên sheet Mỏning sale như bên dưới.
New hire = Cột AA bên Morning sale
Contracted = Cột AD bên Morning sale
3MAA = Cột AE bên Morning sale
1MAA = Cột AG bên Morning sale
CC = Cột Q bên Morning sale
APE = Cột R bên Morning sale
CC/1MAA = Cột Q chia cho cột AG bên Morning sale
Size = Cột R chia cho cột Q bên Morning sale.
Thanks
 
Upvote 0
Hi anh,
Em muốn lấy các tiêu chi bên của sheet KPIs tương ứng với bên sheet Mỏning sale như bên dưới.
New hire = Cột AA bên Morning sale
Contracted = Cột AD bên Morning sale
3MAA = Cột AE bên Morning sale
1MAA = Cột AG bên Morning sale
CC = Cột Q bên Morning sale
APE = Cột R bên Morning sale
CC/1MAA = Cột Q chia cho cột AG bên Morning sale
Size = Cột R chia cho cột Q bên Morning sale.
Thanks

Thế còn Location code, Report Level thì lấy ở đâu bạn ?
 
Upvote 0
Thế còn Location code, Report Level thì lấy ở đâu bạn ?
Thế còn Location code, Report Level thì lấy ở đâu bạn ? 2 filed này lấy từ sheet StructureSM+.
Lúc đầu nhờ a hpkhuong viết lấy 2 filed này ra bên bài viết này
http://www.giaiphapexcel.com/forum/...Dữ-Liệu-Theo-Cấu-Trúc-Cây-Dùng-Code-VBA/page2
và đã lấy được thành công nhưng còn vụ Vlookup thì do ghép code tùm lum nên mới nhờ mọi người xem lại.
 
Upvote 0
Thế còn Location code, Report Level thì lấy ở đâu bạn ? 2 filed này lấy từ sheet StructureSM+.
Lúc đầu nhờ a hpkhuong viết lấy 2 filed này ra bên bài viết này
http://www.giaiphapexcel.com/forum/...Dữ-Liệu-Theo-Cấu-Trúc-Cây-Dùng-Code-VBA/page2
và đã lấy được thành công nhưng còn vụ Vlookup thì do ghép code tùm lum nên mới nhờ mọi người xem lại.

Mình có thêm thắc mắc nữa là sao với mã CMC02 thì Report Level luôn là 3 mà không phải 1, 2, 4 ? Trong khi bên sheet Structure_SM+ có đủ cả.

Ý mình là sao lại chọn 3 mà ko phải là 1, 2, 4. Dựa vào yếu tố nào ?
 
Upvote 0
Mình có thêm thắc mắc nữa là sao với mã CMC02 thì Report Level luôn là 3 mà không phải 1, 2, 4 ? Trong khi bên sheet Structure_SM+ có đủ cả.

Ý mình là sao lại chọn 3 mà ko phải là 1, 2, 4. Dựa vào yếu tố nào ?
Cái này thì theo mình nghĩ code của hpkhuong lấy cái dòng đầu tiên khi cho dòng chạy. Mình thì muốn lấy cái report level bằng 1 nhưng tam thời để đó tính sau. Đang cần làm cái tổng quan trước.
 
Upvote 0
Cái này thì theo mình nghĩ code của hpkhuong lấy cái dòng đầu tiên khi cho dòng chạy. Mình thì muốn lấy cái report level bằng 1 nhưng tam thời để đó tính sau. Đang cần làm cái tổng quan trước.

Mình đang muốn làm tổng quan cho bạn thì mới hỏi chứ. Nếu report level không cần bằng số nào thì duyệt qua cái sheet Structure_SM+ làm gì hoặc nếu luôn =1 thì gán nó = 1 luôn chứ. Tóm lại là bạn muốn report level nó = bao nhiêu ?
 
Upvote 0
Hi anh,
Em muốn lấy các tiêu chi bên của sheet KPIs tương ứng với bên sheet Mỏning sale như bên dưới.
New hire = Cột AA bên Morning sale
Contracted = Cột AD bên Morning sale
3MAA = Cột AE bên Morning sale
1MAA = Cột AG bên Morning sale
CC = Cột Q bên Morning sale
APE = Cột R bên Morning sale
CC/1MAA = Cột Q chia cho cột AG bên Morning sale
Size = Cột R chia cho cột Q bên Morning sale.
Thanks

Bạn thử file đính kèm xem sao đã, sai đâu tính tiếp vậy.
 

File đính kèm

Upvote 0
Cám ơn mọi người rất nhiều. đặc biệt là a hpkhuong
Hiện tại vấn đề đã được giải quyết với code của anh hpkhuong.
Nếu có quá trình phát sinh về sau mong mọi người giúp đỡ thêm.:-=
@mhung12005 : cám ơn bác nhiều. Code của bác Vlookup thì ok nhưng do lúc đầu em hỏi cách lọc để lấy Cấp quản lý và các cập báo cáo trục tiếp bên topic khác nên nó thiếu mất phần đầu.
 
Upvote 0
Hi a hpkhuong,
Vấn đề nhờ anh giúp đỡ lúc trước bây giờ xảy ra một vấn đề nhỏ.
Do cấu trúc từ hệ thống xuất ra chưa có loại được tất cả các code đã bị hủy nên lúc lọc đã có những khu vực mà số liệu bị rỗng.
Bây giờ muốn ẩn một số dòng có dữ liệu trống sau khi vlookup thì làm thế nào hả anh ?
Nhờ anh giúp đỡ thêm. Cám ơn anh.
View attachment 148455
 
Upvote 0
í sao có mấy dòng trong #23 nhìn thấy quen quen vậy trời , hình như có bạn vừa mới .... hi hi
 
Upvote 0
Web KT

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

Back
Top Bottom