Kiểm tra nhập dữ liệu trùng lắp (1 người xem)

Liên hệ QC

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

concuarangme

Thành viên chính thức
Tham gia
6/1/09
Bài viết
97
Được thích
0
Mình có 1 file dữ liệu ghi nhận sản lượng làm việc của nhân viên và file này được sử dụng bởi nhiều người, trong đó phát sinh 1 trường hợp NV1 đã được nhập vào file trước đó bởi tổ trưởng 1 và sau đó NV1 lại được ghi nhận bởi tổ trưởng khác và có thời gian tương đồng với dữ liệu trước đó. Anh Chị và các thầy hướng dẫn mình code nào có thể kiểm tra được và có thể cảnh báo được trường hợp như thế nhé. Xin cảm ơn.
 

File đính kèm

  • Nhap trung.xlsx
    Nhap trung.xlsx
    11.7 KB · Đọc: 27
  • Nhap trung.jpg
    Nhap trung.jpg
    17.7 KB · Đọc: 11
Mình có 1 file dữ liệu ghi nhận sản lượng làm việc của nhân viên và file này được sử dụng bởi nhiều người, trong đó phát sinh 1 trường hợp NV1 đã được nhập vào file trước đó bởi tổ trưởng 1 và sau đó NV1 lại được ghi nhận bởi tổ trưởng khác và có thời gian tương đồng với dữ liệu trước đó. Anh Chị và các thầy hướng dẫn mình code nào có thể kiểm tra được và có thể cảnh báo được trường hợp như thế nhé. Xin cảm ơn.
Để cảnh báo việc nhập trùng mã nhân viên trong cột B, bạn dùng Code
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long
    If Target.Column <> 2 And Target.Count > 1 Then Exit Sub
    If Target.Value <> "" Then
        i = WorksheetFunction.CountIf(Columns(2), Target.Value)
        If i > 1 Then
            MsgBox Target.Value & "-" & "Ma NV nay da nhap. Xin nhap ma khac."
            With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
            End With
        End If
    End If
End Sub
 
Upvote 0
Để cảnh báo việc nhập trùng mã nhân viên trong cột B, bạn dùng Code
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long
    If Target.Column <> 2 And Target.Count > 1 Then Exit Sub
    If Target.Value <> "" Then
        i = WorksheetFunction.CountIf(Columns(2), Target.Value)
        If i > 1 Then
            MsgBox Target.Value & "-" & "Ma NV nay da nhap. Xin nhap ma khac."
            With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
            End With
        End If
    End If
End Sub

Cảm ơn bạn đã hỗ trợ, ý của mình là cùng 1 ngày nhân viên có thể được nhập nhiều lần, nhưng thời gian bắt đầu phải lớn hơn so với thời gian đã kết thúc trước đó.

Ví dụ: NV1 có thời gian bắt đầu và kết thúc là 09h - 12h. Sau đó được nhập thêm 1 lần nữa có thời gian bắt đầu là 10h - 12h => thời gian bắt đầu này < thời gian kết thúc trước đó (12h) nên sẽ không cho nhập (hoặc cảnh báo cho người nhập biết) để tránh trùng lăp dữ liệu.

Bạn xem hỗ trợ giúp mình nhé.
 
Upvote 0
Cảm ơn bạn đã hỗ trợ, ý của mình là cùng 1 ngày nhân viên có thể được nhập nhiều lần, nhưng thời gian bắt đầu phải lớn hơn so với thời gian đã kết thúc trước đó.

Ví dụ: NV1 có thời gian bắt đầu và kết thúc là 09h - 12h. Sau đó được nhập thêm 1 lần nữa có thời gian bắt đầu là 10h - 12h => thời gian bắt đầu này < thời gian kết thúc trước đó (12h) nên sẽ không cho nhập (hoặc cảnh báo cho người nhập biết) để tránh trùng lăp dữ liệu.

Bạn xem hỗ trợ giúp mình nhé.
Chắc chằn cái này phù hợp với yêu cầu của bạn.
Note: do row 3 title là tiếng việt nên mình chèn thêm row 4 với title là TA để code có thể chạy mượt. Bạn có thể hide dòng này đi nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chắc chằn cái này phù hợp với yêu cầu của bạn.
Note: do row 3 title là tiếng việt nên mình chèn thêm row 4 với title là TA để code có thể chạy mượt. Bạn có thể hide dòng này đi nhé.

