Cần giúp đỡ về so sánh ngày tháng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thanhnt1910

Thành viên mới
Tham gia
25/10/17
Bài viết
36
Được thích
2
Giới tính
Nam
Em chào mọi người ạ, e cần so sánh ngày nghỉ ở sheet "ThongSo" với sheet BangChamCong, nếu trùng với số ngày ở hàng thứ 8 thì toàn bộ cột trùng của sheet BangChamCong sẽ bôi màu xanh. Em đã lấy được giá trị ở 2 sheet ở module 2 và module 3 nhưng em chưa biết so sánh thế nào. Mong anh chị giúp đỡ ạ. Em cảm ơn ạ.
 

File đính kèm

Thứ nhất là nói về các "râu ria" trước:

(*) Tên trang tính nên là 'BCC' thay vì 'BangChamCong'

(*) Bạn không nên thụt đầu dòng các câu lệnh vô tội vạ như vầy:
PHP:
Sub LayGiaTriBCC()
Dim Target2 As Range            'Dg 1   '
Sheets("BangChamCong").Select   'Dg 2    '
    Set Target2 = Range("C8", Range("C8:AF8" & Columns.Count).End(xlToRight))
    For Each r In Target2       'Dg 4       '
       MsgBox r.Offset(0, 1)    'Dg 5       '
    Next
End Sub
Cái ni chỉ thích hợp cho những vị đã 'Hàn lâm' về code mà thôi; khuyên bạn khoan hãy bắt chước!

Đi vô fần chính iêu cầu so sánh của bạn:
Bạn đang cần so sánh số liệu ngày; Vây nên nhập ở ô [D8] của 'BCC' hàm này:
=Date(year(ThongSo!ThangSX), Month(ThongSo!ThangSX),, 1)
& định dạng để nó thể hiện kiểu 'DD'
Ô bên fải liền kế ta áp công thức =D8+1

Khi í, các ô đều là trị kiểu mm/dd/yyyy nên so gì mà chả được;

Ngoài ra còn cái lợi nữa là nhờ CF ta xác đinh ngày nào là 'Thứ bảy' hay Chúa nhật luôn cũng xong tấp lự!
 
Upvote 0
Thứ nhất là nói về các "râu ria" trước:

(*) Tên trang tính nên là 'BCC' thay vì 'BangChamCong'

(*) Bạn không nên thụt đầu dòng các câu lệnh vô tội vạ như vầy:
PHP:
Sub LayGiaTriBCC()
Dim Target2 As Range            'Dg 1   '
Sheets("BangChamCong").Select   'Dg 2    '
    Set Target2 = Range("C8", Range("C8:AF8" & Columns.Count).End(xlToRight))
    For Each r In Target2       'Dg 4       '
       MsgBox r.Offset(0, 1)    'Dg 5       '
    Next
End Sub
Cái ni chỉ thích hợp cho những vị đã 'Hàn lâm' về code mà thôi; khuyên bạn khoan hãy bắt chước!

Đi vô fần chính iêu cầu so sánh của bạn:
Bạn đang cần so sánh số liệu ngày; Vây nên nhập ở ô [D8] của 'BCC' hàm này:
=Date(year(ThongSo!ThangSX), Month(ThongSo!ThangSX),, 1)
& định dạng để nó thể hiện kiểu 'DD'
Ô bên fải liền kế ta áp công thức =D8+1

Khi í, các ô đều là trị kiểu mm/dd/yyyy nên so gì mà chả được;

Ngoài ra còn cái lợi nữa là nhờ CF ta xác đinh ngày nào là 'Thứ bảy' hay Chúa nhật luôn cũng xong tấp lự!
Em cảm ơn anh, em làm theo cách của em được rồi ạ :D
PHP:
Sub KiemTra()
Dim r As Long
Dim a As Integer
Dim b As Integer
r = 4
Sheets("ThongSo").Select
lRow = Range("B19").End(xlDown).row
For r = 4 To 35
    For Each cell In Range("B19:B" & lRow)
        a = Mid(cell.Value, 1, 2)
        b = Sheets("BangChamCong").Cells(8, r).Value
        If a = b Then
            Sheets("BangChamCong").Cells(9, r).Interior.ColorIndex = 3
        End If
    Next
Next r
End Sub
 
Upvote 0
PHP:
Sub KiemTraNgayNghi()
Dim ViTriCot As Long
Dim lastRow As Long
Dim i As Long
Dim a As Integer 'Gia tri ngay nghi sheet ThongSo
Dim b As Integer ''Gia tri ngay nghi sheet BangChamCong
lastRow = Worksheets("BangChamCong").Cells(Rows.Count, "B").End(xlUp).row
Sheets("ThongSo").Select
lRow = Range("B19").End(xlDown).row
For Each cell In Range("B19:B" & lRow)
    For i = 9 To lastRow
        For ViTriCot = 4 To 34
            'Lay ngay nghi sheet ThongSo
            a = Mid(cell.Value, 1, 2)
            'Lay ngay nghi sheet BangChamCong
            b = Sheets("BangChamCong").Cells(8, ViTriCot).Value
            If a = b Then
                Sheets("BangChamCong").Cells(i, ViTriCot).Interior.ColorIndex = 4
            Else
                Sheets("BangChamCong").Cells(i, ViTriCot) = "x"
            End If
        Next ViTriCot
    Next i
Next
End Sub
Em có viết thêm đoạn mã để tự động điền "x" vào cột không phải ngày nghỉ, nhưng lúc chạy xong những cột ngày nghỉ vẫn tự động điền "x" vào ạ. Các anh (chị) giúp em với ạ.
 

File đính kèm

Upvote 0
Em có viết thêm đoạn mã để tự động điền "x" vào cột không phải ngày nghỉ, nhưng lúc chạy xong những cột ngày nghỉ vẫn tự động điền "x" vào ạ. Các anh (chị) giúp em với ạ.
Viết dùm bạn 1 Sub vừa tô màu, vừa đánh dấu x.
Tùy bạn vận dụng vào file thật của bạn.
 

File đính kèm

Upvote 0
Viết dùm bạn 1 Sub vừa tô màu, vừa đánh dấu x.
Tùy bạn vận dụng vào file thật của bạn.
Em cảm ơn anh, em làm được rồi ạ, anh ơi cho em hỏi, làm thế nào để bỏ được edit link khi mới mở file lên bằng vba ạ. Hiện tại em mở file bằng dialog chọn file rồi copy luôn ạ.
 
Upvote 0
PHP:
On Error Resume Next
lOpen = Application.Dialogs(xlDialogOpen).Show
If lOpen = False Then
    MsgBox "Huy Chon!"
    Exit Sub
End If
Set FileBangQD = ActiveWorkbook
With FileBangQD
    .Sheets("CongNghi").Copy ThisWorkbook.Sheets("BangChamCong")
    .Sheets("TangCuong").Copy ThisWorkbook.Sheets("CongNghi")
    .Sheets("BangLuong").Copy ThisWorkbook.Sheets("TangCuong")
    .Sheets("ThongSo").Copy ThisWorkbook.Sheets("BangLuong")
    .Close False
End With
Đây là đoạn code em copy sheet ạ.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom