Cảnh báo khi nhập dữ liệu trùng và không có trong danh mục cho trước

Liên hệ QC

tungnguyen_kt

Thành viên gắn bó
Thành viên BQT
Super Moderator
Tham gia
25/6/08
Bài viết
2,893
Được thích
12,061
Giới tính
Nam
Nhờ anh chị giúp em cảnh báo khi nhập dữ liệu trùng (đã nhập rồi) và không tồn tại trong list cho trước. Yêu cầu cụ thể trong file đính kèm.

PS: Trong đó list cho trước thường xuyên cập nhật

Cảm ơn rất nhiều!
 

File đính kèm

  • do.xlsx
    10.6 KB · Đọc: 34
Nhờ anh chị giúp em cảnh báo khi nhập dữ liệu trùng (đã nhập rồi) và không tồn tại trong list cho trước. Yêu cầu cụ thể trong file đính kèm.

PS: Trong đó list cho trước thường xuyên cập nhật

Cảm ơn rất nhiều!

VBA thì là chuyện nhỏ, nhưng công thức là chuyện lớn.
 
Công thức cho Validation
Mã:
=AND(COUNTIF(Sheet1!$B$4:$B$18,B5)>0,COUNTIF($B$5:$B$20,B5)=1)
 
Vấn đề nằm ngay đó đó anh, em đang đi nhờ cái chuyện nhỏ đó.
Mấy cái msgbox đó thay cái quỷ gì đó thì tuỳ nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, [B5:B10000]) Is Nothing Then
   Dim tim As Range
   Set tim = Range([B5], Target.Offset(-1)).Find(Target, , , 1)
   If tim Is Nothing Then
      Set tim = Sheet1.[B:B].Find(Target, , , 1)
      If tim Is Nothing Then
         MsgBox "Not Data Existing"
         Target = ""
         Target.Select
      End If
   Else
      MsgBox "Data Existing"
      Target = ""
      Target.Select
   End If
End If
Application.EnableEvents = True
End Sub
 
Công thức cho Validation
Mã:
=AND(COUNTIF(Sheet1!$B$4:$B$18,B5)>0,COUNTIF($B$5:$B$20,B5)=1)

Nếu là công thức thì chắc pahỉ dùng name động rồi vì chẳng lẽ mỗi lần cập nhật list mới phải sửa công thức.

Cảm ơn bạn
 
Mấy cái msgbox đó thay cái quỷ gì đó thì tuỳ nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, [B5:B10000]) Is Nothing Then
   Dim tim As Range
   Set tim = Range([B5], Target.Offset(-1)).Find(Target, , , 1)
   If tim Is Nothing Then
      Set tim = Sheet1.[B:B].Find(Target, , , 1)
      If tim Is Nothing Then
         MsgBox "Not Data Existing"
         Target = ""
         Target.Select
      End If
   Else
      MsgBox "Data Existing"
      Target = ""
      Target.Select
   End If
End If
Application.EnableEvents = True
End Sub

Cho dù hỏng hiểu code trên là "quái" gì nhưng bỏ vào sheet nó chạy theo ý mình là "sướng" rồi. Cảm ơn anh Quang Hải.
 
Mấy cái msgbox đó thay cái quỷ gì đó thì tuỳ nha
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, [B5:B10000]) Is Nothing Then
   Dim tim As Range
   Set tim = Range([B5], Target.Offset(-1)).Find(Target, , , 1)
   If tim Is Nothing Then
      Set tim = Sheet1.[B:B].Find(Target, , , 1)
      If tim Is Nothing Then
         MsgBox "Not Data Existing"
         Target = ""
         Target.Select
      End If
   Else
      MsgBox "Data Existing"
      Target = ""
      Target.Select
   End If
End If
Application.EnableEvents = True
End Sub
khúc này của Anh hay thiệt nó gần giống như Vlookup còn nhanh hơn Vlookup rất nhiều
PHP:
  Set tim = Sheet1.[B:B].Find(Target, , , 1)
Em thì đang sử dụng khúc này thay cho Vlookup cũng nhanh tuyệt vời
PHP:
Target.Offset(, 3) = Sheet4.[A:A].Find(Target).Offset(, 1)
 
Web KT
Back
Top Bottom