Nhờ các bác viết giùm e con marco,yêu cầu nằm trong file đính kèm.Thanks.
Sub fillColor()
Dim r As Range, a(), i As Long, iR As Long, iC As Long
Set r = ActiveSheet.Range("a5").CurrentRegion
iR = r.Rows.Count
ReDim a(1 To iR, 1 To 3)
a = r
ReDim Preserve a(1 To iR, 1 To 4)
For i = 1 To iR - 1
For j = i + 1 To iR
If a(j, 4) = 0 Then
If a(i, 1) = a(j, 1) And a(i, 2) = a(j, 2) And a(i, 3) = a(j, 3) Then
If a(i, 4) = 0 Then
r.Rows(i).EntireRow.Font.Color = 255
a(i, 4) = 1
End If
a(j, 4) = 1
End If
End If
Next
Next
Set r = Nothing
Erase a
End Sub
Cảm ơn bạn,Nhờ bạn chút nữa.Bạn thêm giùm code tô đỏ xong rồi ẩn những dòng không tô đi.Khi nhấn nút Commandbutton2 thì không ẩn các dòng kia nữa và trả lại màu ban đâu của những cell tô đỏ.Mình gửi file đính kèm
bên dưới.
Private Sub CommandButton1_Click()
Dim r As Range, a(), i As Long, iR As Long, iC As Long
Set r = ActiveSheet.Range("a10").CurrentRegion
iR = r.Rows.Count
ReDim a(1 To iR, 1 To 3)
a = r
ReDim Preserve a(1 To iR, 1 To 4)
For i = 1 To iR - 1
For j = i + 1 To iR
If a(j, 4) = 0 Then
If a(i, 1) = a(j, 1) And a(i, 2) = a(j, 2) And a(i, 3) = a(j, 3) Then
If a(i, 4) = 0 Then
r.Rows(i).EntireRow.Font.Color = 255
a(i, 4) = 1
End If
a(j, 4) = 1
r.Rows(j).EntireRow.Hidden = True
End If
End If
Next
Next
Set r = Nothing
Erase a
End Sub
Private Sub CommandButton2_Click()
Dim r As Range
Set r = ActiveSheet.Range("a10").CurrentRegion
r.Rows.EntireRow.Hidden = False
r.Rows.EntireRow.Font.Color = 0
Set r = Nothing
End Sub
Bạn có thể tham khảo link sau:Nhờ các bác viết giùm e con marco,yêu cầu nằm trong file đính kèm.Thanks.
Khi nhấn Commandbutton2 nó chưa trả những cell tô đỏ về màu ban đầu bạn ah?Tiện thể cho mình số a5 trong code có ý nghĩa như thế nào vậy?Thanks.
Tại sao lại chọn a5 nhỉ trong khi file của mình là bắt đầu từ hàng thứ 2 mà?Mong các bác giải thích giùm.Thanks.Range("a5").CurrentRegionNó tương đương bạn chọn A5, sau đó nhấn Ctrl G/Current Region
Mình vừa test xong,thì marco làm việc trong A1:C65...Nay muốn nó làm việc trong A10:C65...thì sửa lại sao đây các bác?Vì 9 hàng trên mình có dữ liệu không cần tô màu theo điều kiện.VBA mình còn gà lắm.Thanks.Nói vậy thì bạn cứ test thử biết liền, nhớ lâu hơn hỏi. Giả định các vùng rời rạc nhau xem sao v.v..
Nếu vậy thì thay câu lệnhMình vừa test xong,thì marco làm việc trong A1:C65...Nay muốn nó làm việc trong A10:C65...thì sửa lại sao đây các bác?Vì 9 hàng trên mình có dữ liệu không cần tô màu theo điều kiện.VBA mình còn gà lắm.Thanks.
Set r = ActiveSheet.Range("a5").CurrentRegion
Set r = Range(ActiveSheet.Range("a10"), ActiveSheet.Range("C10").End(xlDown))
Bác xem giúp giùm e câu hỏi ở bài 5 với.Thanks.Thì thay a5 bằng a10, a11,... a65 chẳng hạn. Mục đích là chọn 1 ô trong vùng, sau đó tự động mở rộng vùng chọn.
Bạn copy lại đoạn code ở bài #4 nhé http://www.giaiphapexcel.com/forum/...rco-tô-màu-theo-điều-kiện&p=416485#post416485Bác xem giúp giùm e câu hỏi ở bài 5 với.Thanks.
Thêm 1 cách làm, sử dụng 1 nút thôi (Ăn cắp của Concogia)Mình vừa test xong,thì marco làm việc trong A1:C65...Nay muốn nó làm việc trong A10:C65...thì sửa lại sao đây các bác?Vì 9 hàng trên mình có dữ liệu không cần tô màu theo điều kiện.VBA mình còn gà lắm.Thanks.
Public Sub An()
Dim Rng As Range, Cll As Range, Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Set Rng = Sheet1.Range(Sheet1.[A2], Sheet1.[A65000].End(xlUp))
For Each Cll In Rng
If Not Dic.exists(Cll.Value & Cll.Offset(, 1).Value & Cll.Offset(, 2).Value) Then
Dic.Add Cll.Value & Cll.Offset(, 1).Value & Cll.Offset(, 2).Value, ""
Cll.Resize(, 3).Font.ColorIndex = 3
Else
Cll.EntireRow.Hidden = True
End If
Next
Set Dic = Nothing
Set Rng = Nothing
End Sub
Public Sub XONG()
With Sheet1
.Cells.EntireRow.Hidden = False
.Range(.[A2], .[A65000].End(xlUp)).Resize(, 3).Font.ColorIndex = 0
End With
End Sub
Sau khi áp dụng mình nhờ bạn tí,Code không trả về màu ban đầu của các Cell tô đỏ mà nó chọn tất cả trong sheet trở về màu số 0.Bạn sửa giùm sau khi nhấn Commandbutton2 nó trả các cell trong vùng A10:C65536 thôi.Thanks.Bạn copy mã này vào nhé!
PHP:Private Sub CommandButton1_Click() Dim r As Range, a(), i As Long, iR As Long, iC As Long Set r = ActiveSheet.Range("a10").CurrentRegion iR = r.Rows.Count ReDim a(1 To iR, 1 To 3) a = r ReDim Preserve a(1 To iR, 1 To 4) For i = 1 To iR - 1 For j = i 1 To iR If a(j, 4) = 0 Then If a(i, 1) = a(j, 1) And a(i, 2) = a(j, 2) And a(i, 3) = a(j, 3) Then If a(i, 4) = 0 Then r.Rows(i).EntireRow.Font.Color = 255 a(i, 4) = 1 End If a(j, 4) = 1 r.Rows(j).EntireRow.Hidden = True End If End If Next Next Set r = Nothing Erase a End Sub Private Sub CommandButton2_Click() Dim r As Range Set r = ActiveSheet.Range("a10").CurrentRegion r.Rows.EntireRow.Hidden = False r.Rows.EntireRow.Font.Color = 0 Set r = Nothing End Sub
Private Sub CommandButton2_Click()
Dim r As Range
Set r = ActiveSheet.Range("a10:c65000")
r.Rows.EntireRow.Hidden = False
r.Rows.EntireRow.Font.Color = 0
Set r = Nothing
End Sub
Nhờ bác xem lại giùm e tí.Khi nhấn Commandbutton1 nó không những tô đỏ trong vùng A10:C65536,mà nó còn tô các cell khác nằm trong cột khác thuộc hàng A16 trở xuống.Nhờ bác sửa nó tô đỏ trong vùng A16:C65536 thôi.E gửi file đính kèm.Bạn chỉ cần sửa lại như bên dưới là được.
PHP:Private Sub CommandButton2_Click() Dim r As Range Set r = ActiveSheet.Range("a10:c65000") r.Rows.EntireRow.Hidden = False r.Rows.EntireRow.Font.Color = 0 Set r = Nothing End Sub