Giúp sửa lỗi khi thực hiện phép chia

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

rilie

Thành viên mới
Tham gia
7/6/17
Bài viết
12
Được thích
0
Giới tính
Nam
Mình có đoạn code này, khi thực hiện phép chia cho 1 số nào đó thì được, nhưng khi chia cho giá trị ô "slct" thì bị lỗi.
Nhờ các A/C chỉ giúp đoạn lỗi...!

Sub chitiet()
Dim Sumact As Range, slb As Range, slct As Range, LastRow As Long, i As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "HM").End(xlUp).Row
End With
For i = 7 To LastRow
Set Sumact = Sheets("HD1").Cells(i, 231)
Set slb = Sheets("HD1").Cells(i, 7)
Set slt = Sheets("HD1").Cells(i, 5)
Set slct = Sheets("HD1").Cells(i, 220)
Sumact = Application.SumIf(Sheets("DATA").Range("D2:D4000"), Sheets("HD1").Cells(i, 218), Sheets("DATA").Range("F2:F4000"))
If slt > 0 Then slb = Sumact / 5 ( chia slct)
Next
End Sub
 
Mình có đoạn code này, khi thực hiện phép chia cho 1 số nào đó thì được, nhưng khi chia cho giá trị ô "slct" thì bị lỗi.
Nhờ các A/C chỉ giúp đoạn lỗi...!

Sub chitiet()
Dim Sumact As Range, slb As Range, slct As Range, LastRow As Long, i As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "HM").End(xlUp).Row
End With
For i = 7 To LastRow
Set Sumact = Sheets("HD1").Cells(i, 231)
Set slb = Sheets("HD1").Cells(i, 7)
Set slt = Sheets("HD1").Cells(i, 5)
Set slct = Sheets("HD1").Cells(i, 220)
Sumact = Application.SumIf(Sheets("DATA").Range("D2:D4000"), Sheets("HD1").Cells(i, 218), Sheets("DATA").Range("F2:F4000"))
If slt > 0 Then slb = Sumact / 5 ( chia slct)
Next
End Sub
Bạn sửa chổ này
Mã:
If slt > 0 Then slb = Sumact / 5
thành vầy xem sao.
Mã:
If slt > 0 Then slb = Sumact / slct.Value
 
Upvote 0
Mình có đoạn code này, khi thực hiện phép chia cho 1 số nào đó thì được, nhưng khi chia cho giá trị ô "slct" thì bị lỗi.
For i = 7 To LastRow
...
Set slt = Sheets("HD1").Cells(i, 5)
Set slct = Sheets("HD1").Cells(i, 220)
Sumact = Application.SumIf(Sheets("DATA").Range("D2:D4000"), Sheets("HD1").Cells(i, 218), Sheets("DATA").Range("F2:F4000"))
If slt > 0 Then slb = Sumact / 5 ( chia slct)
Next
End Sub
Trong sheet HD1 tại cột 220 từ dòng 7 tới dòng LastRow có ô nào trống không?
 
Upvote 0
Trong sheet HD1 tại cột 220 từ dòng 7 tới dòng LastRow có ô nào trống không?
Có nhiều ô trống Anh, dữ liệu hơi rời rạc, cách dòng khá nhiều.
Bài đã được tự động gộp:

Bạn sửa chổ này
Mã:
If slt > 0 Then slb = Sumact / 5
thành vầy xem sao.
Mã:
If slt > 0 Then slb = Sumact / slct.Value
Mình đã thử .value nhưng vẫn hiện lỗi "time error '13' Type mismatch "
 
Upvote 0
Có nhiều ô trống Anh, dữ liệu hơi rời rạc, cách dòng khá nhiều.
Bài đã được tự động gộp:


Mình đã thử .value nhưng vẫn hiện lỗi "time error '13' Type mismatch "
Tôi biết mà. Giả sử trong sheet HD1 ô tại cột 220 và dòng 13 là rỗng, và LastRow = 15. Lúc này ở vòng lặp thứ 7 có i = 13. Và giá trị của slct = Sheets("HD1").Cells(i, 220).Value = Sheets("HD1").Cells(13, 220).Value = 0. Tiếp theo là phép chia cho 0 nên bị lỗi.
---------------
Tùy dụng ý của bạn mà sửa. Vd.
Mã:
If slt > 0 And slct.Value <> 0 Then slb = Sumact / slct.Value
hoặc
Mã:
If slt > 0 And slct.Value <> 0 Then
Sumact = Application.SumIf(Sheets("DATA").Range("D2:D4000"), Sheets("HD1").Cells(i, 218), Sheets("DATA").Range("F2:F4000"))
slb = Sumact / slct.Value
End If
hoặc
...
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi biết mà. Giả sử trong sheet HD1 ô tại cột 220 và dòng 13 là rỗng, và LastRow = 15. Lúc này ở vòng lặp thứ 7 có i = 13. Và giá trị của slct = Sheets("HD1").Cells(i, 220).Value = Sheets("HD1").Cells(13, 220).Value = 0. Tiếp theo là phép chia cho 0 nên bị lỗi.
---------------
Tùy dụng ý của bạn mà sửa. Vd.
Mã:
If slt > 0 And slct.Value <> 0 Then slb = Sumact / slct.Value
hoặc
Mã:
If slt > 0 And slct.Value <> 0 Then
Sumact = Application.SumIf(Sheets("DATA").Range("D2:D4000"), Sheets("HD1").Cells(i, 218), Sheets("DATA").Range("F2:F4000"))
slb = Sumact / slct.Value
End If
hoặc
...
Thank Anh đã giúp đỡ: Em đã thêm điều kiện "slt > 0 And slct.Value <> 0 And Sumact>0 " code đã chạy được.;)
 
Upvote 0
Web KT

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

Back
Top Bottom