Lỗi chạy hàm index bằng VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nhocproaction

Thành viên mới
Tham gia
19/10/14
Bài viết
5
Được thích
2
Em chào anh/chị/em,
Em có một bài tập tìm kiếm giá trị giữa các bảng, sử dụng hàm index và match
Khi viết bằng VBA để gọi các giá trị cho hàm, thì bị lỗi. (như file đính kèm)
Nhờ anh/chị/em hướng dẫn giúp em cách chỉnh với nhé
 

File đính kèm

  • Tìm Giá Trị.xlsm
    30.9 KB · Đọc: 14
Em chào anh/chị/em,
Em có một bài tập tìm kiếm giá trị giữa các bảng, sử dụng hàm index và match
Khi viết bằng VBA để gọi các giá trị cho hàm, thì bị lỗi. (như file đính kèm)
Nhờ anh/chị/em hướng dẫn giúp em cách chỉnh với nhé
Kết quả nếu chạy ra đúng sẽ là? Và kết quả hiển thị ở đâu?
 
Upvote 0
Em chào anh,
Kết quả chạy ra đúng là chỗ cột F (Mục tiêu)
Hiển thị ở E2 nhé anh
Em cảm ơn anh nhiều nhé
không biết phải thế này không?
PHP:
Sub Timgiatri()
    Dim item As String
    With Application
        item = .VLookup(Sheets("summary").Range("A2"), Sheets("infor").Range("A1:B3"), 2, 0)
        Sheets("summary").Range("e2") = .Index(Sheets("Infor").Range("A1:B3"), .Match(item, Sheets("Infor").Range("B1:B3"), False), 1)
    End With
End Sub
 
Upvote 0
không biết phải thế này không?
PHP:
Sub Timgiatri()
    Dim item As String
    With Application
        item = .VLookup(Sheets("summary").Range("A2"), Sheets("infor").Range("A1:B3"), 2, 0)
        Sheets("summary").Range("e2") = .Index(Sheets("Infor").Range("A1:B3"), .Match(item, Sheets("Infor").Range("B1:B3"), False), 1)
    End With
End Sub
Hi anh,
Giá trị mình cần tìm ở sheet "AB" nhé anh.
Trong đó: lookup value là nối kí tự giữ cột code và area nha anh
Nhờ anh hướng dẫn giúp em nhé
Em cảm ơn anh nhiều nha
 
Upvote 0
Hi anh,
Giá trị mình cần tìm ở sheet "AB" nhé anh.
Trong đó: lookup value là nối kí tự giữ cột code và area nha anh
Nhờ anh hướng dẫn giúp em nhé
Em cảm ơn anh nhiều nha
Bạn kiểm tra lại kết quả nha.
PHP:
Sub GPE()
    Dim Arr(), Res(1 To 1000, 1 To 1), Lr&, i&, k&
    Dim sLr&, sArr(), a&
    Dim dic As Object, Key$
    Set dic = CreateObject("Scripting.Dictionary")
    With Sheets("Summary")
        sLr = .Range("B" & Rows.Count).End(xlUp).Row
        sArr = .Range("B2:D" & sLr).Value
        .Range("E2:E" & sLr).ClearContents
        For i = 1 To UBound(sArr)
            Key = sArr(i, 1) & "-" & sArr(i, 3)
            If Not dic.exists(Key) Then
                a = a + 1
                dic.Add (Key), a
            End If
        Next i
    End With
        With Sheets("ab")
            Lr = .Range("A" & Rows.Count).End(xlUp).Row
            Arr = .Range("A2:C" & Lr).Value
            For i = 1 To UBound(Arr)
                Key = Arr(i, 1) & "-" & Arr(i, 2)
                If dic.exists(Key) Then
                    k = k + 1
                    Res(dic.item(Key), 1) = Arr(i, 3)
                Else
                    k = k + 1
                End If
            Next i
        End With
    Sheets("Summary").Range("E2").Resize(k, 1).Value = Res
    Set dic = Nothing
End Sub
 
Upvote 0
Bạn kiểm tra lại kết quả nha.
PHP:
Sub GPE()
    Dim Arr(), Res(1 To 1000, 1 To 1), Lr&, i&, k&
    Dim sLr&, sArr(), a&
    Dim dic As Object, Key$
    Set dic = CreateObject("Scripting.Dictionary")
    With Sheets("Summary")
        sLr = .Range("B" & Rows.Count).End(xlUp).Row
        sArr = .Range("B2:D" & sLr).Value
        .Range("E2:E" & sLr).ClearContents
        For i = 1 To UBound(sArr)
            Key = sArr(i, 1) & "-" & sArr(i, 3)
            If Not dic.exists(Key) Then
                a = a + 1
                dic.Add (Key), a
            End If
        Next i
    End With
        With Sheets("ab")
            Lr = .Range("A" & Rows.Count).End(xlUp).Row
            Arr = .Range("A2:C" & Lr).Value
            For i = 1 To UBound(Arr)
                Key = Arr(i, 1) & "-" & Arr(i, 2)
                If dic.exists(Key) Then
                    k = k + 1
                    Res(dic.item(Key), 1) = Arr(i, 3)
                Else
                    k = k + 1
                End If
            Next i
        End With
    Sheets("Summary").Range("E2").Resize(k, 1).Value = Res
    Set dic = Nothing
End Sub
Em đã chạy được nhé anh. Em cảm ơn anh đã hướng dẫn nhiều nhé
 
Upvote 0
Web KT
Back
Top Bottom