thao nguyen01
Thành viên thường trực
- Tham gia
- 8/12/19
- Bài viết
- 241
- Được thích
- 30
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" & 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" & 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
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" & 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" & 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