Tạo Validation từ 1 list khác và ngăn không trùng (1 người xem)

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

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
944
Được thích
574
Như chủ đề đã nêu, mình muốn các anh/chị chỉ cách tạo Validation để có danh sách từ 1 cột khác đồng thời không cho nhập đúp tại cột hiện tại
Xin xem file đính kèm để rõ.
Cảm ơn
 

File đính kèm

Như chủ đề đã nêu, mình muốn các anh/chị chỉ cách tạo Validation để có danh sách từ 1 cột khác đồng thời không cho nhập đúp tại cột hiện tại
Xin xem file đính kèm để rõ.
Cảm ơn
ý bạn là cột e sẽ tạo ra 1 danh sách trong đó khi cột e chọn 1 mã rồi thì danh sách sẽ không còn mã đó nữa
 
Như chủ đề đã nêu, mình muốn các anh/chị chỉ cách tạo Validation để có danh sách từ 1 cột khác đồng thời không cho nhập đúp tại cột hiện tại
Xin xem file đính kèm để rõ.
Cảm ơn
E toàn làm cột phụ thôi chứ cũng chưa tìm hiểu cách nào khác, hóng bài của anh để học thêm vậy ạ :)
 
Theo tôi, nếu vừa tạo danh sách và vừa tạo điều kiện thì không được. Nhưng nếu bạn chỉ cần điều kiện thì được.

Tôi nghĩ bạn Minh Khai có thể giải quyết vấn đề này bằng VBA nếu công thức chưa tìm ra.
 
Như chủ đề đã nêu, mình muốn các anh/chị chỉ cách tạo Validation để có danh sách từ 1 cột khác đồng thời không cho nhập đúp tại cột hiện tại
Xin xem file đính kèm để rõ.
Cảm ơn
Có 2 giải pháp:
1/ Hoặc phải dùng VBA để tạo list và tạo Data validation.
2/ Phải dùng cột phụ, chung hoặc khác sheet. Còn việc tạo mảng trong bộ nhớ để cung cấp cho Data Validation bằng công thức không thực hiện được (chủ đề Mảng ảo có trên diễn đàn: tham khảo link http://www.giaiphapexcel.com/dienda...hông-qua-trung-gian.120420/page-2#post-753655 ).

Bạn tham khảo file đính kèm dùng công thức cho cột phụ để tạo list biến đổi loại những dữ liệu đã phát sinh bên cột E, gồm:
a/ Tạo 1 "name" Vung:
Mã:
=OFFSET(Book!$G$3,,,COUNT(1/(LEN(Book!$G$3:$G$154)>0)))

b/ Tạo list loại trùng:
Mã:
G3=IFERROR(INDEX($C$3:$C$136,MATCH(0,INDEX(COUNTIF($G$2:G2,$C$3:$C$136)+COUNTIF($E$3:$E$136,$C$3:$C$136),),0)),"")

c/ Tạo Data Validation E3:E136 lấy list là "=Vung"



Chúc bạn ngày vui
 

File đính kèm

Lần chỉnh sửa cuối:
dùng thêm cột ph
Có 2 giải pháp:
1/ Hoặc phải dùng VBA để tạo list và tạo Data validation.
2/ Phải dùng cột phụ, chung hoặc khác sheet. Còn việc tạo mảng trong bộ nhớ để cung cấp cho Data Validation bằng công thức không thực hiện được (chủ đề Mảng ảo có trên diễn đàn: tham khảo link http://www.giaiphapexcel.com/diendan/threads/cách-tạo-list-data-validation-không-qua-trung-gian.120420/page-2#post-753655 ).

Bạn tham khảo file đính kèm dùng công thức cho cột phụ để tạo list biến đổi loại những dữ liệu đã phát sinh bên cột E, gồm:
a/ Tạo 1 "name" Vung:
Mã:
=OFFSET(Book!$G$3,,,COUNT(1/(LEN(Book!$G$3:$G$154)>0)))

b/ Tạo list loại trùng:
Mã:
G3=IFERROR(INDEX($C$3:$C$136,MATCH(0,INDEX(COUNTIF($G$2:G2,$C$3:$C$136)+COUNTIF($E$3:$E$136,$C$3:$C$136),),0)),"")

c/ Tạo Data Validation E3:E136 lấy list là "=Vung"



Chúc bạn ngày vui
Híc em vẫn chưa biết cách lấy bỏ trùng :((
 
2 cột phụ làm sao bác chỉ em nghiên cứu với &^^
có thể làm như sau:
-cột phụ 1: dùng hàm if và countif để lấy các số thứ tự các phiếu chưa sử dụng 5 ở cột E
- cột phụ 2: dùng hàm Small và index, hay offset gì đó để tạo danh sách số phiếu chưa sử dụng,có thể cần thêm bẩy lỗi nếu dùng index
dùng công thức đặt tên vùng dữ liệu cột phụ 2, hoặc dùng công thức trực tiếp trong datavalidation nếu cùng sheet
 
Từ hồi năm 2007 tôi đã có nghiên cứu vụ này:
http://www.giaiphapexcel.com/diendan/threads/valiadation-chống-nhập-trùng.3855/#post-26965
Hồi đó ngu quá nên đã làm đến 2 cột phụ + mấy cái name (tuy nhiên chạy cũng.. ổn)
hi hồi trước em để tâm đến dò tìm lookup nhiều mà vẫn chưa rành, giờ đến cái dò bỏ trùng rồi bữa đọc tách số trong chuỗi đau cả đầu :D
em đang cố tiếp thu ạ
 
Từ hồi năm 2007 tôi đã có nghiên cứu vụ này:
http://www.giaiphapexcel.com/diendan/threads/valiadation-chống-nhập-trùng.3855/#post-26965
Hồi đó ngu quá nên đã làm đến 2 cột phụ + mấy cái name (tuy nhiên chạy cũng.. ổn)
À ạ! bây giờ mới biết chân tướng người gây sóng gió diễn đàn năm đó chính là thầy.

Trước nay, có xem nhiều bài và rất ngưỡng mộ nickname: anhtuan1066, tự dưng về sau thấy mất tích trên chiến trường GPE... hơi tiếc!

Vui vì việc này đó thầy.
/-*+//-*+//-*+/
 
À ạ! bây giờ mới biết chân tướng người gây sóng gió diễn đàn năm đó chính là thầy.

Trước nay, có xem nhiều bài và rất ngưỡng mộ nickname: anhtuan1066, tự dưng về sau thấy mất tích trên chiến trường GPE... hơi tiếc!

Vui vì việc này đó thầy.
/-*+//-*+//-*+/
con người có thăng trầm anh ạ, người còn hứng khởi còn tồn tại mất hứng thì ra đi ^^ em có xem 1 vài bài cũ có nhiều thành viên đã 5 6 năm không còn vào đây nữa :D
 
con người có thăng trầm anh ạ, người còn hứng khởi còn tồn tại mất hứng thì ra đi ^^ em có xem 1 vài bài cũ có nhiều thành viên đã 5 6 năm không còn vào đây nữa :D
"Hổ chết để da.." tuy Nickname thì không thấy nhưng vẫn còn lưu những hướng dẫn, chỉ điểm rất khoáng đạt cho anh em vào sau tham khảo. Chính những hướng dẫn tận tình, không tính toán bon chen, không màng danh hảo, nên thật sự làm anh kính nể và ngưỡng mộ, và cũng nhờ đó mà anh học được không những về kỹ năng excel mà còn về cái "đức" để làm một con người toàn vẹn, đẹp chi người có tài mà vô "đức" hả em?

Cũng may ở trên này, hằng hà sa số những bậc như anh nói, ẩn mình nhưng đầy bản lảnh và nhất là không khoe mẻ.

Em cứ cố gắng, nhớ trên này không có ai đòi hơn nên cũng chẳng có ai thua cả.
/-*+//-*+//-*+/
 
"Hổ chết để da.." tuy Nickname thì không thấy nhưng vẫn còn lưu những hướng dẫn, chỉ điểm rất khoáng đạt cho anh em vào sau tham khảo. Chính những hướng dẫn tận tình, không tính toán bon chen, không màng danh hảo, nên thật sự làm anh kính nể và ngưỡng mộ, và cũng nhờ đó mà anh học được không những về kỹ năng excel mà còn về cái "đức" để làm một con người toàn vẹn, đẹp chi người có tài mà vô "đức" hả em?

Cũng may ở trên này, hằng hà sa số những bậc như anh nói, ẩn mình nhưng đầy bản lảnh và nhất là không khoe mẻ.

Em cứ cố gắng, nhớ trên này không có ai đòi hơn nên cũng chẳng có ai thua cả.
/-*+//-*+//-*+/
hi phải đấu tranh phát triển quan trọng là không khoe mẽ thôi :D
tính em hơi đa cảm thấy những người quen biết dần dần không còn nữa có tiếc nuối haha
 
có thể làm như sau:
-cột phụ 1: dùng hàm if và countif để lấy các số thứ tự các phiếu chưa sử dụng 5 ở cột E
- cột phụ 2: dùng hàm Small và index, hay offset gì đó để tạo danh sách số phiếu chưa sử dụng,có thể cần thêm bẩy lỗi nếu dùng index
dùng công thức đặt tên vùng dữ liệu cột phụ 2, hoặc dùng công thức trực tiếp trong datavalidation nếu cùng sheet
Nếu đã có cột phụ ra số thứ tự rồi thì mình có thể dùng luôn Vlookup hoặc Index thông thường chứ ạ, kiểu Vlookup(row(a1),....) được không anh?
 
hi phải đấu tranh phát triển quan trọng là không khoe mẽ thôi :D
tính em hơi đa cảm thấy những người quen biết dần dần không còn nữa có tiếc nuối haha
Mình nghĩ là giúp đỡ nhau cùng phát triển chứ :) Nhiều người không phải k tham gia diễn đàn nữa đâu b? có thể các anh chị ấy đã có thêm 1 nick mới mà thôi, cứ nghĩ thế đi b ạ :)
 

File đính kèm

Nếu đã có cột phụ ra số thứ tự rồi thì mình có thể dùng luôn Vlookup hoặc Index thông thường chứ ạ, kiểu Vlookup(row(a1),....) được không anh?
mỗi người có cách làm khác nhau, mình không nghĩ được cách không dùng công thức mảng mà chỉ dùng 1 cột phụ
do dùng công thức bình thường nên cột phụ số thứ tự sẽ có dòng trống là dòng các phiếu đã sử dụng, cột phụ thứ 2 sẽ tạo danh sách liên tục các phiếu chưa sử dụng , số thứ tự có thể thay bằng hàm row
 

File đính kèm

mỗi người có cách làm khác nhau, mình không nghĩ được cách không dùng công thức mảng mà chỉ dùng 1 cột phụ
do dùng công thức bình thường nên cột phụ số thứ tự sẽ có dòng trống là dòng các phiếu đã sử dụng, cột phụ thứ 2 sẽ tạo danh sách liên tục các phiếu chưa sử dụng , số thứ tự có thể thay bằng hàm row
e hay làm cách kiểu này ạ. mong các anh góp ý thêm ạ
 

File đính kèm

Có 2 giải pháp:
1/ Hoặc phải dùng VBA để tạo list và tạo Data validation.
2/ Phải dùng cột phụ, chung hoặc khác sheet. Còn việc tạo mảng trong bộ nhớ để cung cấp cho Data Validation bằng công thức không thực hiện được (chủ đề Mảng ảo có trên diễn đàn: tham khảo link http://www.giaiphapexcel.com/diendan/threads/cách-tạo-list-data-validation-không-qua-trung-gian.120420/page-2#post-753655 ).

Bạn tham khảo file đính kèm dùng công thức cho cột phụ để tạo list biến đổi loại những dữ liệu đã phát sinh bên cột E, gồm:
a/ Tạo 1 "name" Vung:
Mã:
=OFFSET(Book!$G$3,,,COUNT(1/(LEN(Book!$G$3:$G$154)>0)))

b/ Tạo list loại trùng:
Mã:
G3=IFERROR(INDEX($C$3:$C$136,MATCH(0,INDEX(COUNTIF($G$2:G2,$C$3:$C$136)+COUNTIF($E$3:$E$136,$C$3:$C$136),),0)),"")

c/ Tạo Data Validation E3:E136 lấy list là "=Vung"



Chúc bạn ngày vui

Cảm ơn bạn đã hướng dẫn rất chi tiết.
Dù dùng VBA hay hàm thì mình đều chưa biết cách làm nên được bạn hướng dẫn thật là tốt
Đối với cách dùng Hàm kết hợp với cột phụ như trên quả là mình rất vừa ý. Mình đang xem cách sử dụng hàm của bạn và sẽ hỏi bạn thêm. Tuy nhiên mình thắc mắc đầu tiên là file của bạn dùng dạng .xlsb là như thế nào, nó khác định dạng khác ra sao? và xlsb có cho phép chạy VBA không ?
Cảm ơn bạn lần nữa
 
Cảm ơn bạn đã hướng dẫn rất chi tiết.
Dù dùng VBA hay hàm thì mình đều chưa biết cách làm nên được bạn hướng dẫn thật là tốt
Đối với cách dùng Hàm kết hợp với cột phụ như trên quả là mình rất vừa ý. Mình đang xem cách sử dụng hàm của bạn và sẽ hỏi bạn thêm. Tuy nhiên mình thắc mắc đầu tiên là file của bạn dùng dạng .xlsb là như thế nào, nó khác định dạng khác ra sao? và xlsb có cho phép chạy VBA không ?
Cảm ơn bạn lần nữa
1/ Nó khác định dạng khác ra sao?
Nó làm giảm kích thước đáng kể (giống kiểu nén file lại), nên lúc mở file cũng lẹ làng.

2/ Và xlsb có cho phép chạy VBA không ?
Vẫn chạy tốt bạn ạ!

Chúc bạn ngày vui.
 
@quocgiacan có lòng tốt giải thích giúp em 02 công thức anh sử dụng được không ợ? Trình em gà nên mò không ra.
Thank U very much! :)
 
@quocgiacan có lòng tốt giải thích giúp em 02 công thức anh sử dụng được không ợ? Trình em gà nên mò không ra.
Thank U very much! :)
Rất vui có bạn tham gia.
Có 1 chút góp ý với bạn:

1/ Bạn nên hỏi ý bạn MinhKhai có vui để bạn hỏi vậy không? vì nếu giải thích có làm loãng thời gian của bạn í không, vì bạn ấy đang hỏi câu thứ hai tại bài #30.
2/ Vì bạn mới vào và hỏi câu đầu tiên, nên không muốn bạn hiểu lầm, nhưng nói nhỏ với bạn: có nhiều anh em trên GPE ngại trả lời khi gặp ai hỏi mà có pha nửa Việt nửa Anh lắm... Nên cố gắng tránh há bạn há!

Tôi sẽ rất vui khi giải thích cho bạn hàm trên nhưng chờ ý kiến của MinhKhai nha!.

Chúc bạn ngày vui.
 
Rất vui có bạn tham gia.
Có 1 chút góp ý với bạn:

1/ Bạn nên hỏi ý bạn MinhKhai có vui để bạn hỏi vậy không? vì nếu giải thích có làm loãng thời gian của bạn í không, vì bạn ấy đang hỏi câu thứ hai tại bài #30.
2/ Vì bạn mới vào và hỏi câu đầu tiên, nên không muốn bạn hiểu lầm, nhưng nói nhỏ với bạn: có nhiều anh em trên GPE ngại trả lời khi gặp ai hỏi mà có pha nửa Việt nửa Anh lắm... Nên cố gắng tránh há bạn há!

Tôi sẽ rất vui khi giải thích cho bạn hàm trên nhưng chờ ý kiến của MinhKhai nha!.

Chúc bạn ngày vui.
Mấy hàm kiểu mảng này em có thể hiểu nhưng bảo e nhớ để áp dụng lần sau là kiểu gì cũng nhầm nên trong nhiều trường hợp em cứ bày thêm cột phụ cho nó xôm, sau này sửa cũng dễ chứ k hiểu về mảng mà làm mảng là mông lung lắm ạ. Anh Minh Khai dễ tính lắm anh ạ, e uống rượu với anh ấy rồi :))
Chúc anh 1 ngày vui ạ
 
Mấy hàm kiểu mảng này em có thể hiểu nhưng bảo e nhớ để áp dụng lần sau là kiểu gì cũng nhầm nên trong nhiều trường hợp em cứ bày thêm cột phụ cho nó xôm, sau này sửa cũng dễ chứ k hiểu về mảng mà làm mảng là mông lung lắm ạ. Anh Minh Khai dễ tính lắm anh ạ, e uống rượu với anh ấy rồi :))
Chúc anh 1 ngày vui ạ
Thế anh ấy vừa uống "gụ" vừa cười, hay vừa uống vừa "mếu" hở em? Khà khà khà! --=0--=0--=0

May quá, may quá! anh ở xa, và lại không biết uống "gụ" chắc không phải "mếu" trong lần sinh nhật GPE 11 này đâu.

Chúc em gái ngày thiệt vui.
/-*+//-*+//-*+/
 
Thế anh ấy vừa uống "gụ" vừa cười, hay vừa uống vừa "mếu" hở em? Khà khà khà! --=0--=0--=0

May quá, may quá! anh ở xa, và lại không biết uống "gụ" chắc không phải "mếu" trong lần sinh nhật GPE 11 này đâu.

Chúc em gái ngày thiệt vui.
/-*+//-*+//-*+/

:)uống phải cười chứ anh, mếu sao đc ạ :D. chắc còn lâu e mới đc mời anh uống "gụ" a nhỉ :) P/s mà anh ấy ít tuổi hơn anh nhiều hì.
 
mỗi người có cách làm khác nhau, mình không nghĩ được cách không dùng công thức mảng mà chỉ dùng 1 cột phụ
do dùng công thức bình thường nên cột phụ số thứ tự sẽ có dòng trống là dòng các phiếu đã sử dụng, cột phụ thứ 2 sẽ tạo danh sách liên tục các phiếu chưa sử dụng , số thứ tự có thể thay bằng hàm row
2 cột phụ có khác nhanh thật :D
 
1/ Nó khác định dạng khác ra sao?
Nó làm giảm kích thước đáng kể (giống kiểu nén file lại), nên lúc mở file cũng lẹ làng.

2/ Và xlsb có cho phép chạy VBA không ?
Vẫn chạy tốt bạn ạ!

Chúc bạn ngày vui.
Chào bạn
Mình sử dụng hàm của bạn và thấy vấn đề không hề nhỏ là:
1. Vẫn là file mẫu ban đầu (chứa 1 sheet, 1 name và ít dữ liệu) nhưng quét dữ liệu nguồn đến dòng 500 là file chạy chậm
2. Không biết có phải do file chạy chậm (validation chạy chậm, cột phụ xử lý nhanh) mà thay vì chọn từ list, nếu gõ bằng tay thì hộp thoại Stop của Validation nhảy ra.
Bạn có cách fix vấn đề này không ?
Cảm ơn bạn đã trao đổi
 

File đính kèm

Chào bạn
Mình sử dụng hàm của bạn và thấy vấn đề không hề nhỏ là:
1. Vẫn là file mẫu ban đầu (chứa 1 sheet, 1 name và ít dữ liệu) nhưng quét dữ liệu nguồn đến dòng 500 là file chạy chậm
2. Không biết có phải do file chạy chậm (validation chạy chậm, cột phụ xử lý nhanh) mà thay vì chọn từ list, nếu gõ bằng tay thì hộp thoại Stop của Validation nhảy ra.
Bạn có cách fix vấn đề này không ?
Cảm ơn bạn đã trao đổi
Do công thức của mình là công thức mảng (chứa một lúc nhiều mảng để tính toán), nên nó sẽ làm chậm tốc độ xử lý của máy.

Chắc giải pháp bằng công thức tối ưu nhất để giải quyết cả 2 câu hỏi của bạn, chính là giải pháp của các bạn: HieuCD, hay lehuong1409
e hay làm cách kiểu này ạ. mong các anh góp ý thêm ạ

Bạn tham khảo và có thể biến đổi cho phù hợp với thực tế phát sinh dữ liệu của bạn.

Chúc bạn ngày vui.
 
Do công thức của mình là công thức mảng (chứa một lúc nhiều mảng để tính toán), nên nó sẽ làm chậm tốc độ xử lý của máy.
Chắc giải pháp bằng công thức tối ưu nhất để giải quyết cả 2 câu hỏi của bạn, chính là giải pháp của các bạn: HieuCD, hay lehuong1409
Bạn tham khảo và có thể biến đổi cho phù hợp với thực tế phát sinh dữ liệu của bạn.

Chúc bạn ngày vui.

Cảm ơn bạn đã dành thời gian chia sẻ
Ở đây mình cũng muốn được mọi người hướng dẫn đồng thời mọi người cũng có đề tài để tìm hiểu sâu nhằm không "thất nghiệp" như bác @Ba Tê nói.
Chưa nói về dùng VBA như của bác @Ba Tê viết ở #25, còn thì dù dùng 2 cột phụ như file của bạn @HieuCD ở #27 hay @lehuong1409 ở #29 cũng vẫn gặp lỗi không thể gõ từ bàn phím.
Có 1 điều lạ là: Làm không sai cái gì mà vẫn không chạy --> Đây có thể coi là lỗi của Excel ?
 
Cảm ơn bạn đã dành thời gian chia sẻ
Ở đây mình cũng muốn được mọi người hướng dẫn đồng thời mọi người cũng có đề tài để tìm hiểu sâu nhằm không "thất nghiệp" như bác @Ba Tê nói.
Chưa nói về dùng VBA như của bác @Ba Tê viết ở #25, còn thì dù dùng 2 cột phụ như file của bạn @HieuCD ở #27 hay @lehuong1409 ở #29 cũng vẫn gặp lỗi không thể gõ từ bàn phím.
Có 1 điều lạ là: Làm không sai cái gì mà vẫn không chạy --> Đây có thể coi là lỗi của Excel ?
đây không phải là lỗi excel, mà công cụ sử dụng và thao tác không phù hợp với yêu cầu xử lý có mâu thuẩn ngay từ đầu
chỉ được nhập các số phiếu chưa nhập, số phiếu tại ô đang nhập liệu khi Enter sẽ là phiếu đã nhập không còn là chưa nhập, do đó điều kiện đưa ra không thỏa và data validation báo lỗi không cho nhập theo đúng chức năng của nó, Excel có thể đã lường trước và cho phép thao tác bằng cách chọn danh sách
để dùng data validation trong trường hợp nầy:
- có thể khai báo lại trong phần Error và dùng hơi bất tiện
- chỉnh lại phần calculation option là manual , nhập xong phải bấm tiếp phím chức năng F9
- dùng code VBA
hoặc phải chọn công cụ khác rắc rối hơn
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom