em muốn tô màu các giá trị gần nhất và lớn hơn giá trị cuối cùng nhờ mọi người giúp đỡ em.

Blue Softs Liên hệ QC

3ii

Thành viên hoạt động
Tham gia
4/7/21
Bài viết
146
Được thích
38
Như vậy thì được hiểu là, nếu ô liền kề (bỏ qua ô rỗng) lớn hơn ô cuối cùng của cột chỉ định thì tô màu, không thì hàng đó không tô. Ngắn gọn dễ hiểu dễ làm.
Vâng đúng rồi sếp, tiêu đề của em cũng ngắn gọn như thế ôi thôi bỏ đi. Tóm lại phát biểu của sếp như này em thấy chuẩn rồi.
 

batman1

Thành viên gạo cội
Tham gia
8/9/14
Bài viết
4,712
Được thích
7,745
Như vậy thì được hiểu là, nếu ô liền kề (bỏ qua ô rỗng) lớn hơn ô cuối cùng của cột chỉ định thì tô màu, không thì hàng đó không tô. Ngắn gọn dễ hiểu dễ làm.
Cuối cùng cũng đoán được à. :D

Tôi đọc bài #15 và đoán đúng.
Kết quả của chú cho ra là các ô màu cam, còn kết quả cháu muốn tìm và so sánh là các con số màu xanh dương vì nó là con số
gần nhất với ngày nhập sau cùng.
như vậy sẽ tìm các con số màu xanh này và tiếp đến là so sánh con số màu xanh này với con số tại cột G nếu con số màu xanh này
lớn hơn (thôi thì hoặc bằng nữa cũng được.) thì tô màu nền còn các con số khác nhỏ hơn không xét màu mè nào thì để nguyên.
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,418
Được thích
16,189
Giới tính
Nam
Vâng đúng rồi sếp, tiêu đề của em cũng ngắn gọn như thế ôi thôi bỏ đi. Tóm lại phát biểu của sếp như này em thấy chuẩn rồi.
Nếu bạn muốn dùng code VBA thì bạn làm như sau:

1632841161718.png

Bạn cần fill màu đỏ cột cần so sánh, sau đó bấm nút KIỂM TRA, dĩ nhiên nếu bạn chưa fill đỏ code sẽ nhắc bạn tô đỏ và sau khi chạy code nó sẽ xóa màu giúp bạn. Dưới đây là code:

Mã:
Sub KiemTra()
    Dim shtData As Worksheet
    Dim rngFind As Range, rngNgayThang As Range
    Dim c As Long, e As Long, r As Long, col As Long
    Set shtData = Worksheets("Sheet1")
    e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row
    Set rngNgayThang = shtData.Range("C2:J2")
    ''Tim cot có ô fill màu do:
    For Each rngFind In rngNgayThang
        If rngFind.Interior.Color = 255 Then
            col = rngFind.Column
            Exit For
        End If
    Next
    
    If col = 0 Then
        rngNgayThang.Interior.Color = 255
        MsgBox "Ban phai tô màu do tai 01 ô trên hàng ngày tháng câ`n so sánh!"
        rngNgayThang.Interior.Pattern = xlNone
        Exit Sub
    End If
    
    ''Xóa fill màu:
    rngNgayThang.Interior.Pattern = xlNone
    shtData.Range("C3:J" & e).Interior.Pattern = xlNone
    
    For r = 3 To e
        For c = col - 1 To 3 Step -1
            If shtData.Cells(r, c).Value > 0 Then
                If shtData.Cells(r, c).Value > shtData.Cells(r, col).Value Then
                    shtData.Cells(r, c).Interior.Color = 65535
                End If
                Exit For
            End If
        Next
    Next
End Sub
 

File đính kèm

  • tomau-HTN.xlsm
    296.4 KB · Đọc: 2
  • Yêu thích
Reactions: 3ii

3ii

Thành viên hoạt động
Tham gia
4/7/21
Bài viết
146
Được thích
38
Nếu bạn muốn dùng code VBA thì bạn làm như sau:

View attachment 266895

Bạn cần fill màu đỏ cột cần so sánh, sau đó bấm nút KIỂM TRA, dĩ nhiên nếu bạn chưa fill đỏ code sẽ nhắc bạn tô đỏ và sau khi chạy code nó sẽ xóa màu giúp bạn. Dưới đây là code:

Mã:
Sub KiemTra()
    Dim shtData As Worksheet
    Dim rngFind As Range, rngNgayThang As Range
    Dim c As Long, e As Long, r As Long, col As Long
    Set shtData = Worksheets("Sheet1")
    e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row
    Set rngNgayThang = shtData.Range("C2:J2")
    ''Tim cot có ô fill màu do:
    For Each rngFind In rngNgayThang
        If rngFind.Interior.Color = 255 Then
            col = rngFind.Column
            Exit For
        End If
    Next
   
    If col = 0 Then
        rngNgayThang.Interior.Color = 255
        MsgBox "Ban phai tô màu do tai 01 ô trên hàng ngày tháng câ`n so sánh!"
        rngNgayThang.Interior.Pattern = xlNone
        Exit Sub
    End If
   
    ''Xóa fill màu:
    rngNgayThang.Interior.Pattern = xlNone
    shtData.Range("C3:J" & e).Interior.Pattern = xlNone
   
    For r = 3 To e
        For c = col - 1 To 3 Step -1
            If shtData.Cells(r, c).Value > 0 Then
                If shtData.Cells(r, c).Value > shtData.Cells(r, col).Value Then
                    shtData.Cells(r, c).Interior.Color = 65535
                End If
                Exit For
            End If
        Next
    Next
