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
Cảm ơn bác,e đã sửa lại bài 19,nhờ các bác xem giúp.Bạn tự kiểm tra lại xem bạn sửa code đúng như anh hoangvuluan chưa nhé
Cảm ơn bác,e đã sửa lại bài 19,nhờ các bác xem giúp.
Option Explicit
Private Sub CommandButton1_Click()
Dim r As Range, a(), i As Long, iR As Long, iC As Long, j As Long
With Application
.ScreenUpdating = False
Set r = ActiveSheet.Range("a10")
Set r = ActiveSheet.Range(r, r.End(xlToRight).End(xlDown))
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).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
.ScreenUpdating = True
End With
End Sub
Private Sub CommandButton2_Click()
Dim r As Range
Set r = ActiveSheet.Range("a10")
Set r = ActiveSheet.Range(r, r.End(xlToRight).End(xlDown))
r.Rows.EntireRow.Hidden = False
r.Rows.Font.Color = 0
Set r = Nothing
End Sub
Cảm ơn sự nhiệt tình giúp đỡ của bác,nhưng bác xem lại giúp e.Nhấn Commandbutton1 thì ok,còn khi nhấn commandbutton2 thì nó không unhide dòng 52 và 53.Thay 2 macro trên bằng 2 macro sau:
PHP:Option Explicit Private Sub CommandButton1_Click() Dim r As Range, a(), i As Long, iR As Long, iC As Long, j As Long With Application .ScreenUpdating = False Set r = ActiveSheet.Range("a10") Set r = ActiveSheet.Range(r, r.End(xlToRight).End(xlDown)) 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).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 .ScreenUpdating = True End With End Sub Private Sub CommandButton2_Click() Dim r As Range Set r = ActiveSheet.Range("a10") Set r = ActiveSheet.Range(r, r.End(xlToRight).End(xlDown)) r.Rows.EntireRow.Hidden = False r.Rows.Font.Color = 0 Set r = Nothing End Sub
Vì code dùng End(xlUp) nên sẽ cho kết quả sai trong trường hợp có dòng ẩn ở cuối dữ liệuCảm ơn sự nhiệt tình giúp đỡ của bác,nhưng bác xem lại giúp e.Nhấn Commandbutton1 thì ok,còn khi nhấn commandbutton2 thì nó không unhide dòng 52 và 53.
Private Sub CommandButton2_Click()
With ActiveSheet.Range("A:A").EntireRow
.Hidden = False: .Font.Color = 0
End With
End Sub
Khắc phục được không unhide hết các dòng nhưng lại mắc lại lỗi cũ trong bài 19 bác ah.E muốn khi unhide nó trả về màu ban đầu trong vùng A10:C65536 thôi.Code này trả về màu số 0 toàn bộ sheet.Vì code dùng End(xlUp) nên sẽ cho kết quả sai trong trường hợp có dòng ẩn ở cuối dữ liệu
Bạn sửa code này thành vầy là được rồi:
PHP:Private Sub CommandButton2_Click() With ActiveSheet.Range("A:A").EntireRow .Hidden = False: .Font.Color = 0 End With End Sub
Thì chổ With ActiveSheet.Range("A:A").EntireRow bạn sửa thành With ActiveSheet.Range("A10:A60000").EntireRow là được rồiKhắc phục được không unhide hết các dòng nhưng lại mắc lại lỗi cũ trong bài 19 bác ah.E muốn khi unhide nó trả về màu ban đầu trong vùng A10:C65536 thôi.Code này trả về màu số 0 toàn bộ sheet.
E đã sửa lại như bác nói nhưng nó vẫn trả các cell khác ngoài vùng đó về màu số 0.Các giá trị ngoài vùng này e có tô màu chữ nên khi sử dụng marco thì nó đưa tất cả về màu 0.Mong bác xem file đính kèm giúp e với.Thanks.Thì chổ With ActiveSheet.Range("A:A").EntireRow bạn sửa thành With ActiveSheet.Range("A10:A60000").EntireRow là được rồi
Tóm lại: muốn code hoạt động tại vùng nào, cứ sửa đỉa chỉ cho phù hợp!
E đã sửa lại như bác nói nhưng nó vẫn trả các cell khác ngoài vùng đó về màu số 0.Các giá trị ngoài vùng này e có tô màu chữ nên khi sử dụng marco thì nó đưa tất cả về màu 0.Mong bác xem file đính kèm giúp e với.Thanks.
Private Sub CommandButton2_Click()
With ActiveSheet.Range("A10:C65536")
.EntireRow.Hidden = False
.Font.Color = 0
End With
End Sub