Giúp đỡ code tách dữ liệu bị lỗi (1 người xem)

  • Thread starter Thread starter LYSM
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
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
 

File đính kèm

Lần chỉnh sửa cuối:
Rất mong mọi người vào chỉ dùm lỗi giúp em, em mò đủ mọi cách rồi mà kết quả vẫn không như ý! Rất mong câu trả lời từ mọi người dù là "Không khắc phục được"
 
Lần chỉnh sửa cuối:
Upvote 0
Rất mong mọi người vào chỉ dùm lỗi giúp em, em mò đủ mọi cách rồi mà kết quả vẫn không như ý! Rất mong câu trả lời từ mọi người dù là "Không khắc phục được"

Bạn bỏ dòng lệnh "On error resume next " đi , chạy lại code sẽ thấy lỗi
Tôi thấy lỗi ở câu lệnh Application.Vlookup, có thể là hàm Vlookup này không tìm thấy giá trị nào thỏa mãn --> dẫn đến kết quả phép tính của không đúng như mong muốn của bạn !
 
Upvote 0
Bạn bỏ dòng lệnh "On error resume next " đi , chạy lại code sẽ thấy lỗi
Tôi thấy lỗi ở câu lệnh Application.Vlookup, có thể là hàm Vlookup này không tìm thấy giá trị nào thỏa mãn --> dẫn đến kết quả phép tính của không đúng như mong muốn của bạn !

Em cảm ơn!
Cực chẳng đã em phải dùng hàm vlookup, bác có cách nào thay hàm này được không ạ? Nhưng lạ một điều là khi em tách riêng giá trị vlookup ra một cột rồi sau đó dùng code khác trừ đi thì lại đúng
 
Upvote 0

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

Back
Top Bottom