End Sub
Cảm ơn sếp rất nhiều,em đã bấm nút và so sánh khớp đáp án mẫu.. như đã nói bài này em muốn dùng công thức hơn nhưng code thì em đang học hỏi tham khảo có thêm phương pháp thì tốt em rồi, sếp còn đau đầu nữa không vậy, khổ thân sếp đau đầu em cũng phát sốt theo.
Bài đã được tự động gộp:

Nếu bạn muốn dùng code VBA thì bạn làm như sau:

View attachment 266895

Bạn cần fill màu đỏ cột cần so sánh, sau đó bấm nút KIỂM TRA, dĩ nhiên nếu bạn chưa fill đỏ code sẽ nhắc bạn tô đỏ và sau khi chạy code nó sẽ xóa màu giúp bạn. Dưới đây là code:

Mã:
Sub KiemTra()
    Dim shtData As Worksheet
    Dim rngFind As Range, rngNgayThang As Range
    Dim c As Long, e As Long, r As Long, col As Long
    Set shtData = Worksheets("Sheet1")
    e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row
    Set rngNgayThang = shtData.Range("C2:J2")
    ''Tim cot có ô fill màu do:
    For Each rngFind In rngNgayThang
        If rngFind.Interior.Color = 255 Then
            col = rngFind.Column
            Exit For
        End If
    Next
   
    If col = 0 Then
        rngNgayThang.Interior.Color = 255
        MsgBox "Ban phai tô màu do tai 01 ô trên hàng ngày tháng câ`n so sánh!"
        rngNgayThang.Interior.Pattern = xlNone
        Exit Sub
    End If
   
    ''Xóa fill màu:
    rngNgayThang.Interior.Pattern = xlNone
    shtData.Range("C3:J" & e).Interior.Pattern = xlNone
   
    For r = 3 To e
        For c = col - 1 To 3 Step -1
            If shtData.Cells(r, c).Value > 0 Then
                If shtData.Cells(r, c).Value > shtData.Cells(r, col).Value Then
                    shtData.Cells(r, c).Interior.Color = 65535
                End If
                Exit For
            End If
        Next
    Next
End Sub
hay quá sếp bấm lần 2 mới thấy hay, tô màu tiêu đề cái cột có dữ liệu cuối cùng hay đấy sếp.
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,418
Được thích
16,189
Giới tính
Nam
Cảm ơn sếp rất nhiều,em đã bấm nút và so sánh khớp đáp án mẫu.. như đã nói bài này em muốn dùng công thức hơn nhưng code thì em đang học hỏi tham khảo có thêm phương pháp thì tốt em rồi, sếp còn đau đầu nữa không vậy, khổ thân sếp đau đầu em cũng phát sốt theo.
Nếu dùng được công thức thì dùng, nhưng bạn cũng thử các ngày sau của nó xem có đúng không hay chỉ so sánh với ngày 5/9 nhé.
 
  • Yêu thích
Reactions: 3ii

3ii

Thành viên hoạt động
Tham gia
4/7/21
Bài viết
146
Được thích
38
Nếu dùng được công thức thì dùng, nhưng bạn cũng thử các ngày sau của nó xem có đứng không hay chỉ so sánh với ngày 5/9 nhé.
Em thử rồi từ nãy giờ bấm sướng quá cứ bấm mãi nó có lùi hoặc tiến theo tiêu đề cột mình tô, nhưng sếp chỉnh thêm chút nữa tô màu nào vào tiêu đề cũng phải tô cứ bắt tô một màu cũng hơi gượng . ===\.
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,418
Được thích
16,189
Giới tính
Nam
Em thử rồi từ nãy giờ bấm sướng quá cứ bấm mãi nó có lùi hoặc tiến theo tiêu đề cột mình tô, nhưng sếp chỉnh thêm chút nữa tô màu nào vào tiêu đề cũng phải tô cứ bắt tô một màu cũng hơi gượng . ===\.
Rồi, tới giờ đòi bà Phương Hằng luôn rồi! Cái đó không khó đâu.
 
  • Yêu thích
Reactions: 3ii

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,418
Được thích
16,189
Giới tính
Nam
Đau đầu vời thằng em này thật sếp nhỉ, em cụp máy đây cảm ơn sếp.
Đó, bạn muốn xanh đỏ tím vàng gì tùy!

1632843396515.png


Mã:
Sub KiemTra()
    Dim shtData As Worksheet
    Dim rngFind As Range, rngNgayThang As Range
    Dim c As Long, e As Long, r As Long, col As Long
    Set shtData = Worksheets("Sheet1")
    e = shtData.Range("B" & shtData.Rows.Count).End(xlUp).Row
    Set rngNgayThang = shtData.Range("C2:J2")
    ''Tim cot có ô fill màu bat ky:
    For Each rngFind In rngNgayThang
        If Not rngFind.Interior.Pattern = xlNone Then
            col = rngFind.Column
            Exit For
        End If
    Next
    
    If col = 0 Then
        rngNgayThang.Interior.Color = 255
        MsgBox "Ban phai tô màu gì dó tai 01 ô trên hàng ngày tháng câ`n so sánh!"
        rngNgayThang.Interior.Pattern = xlNone
        Exit Sub
    End If
    
    ''Xóa fill màu:
    rngNgayThang.Interior.Pattern = xlNone
    shtData.Range("C3:J" & e).Interior.Pattern = xlNone
    
    For r = 3 To e
        For c = col - 1 To 3 Step -1
            If shtData.Cells(r, c).Value > 0 Then
                If shtData.Cells(r, c).Value > shtData.Cells(r, col).Value Then
                    shtData.Cells(r, c).Interior.Color = 65535
                End If
                Exit For
            End If
        Next
    Next
End Sub
 
  • Yêu thích
Reactions: 3ii
Top Bottom