Nhờ giúp đỡ lọc trùng lịch làm việc NV khoảng thời gian trong ngày

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

ltnhanhcm

Thành viên mới
Tham gia
24/5/11
Bài viết
32
Được thích
-7
Kính chào anh, chị, em có 1 file dữ liệu ca làm việc của NV khoảng 5000 dòng. Tuy nhiên file lịch làm việc đang có vấn đề là trong cùng 1 ngày làm việc 1 NV bị trùng thời gian với nhau, em muốn lọc dữ liệu trùng đó và cắt dòng trùng ra 1 sheet khác.
ví dụ: lịch làm việc NV A trong cùng 1 ngày 24/06 có 2 dòng
- dòng 1: ca 13h00_17h00
- dòng 2: ca 15h00_19h00
=> bị trùng thời gian từ 15h-17h -> em muốn lọc dữ liệu trùng này ra và cắt dòng trùng này sang 1 sheet khác.
Vì đây là dữ liệu để import lên web nên ca làm việc phải để đúng cú pháp như vậy.
Anh chị xem giúp em chú thích file đính kèm nhé. Em cảm ơn.
 

File đính kèm

  • Lich lam viec 2.xlsx
    20.1 KB · Đọc: 9
Thôi anh không biết làm thì cứ nhận, bày đặt nói file tôi sai định dạng. Đến cái hàm day chạy còn sai không biết sai chỗ nào thì quá chán.
Bài này tôi làm 30 phút là xong rồi, anh xem mà tham khảo sau này có ai nhờ thì biết mà còn chỉ, chứ không giúp được mà cứ chém gió thì vào group Thư Giãn mà sinh hoạt đừng bon chen vô đây.
Chán cái thằng mất dạy này quá đi thôi!...
MOD có ban nick em ... thì em vẫn chửi...
 
Upvote 0
Dù sao đi nữa thì bạn cũng nên tỏ thái độ tôn trọng với bác SA-DQ (Thành viên lớn tuổi nhất GPE, có lẽ sắp có cháu cố rồi cũng nên).
Quay lại với đề tài của bạn, cách của tôi là duplicate sheet, tạo sheet "trùng", dùng 3 cột cuối để tách giờ, và lồng hàm COUNTIFS
Sau đó xóa hết các cột và dòng thừa.
Mã:
Option Explicit
Sub Trung()
Dim lr&, i&, h1, h2, rng, res()
On Error Resume Next
Sheets("Trung").Delete
On Error GoTo 0
Sheets("Sheet1").Copy after:=Sheets("Sheet1")
ActiveSheet.Name = "Trung"
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("A2:V" & lr).Value
ReDim res(1 To UBound(rng), 1 To 3)
For i = 1 To UBound(rng)
    h1 = Split(rng(i, 10), "_")(0): h2 = Split(rng(i, 10), "_")(1)
    res(i, 1) = rng(i, 2)
    res(i, 2) = CDate(rng(i, 8)) + TimeSerial(Left(h1, Len(h1) - 3), Right(h1, 2), 0)
    res(i, 3) = CDate(rng(i, 9)) + TimeSerial(Left(h2, Len(h2) - 3), Right(h2, 2), 0)
Next
Range("W2").Resize(UBound(res), 3).Value = res
With Range("Z2:Z" & lr)
    .Formula = "=1/(COUNTIFS($W$2:$W" & lr & ",W2,$X$2:$X" & lr & ",""<="" & X2,$Y$2:$Y" & lr & ","">="" & X2)+COUNTIFS($W$2:$W" & lr & ",W2,$X$2:$X" & lr & ",""<="" & Y2,$Y$2:$Y" & lr & ","">="" & Y2)>2)"
    .SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
End With
Range("W:Z").Delete
Range("A1").Select
End Sub
Cần phải biết đâu là ranh giới chứ nhỉ.
 
Upvote 0
Web KT

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

Back
Top Bottom