dangductuong2125
Thành viên tiêu biểu
- Tham gia
- 26/7/22
- Bài viết
- 414
- Được thích
- 524
- Nghề nghiệp
- 何でも
Tớ không Conditional Formatting được cái bảng này.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NgayMin&
Application.EnableEvents = False
Dim VungNhap As Range, Cell As Range
Dim SaveValue$
Set VungNhap = [E7:S12]
NgayMin = 1000000
If Not Intersect(Target, VungNhap) Is Nothing Then
For Each Cell In Range(Cells(Target.Row, 5), Cells(Target.Row, 19))
If Not IsEmpty(Cell) Then
SaveValue = Right(Cell.Value, 6)
On Error Resume Next
If CLng(SaveValue) <= NgayMin Then
NgayMin = SaveValue
End If
End If
Next
For Each Cell In Range(Cells(Target.Row, 5), Cells(Target.Row, 19))
If Not IsEmpty(Cell) Then
If CLng(Right(Cell.Value, 6)) <= NgayMin Then
Cell.Interior.ColorIndex = 6
Else
Cell.Interior.ColorIndex = 0
End If
Else
Cell.Interior.ColorIndex = 0
End If
Next
End If
Application.EnableEvents = True
End Sub
ThửEm chào các bác,
Em dùng Conditional Formatting để tô màu, nhưng không hiệu quả với File làm việc của em. Các bác xem giúp em
File chi tiết các bác xem giúp em. Em cảm ơn.
Cảm ơn bạn nhiều nhéTớ không Conditional Formatting được cái bảng này.
Dùng tạm, code hơi lủng củng, lặp từ quá chuối, mấy con số giới hạn vùng, cột chắc tự chỉnh sửa được nhẩy?
Mã:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim NgayMin& Application.EnableEvents = False Dim VungNhap As Range, Cell As Range Dim SaveValue$ Set VungNhap = [E7:S12] NgayMin = 1000000 If Not Intersect(Target, VungNhap) Is Nothing Then For Each Cell In Range(Cells(Target.Row, 5), Cells(Target.Row, 19)) If Not IsEmpty(Cell) Then SaveValue = Right(Cell.Value, 6) On Error Resume Next If CLng(SaveValue) <= NgayMin Then NgayMin = SaveValue End If End If Next For Each Cell In Range(Cells(Target.Row, 5), Cells(Target.Row, 19)) If Not IsEmpty(Cell) Then If CLng(Right(Cell.Value, 6)) <= NgayMin Then Cell.Interior.ColorIndex = 6 Else Cell.Interior.ColorIndex = 0 End If Else Cell.Interior.ColorIndex = 0 End If Next End If Application.EnableEvents = True End Sub
Góp vui.Em chào các bác,
Em dùng Conditional Formatting để tô màu, nhưng không hiệu quả với File làm việc của em. Các bác xem giúp em
File chi tiết các bác xem giúp em. Em cảm ơn.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Long
R = Target.Row
If R >= 7 And Target.Column >= 5 Then
Call ToMau(R)
End If
End Sub
Sub ToMau(aRow As Long)
Dim i&, Col&, M&, aCol&
Dim Cel As Range, Rng As Range, jRng As Range
Dim S
Dim sh As Worksheet
Set sh = ActiveSheet
Col = sh.Cells(aRow, Columns.Count).End(xlToLeft).Column
If sh.Cells(aRow, 5) <> Empty Then aCol = 5 Else aCol = sh.Cells(aRow, 5).End(xlToRight).Column
Set Cel = sh.Cells(aRow, aCol)
Set Rng = sh.Range(sh.Cells(aRow, 5), sh.Cells(aRow, Col))
M = Split(Cel, " ")(1)
Rng.Interior.Pattern = xlNone
For i = 1 To Rng.Columns.Count
If Rng(1, i) <> Empty Then
S = Split(Rng(1, i), " ")
If S(1) <= M Then M = S(1)
End If
Next i
For i = 1 To Rng.Columns.Count
If Rng(1, i) <> Empty Then
If Split(Rng(1, i), " ")(1) = M Then
If jRng Is Nothing Then Set jRng = Rng(1, i) Else Set jRng = Union(jRng, Rng(1, i))
End If
End If
Next i
jRng.Interior.Color = 65535
End Sub
Cảm ơn anh đã nhiệt tình hỗ trợGóp vui.
Bạn tham khảo code sau:
Code trong VBE/ Sheet1
Code trong ModuleMã:Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim R As Long R = Target.Row If R >= 7 And Target.Column >= 5 Then Call ToMau(R) End If End Sub
Xem fileMã:Sub ToMau(aRow As Long) Dim i&, Col&, M&, aCol& Dim Cel As Range, Rng As Range, jRng As Range Dim S Dim sh As Worksheet Set sh = ActiveSheet Col = sh.Cells(aRow, Columns.Count).End(xlToLeft).Column If sh.Cells(aRow, 5) <> Empty Then aCol = 5 Else aCol = sh.Cells(aRow, 5).End(xlToRight).Column Set Cel = sh.Cells(aRow, aCol) Set Rng = sh.Range(sh.Cells(aRow, 5), sh.Cells(aRow, Col)) M = Split(Cel, " ")(1) Rng.Interior.Pattern = xlNone For i = 1 To Rng.Columns.Count If Rng(1, i) <> Empty Then S = Split(Rng(1, i), " ") If S(1) <= M Then M = S(1) End If Next i For i = 1 To Rng.Columns.Count If Rng(1, i) <> Empty Then If Split(Rng(1, i), " ")(1) = M Then If jRng Is Nothing Then Set jRng = Rng(1, i) Else Set jRng = Union(jRng, Rng(1, i)) End If End If Next i jRng.Interior.Color = 65535 End Sub
uh cảm ơn bạn nhiều nhé. Dữ liệu ít cũng rất hay. Của mình dữ liệu nhiều quáThử
=RIGHT (E7,6) - AGGREGATE(15 ,6 ,RIGHT($E7:$S7,6)/($E7:$S7<>"") ,1 )= 0