Nhờ mọi người giúp đỡ, chạy Sub Total rất lâu.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

ndphongskr

Thành viên mới
Tham gia
24/4/20
Bài viết
26
Được thích
4
Chào các bác ạ, nhờ các bác giúp đỡ mình file này với, khi mình chạy từng sub riêng của nó thì nhanh nhưng khi chạy Sub Total của nó thì lại rất lâu, đợi mãi chả thấy được mà bị đơ luôn cả máy ạ. Mình có kiểm tra thì thấy có vẻ như nó bị ở mục Sub CheckNorm mà mình ko hiểu sao lại bị, vậy kính mong các bác giúp đỡ ạ. Cám ơn!
 

File đính kèm

  • File Chay.xlsm
    1.6 MB · Đọc: 26
  • File du lieu.xlsx
    6.3 MB · Đọc: 20
Bạn thử ghi lại thời lượng dành cho mỗi thằng/con macro thân iêu của bạn được không?
Xin cảm ơn bạn!
 
Upvote 0
Bạn thử ghi lại thời lượng dành cho mỗi thằng/con macro thân iêu của bạn được không?
Xin cảm ơn bạn!
Đây bác ạ, mình thử tách ra và chạy thì đến đoạn sub CheckNorm là nó rất là lâu, chạy 1% một luôn
1686208458635.png1686208463931.png1686208468526.png
nhưng tắt file đi nhấn chạy sub test2 1 lần nữa thì lại OK
1686208693058.png
 
Upvote 0
Đó là 1 trong những việc debug đó, vì tại sao chúng chạy lâu đến mức phải đơ máy.
Chạy lâu cũng là 1 lỗi, và tôi cũng ghi rõ là thêm từng sub để thấy lỗi. Lạ 1 cái là "cao thủ" như bebo mà không nhận ra người khác nói gì, cứ cho là mình đúng nhất.
Về lý thuyết, cỡ phức tạp như vầy thì code phải có chú thích nó làm gì và ước lượng đầu vào, đấu ra.
Ở mức độ chủ đề này và trình độ chủ bài, tôi còn chưa đề nghị chạy ngược 5 4 3 2 1
 
Upvote 0
Chạy lâu cũng là 1 lỗi, và tôi cũng ghi rõ là thêm từng sub để thấy lỗi. Lạ 1 cái là "cao thủ" như bebo mà không nhận ra người khác nói gì, cứ cho là mình đúng nhất.

Ở mức độ chủ đề này và trình độ chủ bài, tôi còn chưa đề nghị chạy ngược 5 4 3 2 1
vâng, cháu cũng đã thử như cách của chú nói chạy 1 2 3 từng sub 1 đến sub thứ 4 thì bị lỗi, lỗi ở đây là nó chạy rất là lâu ạ, nhưng vấn đề là do trình độ có hạn nên cháu cũng ko biết giải quyết như thế nào nữa :(
1686211445308.png
 
Upvote 0
Đây là phần trích từ 'Sub' đang chậm của bạn
PHP:
 Sub CheckNorm()
    Dim lastRow As Long
   
    Sheets("Product_Qty").Select
    lastRow = Cells(Rows.Count, "C").End(xlUp).Row
     With Range(Cells(2, "O"), Cells(lastRow, "O"))
        .Formula = "=IFERROR(VLOOKUP(C2,Check!A:B,2,0),"""")"
        .Value = .Value
     End With
     ' . . . . . .
     With Range(Cells(2, "Y"), Cells(lastRow, "Y"))
        .Formula = "=IFERROR(VLOOKUP(C2,Check!U:V,2,0),"""")"
        .Value = .Value
     End With
  End Sub

Mình đề nghị bạn xen lại chuyện xài VLOOKUP() cả vùng gồm tròn 2 cột là sao (?)
 
Upvote 0
Đây là phần trích từ 'Sub' đang chậm của bạn
PHP:
 Sub CheckNorm()
    Dim lastRow As Long
  
    Sheets("Product_Qty").Select
    lastRow = Cells(Rows.Count, "C").End(xlUp).Row
     With Range(Cells(2, "O"), Cells(lastRow, "O"))
        .Formula = "=IFERROR(VLOOKUP(C2,Check!A:B,2,0),"""")"
        .Value = .Value
     End With
     ' . . . . . .
     With Range(Cells(2, "Y"), Cells(lastRow, "Y"))
        .Formula = "=IFERROR(VLOOKUP(C2,Check!U:V,2,0),"""")"
        .Value = .Value
     End With
  End Sub

Mình đề nghị bạn xen lại chuyện xài VLOOKUP() cả vùng gồm tròn 2 cột là sao (?)
VLOOKUP() cả vùng gồm tròn 2 cột là sao (?)
Câu hỏi này của bác mình vẫn chưa hiểu lắm ạ, bác có thể chỉ rõ ra chút được ko ạ, hàm vlookup đấy của mình chỉ đơn giản là tìm trả về giá trị tương ứng ô C2 thôi bác ạ.
 
Upvote 0
À mình cho rằng bạn tìm ở 1 vùng gồm 2 cột với 99 dòng sẽ khác với vùng 2 cột 999 999 dòng
vâng để mình thử lại
đã sửa lại theo vùng nhưng ko đỡ hơn được bao nhiêu bác ợ, cũng chả hiểu là do đâu. mà như bác @cantl chạy cả sub đấy chưa đầy 26 giây đã xong :((
 
Lần chỉnh sửa cuối:
Upvote 0
À mình cho rằng bạn tìm ở 1 vùng gồm 2 cột với 99 dòng sẽ khác với vùng 2 cột 999 999 dòng
cám ơn bác nhé, đã kiểm tra kỹ lại thì có vẻ như việc chạy vlookup 2 cột nó lâu hơn nên mình đã khoanh vùng giới hạn lại chạy rất nhanh, tổng thời gian chạy file hết tầm 23s :D, chân thành cám ơn các bác đã đóng góp ý kiến ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom