Nhờ giúp đỡ lọc lịch công tác trùng nhau (2 người xem)

Liên hệ QC

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

thunderstone

Thành viên mới
Tham gia
21/3/08
Bài viết
23
Được thích
1
Xin chào mọi người
Mình đang gõ thread này trên máy công ty, vì chính sách bảo mật nên không thể attach file excel lên forum (file sẽ bị mã hóa), nên phải mô tả để mọi người hình dung, mong mọi người thông cảm.
Bài toán đặt ra:
Mình có 1 database như sau:
From dateTo date
Nguyễn Văn A01.06.201910.06.2019
Nguyễn Văn B31.05.201910.06.2019
Nguyễn Văn A03.06.201908.06.2019
Nguyễn Văn C15.05.201902.06.2019
Nguyễn Văn B26.05.201903.06.2019

Như mọi người có thể thấy, nhân viên A có lịch công tác chồng lên nhau (01.06 - 10.06 & 03.06 - 08.06); nhân viên B có lịch công tác chồng lên nhau (26.05 - 03.06 & 31.05 - 10.06)

Mình muốn Excel lọc ra cho mình những line bị trùng như vậy để mình làm việc với nhân viên. (VD trong database trên, excel lọc ra 1 sheet A gồm line 1 & 3; sheet B gồm line 2 & 6)

Database lên tới vài ngàn dòng với hàng trăm nhân viên, mình ko biết làm sao để excel lọc được như vậy.

Giải pháp mình nghĩ ra là dùng VBA
Dùng 1 biến i chạy theo danh sách nhân viên. Tương ứng với mỗi nhân viên, gán cho mảng CongTac là 1 dãy tất cả các ngày từ FromDate đến ToDate
Sau đó so sánh các mảng với nhau để lọc ra phần trùng

Nhưng mình ko hiện thực hóa giải thuật trên thành code VBA được

Vậy có cao nhân nào có thể giúp mình với
Nếu ai có giải pháp mà ko cần dùng VBA thì càng hay (dùng conditional format để tô màu những line chồng nhau chẳng hạn)

Cảm ơn mọi người rất nhiều
 
Database lên tới vài ngàn dòng với hàng trăm nhân viên, mình ko biết làm sao để excel lọc được như vậy.

Dữ liệu có cho phép sắp xếp hay không? Tên có bị trùng hay không? Date có phải là Date hay không?

Nếu cho phép sắp xếp và tên không bị trùng, có thể dùng conditional format để tô màu những line chồng nhau
 
Xin chào mọi người
Mình đang gõ thread này trên máy công ty, vì chính sách bảo mật nên không thể attach file excel lên forum (file sẽ bị mã hóa), nên phải mô tả để mọi người hình dung, mong mọi người thông cảm.
Bài toán đặt ra:
Mình có 1 database như sau:
From dateTo date
Nguyễn Văn A01.06.201910.06.2019
Nguyễn Văn B31.05.201910.06.2019
Nguyễn Văn A03.06.201908.06.2019
Nguyễn Văn C15.05.201902.06.2019
Nguyễn Văn B26.05.201903.06.2019

Như mọi người có thể thấy, nhân viên A có lịch công tác chồng lên nhau (01.06 - 10.06 & 03.06 - 08.06); nhân viên B có lịch công tác chồng lên nhau (26.05 - 03.06 & 31.05 - 10.06)

Mình muốn Excel lọc ra cho mình những line bị trùng như vậy để mình làm việc với nhân viên. (VD trong database trên, excel lọc ra 1 sheet A gồm line 1 & 3; sheet B gồm line 2 & 6)

Database lên tới vài ngàn dòng với hàng trăm nhân viên, mình ko biết làm sao để excel lọc được như vậy.

Giải pháp mình nghĩ ra là dùng VBA
Dùng 1 biến i chạy theo danh sách nhân viên. Tương ứng với mỗi nhân viên, gán cho mảng CongTac là 1 dãy tất cả các ngày từ FromDate đến ToDate
Sau đó so sánh các mảng với nhau để lọc ra phần trùng

Nhưng mình ko hiện thực hóa giải thuật trên thành code VBA được

Vậy có cao nhân nào có thể giúp mình với
Nếu ai có giải pháp mà ko cần dùng VBA thì càng hay (dùng conditional format để tô màu những line chồng nhau chẳng hạn)

Cảm ơn mọi người rất nhiều
Góp ý cho bạn:
1/ Với dữ liệu giả định như bạn làm ở bài 1 thì đâu có gì liên quan đến công ty đâu mà phải gọi là bảo mật (bạn đưa hình thì cũng gọi là lộ thông tin).

2/ Bạn không đính kèm File thì không lẽ giúp bạn bằng niềm tin à, khi giúp code thì lấy cái gì để thử cho đúng với yêu cầu.
 
Ko phải là bao
Góp ý cho bạn:
1/ Với dữ liệu giả định như bạn làm ở bài 1 thì đâu có gì liên quan đến công ty đâu mà phải gọi là bảo mật (bạn đưa hình thì cũng gọi là lộ thông tin).

2/ Bạn không đính kèm File thì không lẽ giúp bạn bằng niềm tin à, khi giúp code thì lấy cái gì để thử cho đúng với yêu cầu.

Không phải là bảo mật thông tin mà là bất kỳ file excel nào cũng sẽ bị mã hóa khi lưu lại ấy bạn. Upload đi đâu cũng bị mã hóa & khi tải về sẽ không mở lên được. Do vậy mình mới nói là ko up file lên được.
Bài đã được tự động gộp:

Dữ liệu có cho phép sắp xếp hay không? Tên có bị trùng hay không? Date có phải là Date hay không?

Nếu cho phép sắp xếp và tên không bị trùng, có thể dùng conditional format để tô màu những line chồng nhau
"Tên bị trùng" ý bạn là có 2 nhân viên khác nhau cùng tên Nguyễn Văn A?
Vẫn có trường hợp đó nhưng mình có thể thay thế tên bằng mã nhân viên thì sẽ ko trùng.
Database vẫn sắp xếp được.
Nếu làm được bằng cnditional format thì bạn chỉ mình cách với
 
Không phải là bảo mật thông tin mà là bất kỳ file excel nào cũng sẽ bị mã hóa khi lưu lại ấy bạn. Upload đi đâu cũng bị mã hóa & khi tải về sẽ không mở lên được. Do vậy mình mới nói là ko up file lên được.
Nếu máy công ty gửi không được thì về máy nhà gửi, thiếu gì cách.
 
Nếu máy công ty gửi không được thì về máy nhà gửi, thiếu gì cách.
Nếu có cách mình đã làm luôn rồi bạn. Mình đứng vai nhờ vả mà ko có file thì mình là người ngại đầu tiên.
Nếu ở nhà (m đang đi công tác) hoặc có máy khác ngoài máy ở cty thì mình đã mượn để làm luôn cái file upload lên đây rồi.
File có 3 cột chứ có nhiều nhặn gì đâu.
 
Nếu có cách mình đã làm luôn rồi bạn. Mình đứng vai nhờ vả mà ko có file thì mình là người ngại đầu tiên.
Nếu ở nhà (m đang đi công tác) hoặc có máy khác ngoài máy ở cty thì mình đã mượn để làm luôn cái file upload lên đây rồi.
File có 3 cột chứ có nhiều nhặn gì đâu.
Ý tôi nêu nêu là không ai rảnh để nhập liệu và làm giúp cho bạn từ A > Z khi không biết dữ liệu của bạn xuất phát từ dòng cột nào?
 
Ý tôi nêu nêu là không ai rảnh để nhập liệu và làm giúp cho bạn từ A > Z khi không biết dữ liệu của bạn xuất phát từ dòng cột nào?


Mình copy 1 bản & nhờ bạn up lên Google drive như trong link.
Nhờ bạn xem giúp.
Yêu cầu là lọc ra những line có code (cột A) giống nhau & ngày tháng (cột B & C) bị chồng lên nhau.
 

Mình copy 1 bản & nhờ bạn up lên Google drive như trong link.
Nhờ bạn xem giúp.
Yêu cầu là lọc ra những line có code (cột A) giống nhau & ngày tháng (cột B & C) bị chồng lên nhau.

Dùng thử ADO recordset với subquery. Bạn kiểm tra lại nhé.

Mã:
sSQL = "SELECT A.ID, A.[Start Date], A.[End Date], B.[Start Date] AS OverlapStartDt, B.[End Date] AS OverlapEndDt " & _
           "FROM " & rngData & " AS A INNER JOIN " & rngData & " AS B ON A.ID = B.ID " & _
           "WHERE B.[Start Date]<=A.[End Date] And B.[Start Date]>A.[Start Date]"
 

File đính kèm

Lần lượt sort cột mã NV,From Date, to date từ nhỏ đến lớn rồi dùng công thức cho CF:

=OR(AND($A2=$A1,$B2<$C1),AND($A2=$A3,$B3<$C2))
View attachment 219142
Cảm ơn bạn nhiều lắm.
Để m mày mò phát triển tiếp từ đây.
Bài đã được tự động gộp:

Ông "thầy" đã giải ở bài #8 rồi em!

Chúc em ngày vui.
/-*+//-*+//-*+/
Dùng Cond format là giải quyết được bước đầu (lọc ra cac line bị chồng) với điều kiện cho sort data.
Nếu không cho sort data thì có cách nào giải quyết (nếu ko dùng VBA như bạn bên trên) không ah?
 
Lần chỉnh sửa cuối:
Dùng thử ADO recordset với subquery. Bạn kiểm tra lại nhé.

Mã:
sSQL = "SELECT A.ID, A.[Start Date], A.[End Date], B.[Start Date] AS OverlapStartDt, B.[End Date] AS OverlapEndDt " & _
           "FROM " & rngData & " AS A INNER JOIN " & rngData & " AS B ON A.ID = B.ID " & _
           "WHERE B.[Start Date]<=A.[End Date] And B.[Start Date]>A.[Start Date]"
Cảm ơn bạn nhiều.
Dù mình vẫn chưa hiểu hết 100% code nhưng kết quả tạo ra phục vụ được cho nhu cầu của mình luôn á.
Quá hay!
 
Web KT

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

Back
Top Bottom