Xin tạo drop list không trùng dựa vào giá trị chọn từ drop list khác

Liên hệ QC

tle2003

Thành viên hoạt động
Tham gia
22/1/07
Bài viết
146
Được thích
37
Có file Mau, 2 sheet "DuLieu","Mau"
Sheet Dulieu : 2 cột
Cột A: Date
Cột B : Pallet
Sheet Mau: Cell C4 và C5
xin tạo gíup drop list không trùng từ Cột A sheet Dulieu gắn vào C4.
Tạo drop list không trùng từ Cột B dựa vào giá trị đã chọn ở C4 rồi gắn vào C5.
Cám ơn
 

File đính kèm

  • Mau.xlsm
    20.1 KB · Đọc: 4
Lần chỉnh sửa cuối:
Tôi thì thấy đây không phải là hỏi bài hay nhờ hỗ trợ mà là "yêu cầu"
yêu cầu: xin tạo drop list không trùng từ Cột A sheet Dulieu gắn vào C4.
Tạo drop list không trùng từ Cột B dựa vào giá trí chọn ở C4 rồi gắn vào C5.
Cám ơn
 
Upvote 0
Cám ơn nhắc nhở của các bạn, tôi đã sửa lại
 
Upvote 0
Trước tiên phải có danh sách không trùng, sau đó tạo danh mục đúng chuẩn, tạo name như trong chủ đề sau: Validation phụ thuộc
 
Upvote 0
Nên thể hiện sự cầu thị 1 cách tốt nhất có thể.
Tham khảo code trong file
Chào Bác,
Tôi có 2 thắc mắc, nhờ bác xem giúp
1. Drop list ngày không trùng đã không thay đổi sau khi tôi thêm dữ liệu . Tôi có thể code riêng để tạo drop list rồi thêm vào Worksheet_Activate(), nhưng không biết có dư thừa không vì có thể bao hàm trong code của bác ?
2. Vì drop list ở E5 dựa vào cột EB, cho nên không biết tôi có thể dùng
Private Sub Worksheet_Activate() thay vì Private Sub Worksheet_Change(ByVal Target As Range)
được không?
 
Upvote 0
Chào Bác,
Tôi có 2 thắc mắc, nhờ bác xem giúp
1. Drop list ngày không trùng đã không thay đổi sau khi tôi thêm dữ liệu . Tôi có thể code riêng để tạo drop list rồi thêm vào Worksheet_Activate(), nhưng không biết có dư thừa không vì có thể bao hàm trong code của bác ?
2. Vì drop list ở E5 dựa vào cột EB, cho nên không biết tôi có thể dùng
Private Sub Worksheet_Activate() thay vì Private Sub Worksheet_Change(ByVal Target As Range)
được không?
1/Ô E4 được Làm bằng DataValidation trên có sở Remove Duplicates cột Ngày và gắn vào cột EA
Ô E5 được Làm bằng DataValidation trên cơ sở code lấy được dữ liệu cột Pallet# thỏa mãn với E4 và gán vào cột EB
Nếu
1. Drop list ngày không trùng đã không thay đổi sau khi tôi thêm dữ liệu .
thì bạn có thể post file lên xem sai chỗ nào được không?
2/Bạn đã biết VBA thì cứ thử lần lượt từng ý tưởng của mình và dần rút ra được cách làm nào phù hợp nhất với mong muốn.
Theo tôi được biết thì Trừ những chuyên gia VBA ra còn lại phần đông người viết code VBA đều phải cho chạy thử và khi lại phát hiện ra bài toán chưa được giải quyết triệt để (dữ liệu ở nhiều dạng, logic có thể phát sinh thêm nhiều trường hợp khác nữa, có thể phát sinh lỗi trong tương lai,...) thì họ lại phải code lại cho phù hợp với cái mà họ vừa mới nảy sinh ấy.
 
Upvote 0
Chào bác,
Tôi đính kèm 2 file ở đây.
Mau.xlsm : Khi tôi thêm dữ liệu vào sheet DULIEU, thì dop list tại E4 ở sheet MAU vẫn không đổi (cột EA không thay đổi)
Mau1.xlsm: Tôi thêm Sub CreateUniqueLists() vào Module1 và thêm code dưới vào sheet MAU thì tạm ổn
Private Sub Worksheet_Activate()
Call CreateUniqueLists
End Sub
Nhờ bác xem lại giùm
 

File đính kèm

  • Mau.xlsm
    20.6 KB · Đọc: 1
  • Mau1.xlsm
    25.7 KB · Đọc: 5
Upvote 0
Chào bác,
Tôi đính kèm 2 file ở đây.
Mau.xlsm : Khi tôi thêm dữ liệu vào sheet DULIEU, thì dop list tại E4 ở sheet MAU vẫn không đổi (cột EA không thay đổi)
Mau1.xlsm: Tôi thêm Sub CreateUniqueLists() vào Module1 và thêm code dưới vào sheet MAU thì tạm ổn
Private Sub Worksheet_Activate()
Call CreateUniqueLists
End Sub
Nhờ bác xem lại giùm
Như bài #9 đã nói
Ô E4 được Làm bằng DataValidation (Source = Date) trên có sở Remove Duplicates cột Ngày và gắn vào cột EA (cái này làm thủ công chứ không làm bằng VBA) Và Cột EA ấy đã được đặt thành Namerange (tên nó là Date)
Bạn xem file tôi có sửa lại code để cứ mỗi khi sheet MAU được activate là NameRange Date thay đổi theo.
Bạn xem file đính kèm.
 

File đính kèm

  • Mau1.xlsm
    24.6 KB · Đọc: 3
Upvote 0
Như bài #9 đã nói
Ô E4 được Làm bằng DataValidation (Source = Date) trên có sở Remove Duplicates cột Ngày và gắn vào cột EA (cái này làm thủ công chứ không làm bằng VBA) Và Cột EA ấy đã được đặt thành Namerange (tên nó là Date)
Bạn xem file tôi có sửa lại code để cứ mỗi khi sheet MAU được activate là NameRange Date thay đổi theo.
Bạn xem file đính kèm.
Tôi bỏ nhiều thời gian để tìm cách giải quyết vấn để tại E5 nhưng không được. Cám ơn bác nhiều lắm.
 
Upvote 0
vấn đề ở E5 là gì? có thể nói rõ ra và port bài lên được không?
Trước tiên là rất cám ơn sự giúp đỡ của bác. Việc này đã giúp tôi giải quyết nhu cầu và tôi cũng đã học hỏi ... . Tuy nhiên vì file làm ra sẽ cho các bạn đồng nghiệp của tôi dùng , cho nên các cột phụ EA và EB có thể bị ảnh hưởng nên họ xóa nguyên dòng. Cuối cùng cũng nhờ sự nhắc nhỡ của bác tôi cũng làm được file không qua dùng cột phụ , và chưa thấy sai sót gì. Nhờ bác xem giùm , cho ý kiến để hoàn thiện hơn.
Cám ơn
 

File đính kèm

  • Mau4.xlsm
    23.9 KB · Đọc: 10
Upvote 0
Trước tiên là rất cám ơn sự giúp đỡ của bác. Việc này đã giúp tôi giải quyết nhu cầu và tôi cũng đã học hỏi ... . Tuy nhiên vì file làm ra sẽ cho các bạn đồng nghiệp của tôi dùng , cho nên các cột phụ EA và EB có thể bị ảnh hưởng nên họ xóa nguyên dòng. Cuối cùng cũng nhờ sự nhắc nhỡ của bác tôi cũng làm được file không qua dùng cột phụ , và chưa thấy sai sót gì. Nhờ bác xem giùm , cho ý kiến để hoàn thiện hơn.
Cám ơn
Tuyệt vời.
Cái đoạn code đưa kết quả vào DataValidation tôi thực sự còn phải học hỏi nhiều.
Chỉ xin góp vui thêm 1 đoạn là
Set uniqueDates = Nothing
Set uniquePallets = Nothing

