Thế sao bạn không dùng SUMIFS thay cho SUMPRODUCT, tốc độ của SUMIFS nhanh gấp nhiều lần so với SUMPRODUCT đấyEm viết code thay cho hàm SUMPRODUCT cho ra kết quả dúng nhưng nó chạy chậm quá, nhờ các anh chị chỉnh sửa sao cho nó chay nhanh hơn.
Em xin cảm ơn nhiều./.
em gửi File kèm theo.
Em viết code thay cho hàm SUMPRODUCT cho ra kết quả dúng nhưng nó chạy chậm quá, nhờ các anh chị chỉnh sửa sao cho nó chay nhanh hơn.
Em xin cảm ơn nhiều./.
em gửi File kèm theo.
With Sheets("ChiTiet")
...
For i = 5 To UBound(Res)
For j = 1 To UBound(data)
...
Next
[COLOR=#ff0000].[E7].Resize(i - 0, 45) = Res[/COLOR]
Next
End With
With Sheets("ChiTiet")
...
For i = 5 To UBound(Res)
For j = 1 To UBound(data)
...
Next
Next
.[E7].Resize(UBound(Res), [B][COLOR=#ff0000]45[/COLOR][/B]) = Res
End With
.[E7].Resize(UBound(Res), [B][COLOR=#ff0000]54[/COLOR][/B]) = Res
Cảm ơn bác Siwtom em biết là đưa cái code này lên hỏi thế nào cũng bị các bác Cười, nhưng thà thế còn hơn cứ dốt mãi.
Nhưng sao em sửa lại theo bác vẫn chậm vậy
Bác xem còn chỗ nào sửa giùm em với.
em gửi lại file mới sửa
.[E7].Resize(UBound(Res), 45) = Res
và
.[E7].Resize(UBound(Res), 54) = Res
[COLOR=#ff0000]Next[/COLOR]
.[E7].Resize(UBound(Res), 45) = Res
[COLOR=#ff0000]Next[/COLOR]
End With
và
[COLOR=#ff0000]Next[/COLOR]
.[E7].Resize(UBound(Res), 54) = Res
[COLOR=#ff0000]Next[/COLOR]
End With
Ở cả 2 phần đưa .[E7].Resize [COLOR=#ff0000]ra sau vòng FOR ngoài cùng[/COLOR]
With Sheets("ChiTiet")
...
For i = 5 To UBound(Res)
For j = 1 To UBound(data)
...
[COLOR=#ff0000]Next
Next[/COLOR]
.[E7].Resize(UBound(Res), 45) = Res
End With
Bạn có sửa quái đâu.
.............
Bạn nhìn kỹ vào. "[E7].Resize(UBound(Res), 45) = Res" ở trước End With nhưng sau TẤT CẢ các Next. Nhìn kỹ rồi nhìn lại code của mình.
Bài này vẫn tối ưu được nữa chứ bác siwtom?,
Định làm, nhưng thấy chỗ nhiều vòng FOR cứ buồn cười sao ý,
Tuy vậy, người hỏi đưa lệnh đó ra ngoài, chắc tốc độ đã cải thiện nhiều, đủ dùng?
Người hỏi cũng chả thèm nói tốc độ bây giờ như thế nào nhưng tôi cũng đã thử. Tất nhiên nếu chỉ đập mảng xuống sheet 2 lần thay cho 5000 lần thì rõ ràng tốc độ nhanh rồi. Trên máy của tôi (đã nhiều lần so sánh chạy code thì máy của tôi chạy 5 - 10 lần chậm hơn những máy của người khác trên GPE) thì code chạy mất ~ 1,9 giây. Lúc đầu tò mò chạy code của tác giả thì đợi lâu quá nên tôi Kill luôn Excel.
Bạn muốn tối ưu mà có hứng thì làm cho người hỏi đi. Tôi xin nghỉ thôi.
Cảm ơn các bác chắc chưa có bác đủ kiên nhẫn chờ cái code của em chạy xong. Sau khi sửa code theo hướng dẫn của bác viwtom em thấy thời gian từ gần 1h chỉ còn tính bằng giây là em mừng lắm, nhưng không nghĩ là có thể rút ngắn được nữa nên không hỏi, sợ các bác cho là được voi đòi tiên, nếu còn rút càng ngắn được thì càng tốt, mong các bác chỉ dùm em luôn.
em cảm ơn nhiêù!
Cảm ơn các bác chắc chưa có bác đủ kiên nhẫn chờ cái code của em chạy xong. Sau khi sửa code theo hướng dẫn của bác viwtom em thấy thời gian từ gần 1h chỉ còn tính bằng giây là em mừng lắm, nhưng không nghĩ là có thể rút ngắn được nữa nên không hỏi, sợ các bác cho là được voi đòi tiên, nếu còn rút càng ngắn được thì càng tốt, mong các bác chỉ dùm em luôn.
em cảm ơn nhiêù!
If a Then
If b Then
...
If z Then
MsgBox "hichic"
End If
...
End If
End If
If a and b and ... and z Then
MsgBox "hichic"
End If
Function bla() As Boolean
bla = False
MsgBox "bla"
End Function
Function he() As Boolean
he = True
MsgBox "he"
End Function
Sub hichic()
If bla Then
If he Then
Debug.Print "tot"
End If
End If
End Sub
Sub hehe()
If bla And he Then
Debug.Print "tot"
End If
End Sub
Chỉ có bạn vodoi2x đòi tối ưu vậy bạn nên gửi tin nhắn cho vodoi2x xem sao. Vì bạn vodoi2x có thể không vào đọc chủ đề này nữa.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2