Cảm ơn bạn, mình thử nhập vào cột 6 và 7 có thời gian chồng chéo nhau nhưng code không chạy, mình phải sử dụng Alt + F8 để chọn thì mới xuất hiện dòng thông báo :(

Bạn xem thử giúp mình nhé.
 
Upvote 0
Cảm ơn bạn, mình thử nhập vào cột 6 và 7 có thời gian chồng chéo nhau nhưng code không chạy, mình phải sử dụng Alt + F8 để chọn thì mới xuất hiện dòng thông báo :(

Bạn xem thử giúp mình nhé.

bạn lấy ví dụ nhập liệu của bạn xem thế nào? Nó báo lỗi gì? Mình chạy thử vài TH thấy có vd gì đâu nhỉ?
 
Upvote 0

File đính kèm

Upvote 0
Mình có đính kèm clip quay màn hình khi nhập dữ liệu. Bạn xem giúp nhé.
Ý của bạn là khi ấn ALt + F8 thì ct mới chạy đúng ko? Bạn kiểm tra xem bạn đã enable marco ngay lúc mở file chưa? bạn có kt tra phần sheet_change chưa?
Mình nghĩ có thể bạn đã dùng file mới và copy mỗi sub GPE sang file mới đó mà bỏ quên event sheet_change.
Cheer
 
Upvote 0
Ý của bạn là khi ấn ALt + F8 thì ct mới chạy đúng ko? Bạn kiểm tra xem bạn đã enable marco ngay lúc mở file chưa? bạn có kt tra phần sheet_change chưa?Mình nghĩ có thể bạn đã dùng file mới và copy mỗi sub GPE sang file mới đó mà bỏ quên event sheet_change.Cheer

Vâng đúng như bạn nói, mình sử dụng trên excel 2010 nên dòng code báo lỗi không cho dùng nữa. Code báo lỗi từ dòng này nè

With cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
ThisWorkbook.FullName _
& ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"
.Open

Mình chạy từ file của bạn thì không sao, khi copy code qua excel 2010 thì bị lỗi ngay tại đó.
 
Upvote 0
Vâng đúng như bạn nói, mình sử dụng trên excel 2010 nên dòng code báo lỗi không cho dùng nữa. Code báo lỗi từ dòng này nè

With cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
ThisWorkbook.FullName _
& ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"
.Open

Mình chạy từ file của bạn thì không sao, khi copy code qua excel 2010 thì bị lỗi ngay tại đó.

Mình cũng dùng excel 2010, nhưng cos lỗi đâu, bạn copy chuan chưa? Mình thấy Open màu đỏ là sai code rùi.
K đc nữa thì bạn dùng file cũ đi.
 
Upvote 0
Mình cũng dùng excel 2010, nhưng cos lỗi đâu, bạn copy chuan chưa? Mình thấy Open màu đỏ là sai code rùi.
K đc nữa thì bạn dùng file cũ đi.

Mình copy code trong module1 và trong sheet1 qua 1 file mới của excel 2010, sau đó nhập thông tin test thử thì báo lỗi.

Bạn xem giúp có phải excel của mình thiếu thư viện hay gì không nhé.
 

File đính kèm

Upvote 0
Mình copy code trong module1 và trong sheet1 qua 1 file mới của excel 2010, sau đó nhập thông tin test thử thì báo lỗi.

Bạn xem giúp có phải excel của mình thiếu thư viện hay gì không nhé.
Tôt nhất là bạn gửi file, mình check luôn cho. hic
 
Upvote 0
Tôt nhất là bạn gửi file, mình check luôn cho. hic

Nhờ bạn hỗ trợ giúp mình thêm trường hợp nhập vào sheet2 sẽ kiểm tra thông tin bên sheet1 đã có chưa. Nếu chưa có thì cho phép nhập, có rồi thì không cho nhập và thông báo dữ liệu có ở dòng bao nhiêu của sheet1. Cảm ơn bạn nhiều lắm.
 

File đính kèm

Upvote 0
Nhờ bạn hỗ trợ giúp mình thêm trường hợp nhập vào sheet2 sẽ kiểm tra thông tin bên sheet1 đã có chưa. Nếu chưa có thì cho phép nhập, có rồi thì không cho nhập và thông báo dữ liệu có ở dòng bao nhiêu của sheet1. Cảm ơn bạn nhiều lắm.
Ở đây mình tạo 2 name FirstTable, SecondTable để truy vấn cho tiện, mình giới hạn là 6000 dòng, nếu dữ liệu vượt quá thì bạn chỉnh lại.
Mình cho chúng kiểm tra chính bản thân nó và kiểm tra chéo luôn.
VD: sheet 1 thì kiểm tra xem khi nhập dữ liệu thì có bị trùng với dữ liệu khác ở chính nó(sheet1) và kiểm tra dữ liệu sheet1 có trong sheet2 ko. Sheet 2 tương tự
 

File đính kèm

Upvote 0
Ở đây mình tạo 2 name FirstTable, SecondTable để truy vấn cho tiện, mình giới hạn là 6000 dòng, nếu dữ liệu vượt quá thì bạn chỉnh lại.
Mình cho chúng kiểm tra chính bản thân nó và kiểm tra chéo luôn.
VD: sheet 1 thì kiểm tra xem khi nhập dữ liệu thì có bị trùng với dữ liệu khác ở chính nó(sheet1) và kiểm tra dữ liệu sheet1 có trong sheet2 ko. Sheet 2 tương tự

Cảm ơn bạn nhiều :) code của bạn hỗ trợ mình rất nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom