Em chào cả nhà!
Em có file tách dữ liệu không hiểu sao khi tách riêng từng phần tử 1 thì đúng mà trừ đi cho nhau lai sai. Mọi người chỉ giúp em cách trừ luôn trong code với ạ. Cụ thể là dòng màu đỏ ý, khi để dArr(n, 2) = Arr(i, 9) + Arr(i, 10) và tách darr(n,6) và darr(n,7) riêng sau đó dùng hàm có sẵn trừ đi thì đúng nhưng để gộp dArr(n, 2) = Arr(i, 9) + Arr(i, 10)-darr(n,6) - darr(n,7) thì lại sai ạ. Em cảm ơn nhiều!
Sub Doso()
On Error Resume Next
Dim Arr, Arr1, dArr, i As Long, j As Long, k As Long, n As Long
With Sheets("So luong")
Arr = .Range(.[B2], .[B65000].End(xlUp)).Resize(, 23).Value
Arr1 = .Range(.[Z5], .[Z65000].End(xlUp)).Resize(, 5).Value
ReDim dArr(1 To UBound(Arr, 1), 1 To 35)
ReDim sArr(1 To UBound(dArr, 1), 1 To 5)
For j = 1 To UBound(Arr1, 1)
If UCase(Right(Arr1(j, 1), 6)) = .[J2] Or UCase(Right(Arr1(j, 1), 6)) = .[K2] Then
n = n + 1
dArr(n, 1) = Left(Arr1(j, 1), 5)
dArr(n, 2) = Arr1(j, 5)
dArr(n, 3) = Arr1(j, 2)
dArr(n, 4) = Arr1(j, 3)
dArr(n, 5) = Arr1(j, 4)
End If
Next j
For i = 4 To UBound(Arr, 1)
If Sheet2.[K1] = Sheet1.[A2] And Arr(i, 1) <> "" Then
n = n + 1
dArr(n, 1) = Arr(i, 1)
dArr(n, 6) = WorksheetFunction.VLookup(Arr(i, 1) & "*" & .[J2], Arr1, 5, 0)
dArr(n, 7) = WorksheetFunction.VLookup(Arr(i, 1) & "*" & .[K2], Arr1, 5, 0)
'dArr(n, 2) = Arr(i, 9) + Arr(i, 10) - dArr(n, 6) - dArr(n, 7)
dArr(n, 2) = Arr(i, 9) + Arr(i, 10)
End If
If dArr(n, 2) = 0 Then n = n - 1
Next i
End With
With Sheets("Do so")
.Range("A4:E65000").ClearContents
.[A4].Resize(n, 7) = dArr
End With
End Sub
Em có file tách dữ liệu không hiểu sao khi tách riêng từng phần tử 1 thì đúng mà trừ đi cho nhau lai sai. Mọi người chỉ giúp em cách trừ luôn trong code với ạ. Cụ thể là dòng màu đỏ ý, khi để dArr(n, 2) = Arr(i, 9) + Arr(i, 10) và tách darr(n,6) và darr(n,7) riêng sau đó dùng hàm có sẵn trừ đi thì đúng nhưng để gộp dArr(n, 2) = Arr(i, 9) + Arr(i, 10)-darr(n,6) - darr(n,7) thì lại sai ạ. Em cảm ơn nhiều!
Sub Doso()
On Error Resume Next
Dim Arr, Arr1, dArr, i As Long, j As Long, k As Long, n As Long
With Sheets("So luong")
Arr = .Range(.[B2], .[B65000].End(xlUp)).Resize(, 23).Value
Arr1 = .Range(.[Z5], .[Z65000].End(xlUp)).Resize(, 5).Value
ReDim dArr(1 To UBound(Arr, 1), 1 To 35)
ReDim sArr(1 To UBound(dArr, 1), 1 To 5)
For j = 1 To UBound(Arr1, 1)
If UCase(Right(Arr1(j, 1), 6)) = .[J2] Or UCase(Right(Arr1(j, 1), 6)) = .[K2] Then
n = n + 1
dArr(n, 1) = Left(Arr1(j, 1), 5)
dArr(n, 2) = Arr1(j, 5)
dArr(n, 3) = Arr1(j, 2)
dArr(n, 4) = Arr1(j, 3)
dArr(n, 5) = Arr1(j, 4)
End If
Next j
For i = 4 To UBound(Arr, 1)
If Sheet2.[K1] = Sheet1.[A2] And Arr(i, 1) <> "" Then
n = n + 1
dArr(n, 1) = Arr(i, 1)
dArr(n, 6) = WorksheetFunction.VLookup(Arr(i, 1) & "*" & .[J2], Arr1, 5, 0)
dArr(n, 7) = WorksheetFunction.VLookup(Arr(i, 1) & "*" & .[K2], Arr1, 5, 0)
'dArr(n, 2) = Arr(i, 9) + Arr(i, 10) - dArr(n, 6) - dArr(n, 7)
dArr(n, 2) = Arr(i, 9) + Arr(i, 10)
End If
If dArr(n, 2) = 0 Then n = n - 1
Next i
End With
With Sheets("Do so")
.Range("A4:E65000").ClearContents
.[A4].Resize(n, 7) = dArr
End With
End Sub
File đính kèm
Lần chỉnh sửa cuối: