Cách tạo DataValidation List dữ liệu không trùng nhau ?

Liên hệ QC

thanhphuongvip

Mới học VBA, hỏi ngu anh chị đừng chửi ạ
Tham gia
16/1/10
Bài viết
136
Được thích
22
Chào cả nhà GPE!

Mình tạo list Data ở cột B, bằng DataValidation lấy dữ liệu ở cột J, cho mình hỏi làm cách nào khi tạo List xong bấm chọn ở cột B nó sẽ lọc ra những giá trị duy nhất (không trùng nhau) ở cột J. Xin cảm ơn!

218019
 

File đính kèm

  • DataValidation.xlsx
    12.7 KB · Đọc: 23
Chào cả nhà GPE!

Mình tạo list Data ở cột B, bằng DataValidation lấy dữ liệu ở cột J, cho mình hỏi làm cách nào khi tạo List xong bấm chọn ở cột B nó sẽ lọc ra những giá trị duy nhất (không trùng nhau) ở cột J. Xin cảm ơn!

View attachment 218019
Cách đơn giản là Copy cột J sang cột K, Remove Duplicates cột K làm list cho Data Validation
 
Cách đơn giản là Copy cột J sang cột K, Remove Duplicates cột K làm list cho Data Validation
Mình đã nghĩ ra cách như Ba Tê nói, tuy nhiên phải làm như thế để mình làm tiếp DataValidation ở cột C để chọn mục Chi tiết theo Nhóm (nghĩa là nhóm nào chỉ hiện ra mục chi tiết của nhóm đó)
 
Mình đã nghĩ ra cách như Ba Tê nói, tuy nhiên phải làm như thế để mình làm tiếp DataValidation ở cột C để chọn mục Chi tiết theo Nhóm (nghĩa là nhóm nào chỉ hiện ra mục chi tiết của nhóm đó)
Làm được chuyện 1 thì làm tiếp chuyện 2 thôi mà. Thử xem
 

File đính kèm

  • DataValidation.xlsm
    22.5 KB · Đọc: 112
Chào cả nhà GPE!

Mình tạo list Data ở cột B, bằng DataValidation lấy dữ liệu ở cột J, cho mình hỏi làm cách nào khi tạo List xong bấm chọn ở cột B nó sẽ lọc ra những giá trị duy nhất (không trùng nhau) ở cột J. Xin cảm ơn!

View attachment 218019
Thử cách sau, tiêu đề Name không dấu (nếu có dấu không thực hiện được.
 

File đính kèm

  • DataValidation.xlsx
    13.3 KB · Đọc: 41

File đính kèm

  • DataValidation.xlsx
    14.8 KB · Đọc: 83
Bạn dùng thử cái này.
Quá tuyệt vời, một code đã sử lý được cả 2 yêu cầu mà mình muốn. Mình sẽ lưu code này lại để ngâm cứu và sài về sau! Cảm ơn Snow rất nhiều!!
Bài đã được tự động gộp:

Cách của anh "hơi bị" nhiều Names.
Có được list cho cột trước thì chỉ cần 1 Name cho cột sau là đủ.
Cảm ơn bác Ba Tê, chiêu này ko dùng VBA, khá hay! Mình sẽ dành để hướng dẫn những bạn nào sợ VBA :D
 
Snow cho mình hỏi thêm, nó báo lỗi code mỗi lần nhập một giá trị ko có trong list, hoặc khi xóa ô đó cũng vậy, vậy khắc phục thế nào nhỉ?

View attachment 218040

View attachment 218041
Bạn thay cái code đó bằng cái này xem.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim arr, s As String, i As Long, dk As String
    If Not Intersect(Target, Range("b3:b23")) Is Nothing Then
      If Target.Count = 1 Then
        dk = Target.Value
       arr = Range("i4:j22").Value
       For i = 1 To UBound(arr, 1)
          If dk = arr(i, 2) Then
             s = s & "," & arr(i, 1)
          End If
       Next i
       Target.Offset(, 1).Validation.Delete
       If Len(s) Then
       s = Right(s, Len(s) - 1)
       With Target.Offset(, 1).Validation
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=s
       End With
       End If
     End If
  End If
End Sub
 
Bạn thay cái code đó bằng cái này xem.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim arr, s As String, i As Long, dk As String
    If Not Intersect(Target, Range("b3:b23")) Is Nothing Then
      If Target.Count = 1 Then
        dk = Target.Value
       arr = Range("i4:j22").Value
       For i = 1 To UBound(arr, 1)
          If dk = arr(i, 2) Then
             s = s & "," & arr(i, 1)
          End If
       Next i
       Target.Offset(, 1).Validation.Delete
       If Len(s) Then
       s = Right(s, Len(s) - 1)
       With Target.Offset(, 1).Validation
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=s
       End With
       End If
     End If
  End If
End Sub
Khi xóa một ô ở cột B nó vẫn báo lỗi như vậy Snow ơi !??
218082
 
Web KT
Back
Top Bottom