Sửa code theo yêu cầu và cải thiện tốc độ xử lý (1 người xem)

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

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

qv7tb

Sâu phải đào
Tham gia
11/1/12
Bài viết
153
Được thích
6
Nghề nghiệp
kỹ sư điện
Xin chào các bác GPE!
Hiện em có code sau:
Viết cho tô màu cho khoảng trắng lớn nhất maxblank khoảng [1;0]
code:
Sub MaxBln10()
Dim Rng As Range, Rng1 As Range, Rng2 As Range, mRng As Range
Dim BlankCnt As Integer, MaxBln As Integer
On Error GoTo Tiep
For Each Rng In Sheet1.Range("a2:a35")
Set Rng1 = Rng.End(xlToRight)
MaxBln = 0
Do
If Rng1.Value = 1 And Rng1.End(xlToRight).Value = 0 Then
BlankCnt = Range(Rng1, Rng1.End(xlToRight)).Columns.Count - 2
If BlankCnt > MaxBln Then
MaxBln = BlankCnt
Set mRng = Rng1
End If
End If
Set Rng1 = Rng1.End(xlToRight)
Loop Until Rng1.End(xlToRight).Column >= 3718
Range(mRng.Offset(, 1), mRng.End(xlToRight).Offset(, -1)).Interior.ColorIndex = 6
Sheet1.Range("ELZ" & Rng.Row).Value = MaxBln
Set mRng = Nothing
Set Rng1 = Nothing
Tiep:
Next
End Sub.


Sau đó so với thực tế còn vét thiếu trường hợp tô màu cho khoảng lớn nhất maxblank khoảng [1;1].
+) Kết hợp cả 2 trường hợp em nhờ các bác viết lại code tô màu cho khoảng trắng lớn nhất của khoảng [1;0] và [1;1] theo file dính kèm
+) Tốc độ code tối ưu nhất có thể
Xin cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Theo mình thì với iêu cầu tô màu vùng đạt iêu cầu định ra như macro trên đã là tối ưu về tốc độ rồi:
Do mình chỉ có E2003 nên chạy code với 24 dòng & 250 cột (file của bạn) chỉ mất
-1.33937305690779E-12 thời gian thôi;

Còn iêu cầu bổ sung, thì theo mình nên viết thêm 1 macro khác nữa tương tự
Chứ viết chung có thể được nhưng chắc cũng chả nhanh hơn chạy từng macro là bao nhiêu.

Hình như loại bài này bạn đã được giúp đỡ trước đây rồi; Sao bạn không viết tiếp iêu cầu mới lên bài cũ mà tạo bài mới vậy?
 
Upvote 0
Theo mình thì với iêu cầu tô màu vùng đạt iêu cầu định ra như macro trên đã là tối ưu về tốc độ rồi:
Do mình chỉ có E2003 nên chạy code với 24 dòng & 250 cột (file của bạn) chỉ mất
-1.33937305690779E-12 thời gian thôi;

Còn iêu cầu bổ sung, thì theo mình nên viết thêm 1 macro khác nữa tương tự
Chứ viết chung có thể được nhưng chắc cũng chả nhanh hơn chạy từng macro là bao nhiêu.

Hình như loại bài này bạn đã được giúp đỡ trước đây rồi; Sao bạn không viết tiếp iêu cầu mới lên bài cũ mà tạo bài mới vậy?
Vâng dạng này sài rồi. em chỉ muốn chút thay đổi. nên nhờ các bác cao thủ thêm thuật toán cho nó đúng với yêu cầu(nếu kiểu offset thay bằng aray nhanh hơn chút nào không bác?). Bác có ý tưởng gì hay cứ đưa ra em xem phù hợp với bài không. Cảm ơn bác.
 
Lần chỉnh sửa cuối:
Upvote 0
Vâng dạng này sài rồi. em chỉ muốn chút thay đổi. nên nhờ các bác cao thủ thêm thuật toán cho nó đúng với yêu cầu. Bác có ý tưởng gì hay cứ đưa ra em xem phù hợp với bài không. Cảm ơn bác.

File ở bài #1 không có code, code ở trên thì không áp dụng cho sheet1

Thuật toán thì không rõ bạn cần nhanh gì nữa, khi chạy click chuột chưa xong, code đã xong?, phần mở rộng thì bạn tự viết tốt vì đã làm được phần trên rồi,thì cái thêm có chi nhỉ?

Không rõ bạn ứng dụng vào vấn đề gì, vì toàn thấy 1 0, như là kết quả của chương trình khác, vậy nếu là từ chương trình khác, thì nên gắn vào code chương trình đó luôn thì nhanh hơn là đổ ra sheet rồi lại tô màu
 
Upvote 0
File ở bài #1 không có code, code ở trên thì không áp dụng cho sheet1

Thuật toán thì không rõ bạn cần nhanh gì nữa, khi chạy click chuột chưa xong, code đã xong?, phần mở rộng thì bạn tự viết tốt vì đã làm được phần trên rồi,thì cái thêm có chi nhỉ?

Không rõ bạn ứng dụng vào vấn đề gì, vì toàn thấy 1 0, như là kết quả của chương trình khác, vậy nếu là từ chương trình khác, thì nên gắn vào code chương trình đó luôn thì nhanh hơn là đổ ra sheet rồi lại tô màu

Bạn đọc rất kỹ và thực hành rồi code rồi.
Tôi đã sửa lại code chuẩn đó. bạn coi lại và thực hành cho rõ.
Phần thêm là vướng mắc của tôi nên nhờ mọi người.
phần ứng dụng vào công việc của mỗi cá nhân nên riêng tư bạn.
Cảm ơn bạn quan tâm.
 
Upvote 0

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

Back
Top Bottom