Tô màu cho đẹp à bạn hay làm gì mà tô 500 nghìn dòng.Chào anh chị,
Em có file do dữ liệu lớn hơn 500.000 dòng và khi dùng conditional formatting thì bị chậm, nên nhờ anh chị viết giúp em code để tô màu dòng xen kẻ theo điều kiện cùng mã thì cùng màu dòng. Em cảm ơn các anh chị ạ.
Dạ dữ liệu của em là file tính toán và có nhập liệu nữa nên cần tô màu theo dòng có cùng ID để dễ nhận biết trong cùng nhóm đó anh.Tô màu cho đẹp à bạn hay làm gì mà tô 500 nghìn dòng.
Màu mè vào rồi file của anh chị cũng thành 1 đống rác thôi. Chưa nói tới nó sẽ làm tăng dung lượng file lên nữa. và cùng mã thì cùng màu. nếu 500k dòng có 300k mã khác nhau thì cũng nhọc đấyDạ dữ liệu của em là file tính toán và có nhập liệu nữa nên cần tô màu theo dòng có cùng ID để dễ nhận biết trong cùng nhóm đó anh.
Cảm ơn bạn nhé, mình đang tìm code còn làm cột phụ và conditional formatting thì mình cũng đang thực hiện rồi.Theo tôi bạn chỉ làm việc này 1 lần thì không cần viết code chi cho tốn thời gian.
Như lời khuyên những bài trên, số lượng trên 500K dòng thì màu ko còn ý nghĩa. Nếu bạn vẫn muốn tô màu thử cân nhắc cách này nhé:
1. Thêm một cột dùng hàm if (hoặc kiểu gì đó) để đánh dấu dòng cần tô --> cột này có thể là true/false
2. Filter cột vừa thêm rồi tô màu.
Tôi làm ví dụ theo file của bạn chưa thử trên file có 500K dòng.
ah, tô màu xen kẽ các dòng đó anhTức là vừa tô màu vừa kẻ dòng á bạn? Thế thì khó quá.
Nếu là tô màu xen kẽ các dòng thì làm ngon lành.
Làm cái này mới nghiệm ra lão Union này có nhiều điều khó hiểu.Chào anh chị,
Em có file do dữ liệu lớn hơn 500.000 dòng và khi dùng conditional formatting thì bị chậm, nên nhờ anh chị viết giúp em code để tô màu dòng xen kẻ theo điều kiện cùng mã thì cùng màu dòng. Em cảm ơn các anh chị ạ.
Option Explicit
Sub TestUnion()
Dim I As Long, mColor As Boolean, Rng As Range, Lr As Long, t As Double
Application.ScreenUpdating = False
t = Timer()
With Sheets("Sheet1")
Lr = .Cells(Rows.Count, "D").End(xlUp).Row
For I = 5 To Lr
If .Cells(I, "D").Value <> .Cells(I - 1, "D").Value Then mColor = Not mColor
If mColor Then
If Rng Is Nothing Then
Set Rng = Range("A" & I & ":U" & I)
Else
Set Rng = Union(Rng, Range("A" & I & ":U" & I))
If Intersect(Rng, Columns("A")).Cells.Count = 2 Then
Rng.Interior.Color = vbYellow
Set Rng = Nothing
End If
End If
End If
Next
End With
On Error Resume Next
Rng.Interior.Color = vbYellow
Set Rng = Nothing
Application.ScreenUpdating = True
MsgBox "Thoi gian: " & Format(Timer - t, "0.0")
End Sub
Option Explicit
Sub tomauxenke()
Dim lr&, i&, c&, rng, u As Range, arr(1 To 1000000, 1 To 1)
lr = Cells(Rows.Count, "D").End(xlUp).Row
rng = Range("D4:D" & lr).Value
For i = 2 To UBound(rng)
If rng(i, 1) <> rng(i - 1, 1) Then c = c + 1
If WorksheetFunction.IsOdd(c) Then
arr(i - 1, 1) = 1
End If
Next
Range("bz5").Resize(UBound(rng) - 1, 2).Value = arr
With Range("A4:bz" & lr)
.AutoFilter Field:=Range("bz1").Column, Criteria1:=1
Range("A5:U" & lr).Interior.Color = 10086143
.AutoFilter
End With
Range("bz4:bz" & lr).ClearContents
End Sub
Vậy thì chạy một lần thôi người ơi =))Gồi xong.
Sau cơ số lần chạy code thì cả bảng là một màu đẹp tuyệt vời.
Cái này thì em biết, cơ mà tới đây nó cũng chỉ có mỗi lỗi này nữa thôi nên cho chạy tuốt luôn anhDòng này thay bằng
If not Rng is nothing then...
Cái này thì em biết, cơ mà tới đây nó cũng chỉ có mỗi lỗi này nữa thôi nên cho chạy tuốt luôn anh
Cái em thấy hay trong bài này là giữa các dòng union thì 100 dòng lại không nhanh hơn 2 dòng (có thể em chưa test được nhiều kiểu dữ liệu, nhưng test dòng chẵn lẻ cho 500.000 dòng thì nó vậy). Mà 2 dòng với 1 dòng thì một trời một vực. Để 1 là đơ file luôn. Chỗ này không hiểu được
Union một range mà dữ liệu lớn là cực chậm anh ạ. Nó tầm khoảng <500 dòng trong một range union. Còn lớn hơn là bắt đầu chậm rì rồi. Nên em mới phải tách ra nhiều lần đấy, mỗi lần xong lại set về nothing. Nhưng cái lạ là em cứ nghĩ cứ cho union nhiều dòng xíu rồi tô màu thì nhanh hơn mà test thì thấy 500 dòng chậm hơn 100, 100 chậm hơn 10 haha. Lão hóa luôn cái nãoBài toán chỉ phân thành 2 loại, bạn làm lại thuật toán gom loại cần tô màu vào 1 Range rồi cuối cùng mới tô màu xem.
Vậy bạn có bao nhiêu mã trong 500K dòng vậy?. . . , nên nhờ anh chị viết giúp em code để tô màu dòng xen kẻ theo điều kiện cùng mã thì cùng màu dòng. Em cảm ơn các anh chị ạ.
à chỉ tô xen kẽ 2 màu thôi anh, mã trùng nhau thì cùng 1 màu.Vậy bạn có bao nhiêu mã trong 500K dòng vậy?
E rằng không đủ màu để tô ấy chứ?!
Mà sao lại phải tô cả dóng, sao không tô chỉ cột mã đó thôi?
Nói chung là chủ bài đăng trả giá khá đắt khi tô màu như vậy.