End Sub
Việc này nhằm giải phóng dictionary đã set ở trên. Điều này chắc bạn còn biết hơn tôi nhiều.
 
Upvote 0
Thêm giải pháp khác cho thớt chọn lựa
Mã:
Private Sub Worksheet_Activate()
'Sub chay khi sheet duoc chon
  
'Xoa list cu
Sheet5.Range("g1:i5000").ClearContents
 
    
  'Tao List cho validation
  With CreateObject("ADODB.Connection")
 
  .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
  Sheet5.Range("g1").CopyFromRecordset .Execute("Select Distinct f1 From [DULIEU$a2:b] Where f1 is not null ")
  Sheet5.Range("i1").CopyFromRecordset .Execute("Select Distinct f2 From [DULIEU$a2:b] Where f2 is not null ")

  End With
 
  'Name cho validation
  Sheet5.Range("g1", Sheet5.Range("g1000").End(xlUp)).Name = "Ngay"
  Sheet5.Range("i1", Sheet5.Range("i1000").End(xlUp)).Name = "Palet"
 

End Sub
 

File đính kèm

  • ListValidation.xlsm
    21.4 KB · Đọc: 8
Upvote 0
Tuyệt vời.
Cái đoạn code đưa kết quả vào DataValidation tôi thực sự còn phải học hỏi nhiều.
Chỉ xin góp vui thêm 1 đoạn là
Set uniqueDates = Nothing
Set uniquePallets = Nothing

End Sub
Việc này nhằm giải phóng dictionary đã set ở trên. Điều này chắc bạn còn biết hơn tôi nhiều.
Cám ơn bác,
Tuyệt vời.
Cái đoạn code đưa kết quả vào DataValidation tôi thực sự còn phải học hỏi nhiều.
Chỉ xin góp vui thêm 1 đoạn là
Set uniqueDates = Nothing
Set uniquePallets = Nothing

End Sub
Việc này nhằm giải phóng dictionary đã set ở trên. Điều này chắc bạn còn biết hơn tôi nhiều.
Cám ơn bác
Bài đã được tự động gộp:

Thêm giải pháp khác cho thớt chọn lựa
Mã:
Private Sub Worksheet_Activate()
'Sub chay khi sheet duoc chon
 
'Xoa list cu
Sheet5.Range("g1:i5000").ClearContents
 
   
  'Tao List cho validation
  With CreateObject("ADODB.Connection")
 
  .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
  Sheet5.Range("g1").CopyFromRecordset .Execute("Select Distinct f1 From [DULIEU$a2:b] Where f1 is not null ")
  Sheet5.Range("i1").CopyFromRecordset .Execute("Select Distinct f2 From [DULIEU$a2:b] Where f2 is not null ")

  End With
 
  'Name cho validation
  Sheet5.Range("g1", Sheet5.Range("g1000").End(xlUp)).Name = "Ngay"
  Sheet5.Range("i1", Sheet5.Range("i1000").End(xlUp)).Name = "Palet"
 

End Sub
Code bị lỗi, bạn xem lại nhé
Cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
XIn lỗi chắc bác hiểu nhầm. Tôi nói file của TongDe bị lỗi chứ Mau4 chay bình thường
Bạn thử xem trong File Mau4 ấy có 2 cái namerange không? và code hay có cell nào gọi 1 trong hai các namerange ấy không? Tôi nhắc bạn vậy, còn xóa hay không thì bạn là người dùng file ấy chắc là hiểu nhất.
Code của bạn TongDe tôi không xem và cũng không chạy thử nên tất nhiên là tôi sẽ không có ý kiến gì?
 
Upvote 0
Web KT
Back
Top Bottom