Lỗi dò tìm hệ số

Liên hệ QC

thao nguyen01

Thành viên thường trực
Tham gia
8/12/19
Bài viết
214
Được thích
25
Kính gửi anh/chị trên diễn đàn,

Em viết code dò tìm hệ số dựa vào Mã nhân viên. Nhưng khi em viết xong, chạy kết quả thì kết quả chưa đúng. Em tìm hoài nhưng không biết nguyên nhân do đâu. Em nghĩ do bảng dò có số thập phân. Em có đính kèm file bên dưới ạ. Anh/chị xem giúp em ạ. Em cảm ơn anh/chị ạ.

Sub thongke03(Dic As Object)
Dim I As Long, dcuoi As Long, j As Double
Dim arr_N()

dcuoi = Sheet1.Range("K10000").End(xlUp).Row
arr_N = Sheet1.Range("K4:p" & dcuoi)

ReDim arr_D(1 To UBound(arr_N, 1), 1 To 12)
For I = 1 To UBound(arr_N, 1)
For j = arr_N(I, 1) To arr_N(I, 2)
If Not Dic.exists(j) Then
Dic.Add j, I
Dic.Item(j) = I
End If
Next
Next

End Sub


Sub dotim()
Dim I As Long, dcuoi As Long, j As Long, ii As Long
Dim arr_N()
Dim arr_D()
Dim Dic As Object
Set Dic = CreateObject("scripting.dictionary")
Set Dic01 = CreateObject("scripting.dictionary")
Call thongke03(Dic)
dcuoi = Sheet1.Range("D10000").End(xlUp).Row
arr_N = Sheet1.Range("D2:H" & dcuoi)

dcuoi02 = Sheet1.Range("K10000").End(xlUp).Row
arr_N02 = Sheet1.Range("K4:p" & dcuoi02)
ReDim arr_D(1 To UBound(arr_N, 1), 1 To 2)

'''''''''''''''''
dcuoi_DS = Sheet1.Range("Q10000").End(xlUp).Row
arr_DS = Sheet1.Range("Q4:R" & dcuoi_DS)

For I = 1 To UBound(arr_DS, 1)
If Not Dic01.exists(arr_DS(I, 1)) Then
Dic01.Add arr_DS(I, 1), arr_DS(I, 2)
End If
Next

'''''''''''''''''''''''''

For I = 1 To UBound(arr_N, 1)
arr_D(I, 1) = Right(arr_N(I, 1), 1)
If Dic.exists(Right(arr_N(I, 1), 1) * 1) Then
j = Dic.Item(Right(arr_N(I, 1), 1) * 1)
If Dic01.exists(Left(arr_N(I, 1), 1)) Then
JJ = Dic01.Item(Left(arr_N(I, 1), 1))
arr_D(I, 2) = arr_N02(j, JJ + 2)
End If
End If
Next
Sheet1.Range("H2:I1000").ClearContents
Sheet1.Range("H2").Resize(UBound(arr_N, 1), 2) = arr_D
End Sub
 

File đính kèm

  • Book1.xlsb
    18.4 KB · Đọc: 14
Bạn có chắc phần tử đầu tiên là 1 không? Nếu chắc chắn thì nêu ví dụ để tôi xét lại.
Theo tôi hiểu thì tất cả hàm bảng tính đều mặc định phần tử đầu tiên là 1. Tất cả hàm VBA đều mặc định phần tử đầu tiên là 0 (trừ một số hàm có thể chịu ảnh hưởng bởi Option Base...).
Nên phân biệt thế nào là hàm bảng tính và hàm VBA.

Dạ, em hiểu ý Thầy ạ. Em nhầm lẫn giữa hàm bảng tính và hàm VBA ạ. Em cảm ơn Thầy nhiều ạ.
 
Upvote 0
Web KT
Back
Top Bottom