Tạo data validation với dữ liệu trùng nhau

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Vo Duy Minh

Thành viên hoạt động
Tham gia
21/3/19
Bài viết
113
Được thích
32
Chào các bạn;
Rất mong nhận được ý kiến của các bạn với vấn đề sau.
Tôi muốn tạo một data validation với danh sách tên trong đó có những cái tên trùng nhau.
Vấn đề là data validation sẽ ghi nhận một tên trong các tên trùng nhau, tôi không rõ có cách nào để data validation (hoặc cách nào khác) để có thể hiển thị toàn bộ những tên trùng nhau; chẳng hạn có 5 tên Nguyễn Văn A thì danh sách xổ xuống của data validation sẽ cho ra cả 5 dòng tên Nguyễn Văn A, để khi chọn một trong năm cái tên đó thì trong một cell tương ứng sẽ đưa ra mã cho tên đó.
Dĩ nhiên việc data validation cho mã sẽ ra tên thì đơn giản, nhưng đôi khi không thể nhớ mã mà phải tìm tên.
Do sheet truy tìm dữ liệu của tôi khác với sheet có danh sách nên mới phát sinh vấn đề này.
Mong nhận được ý kiến của các bạn và cám ơn các bạn đã đọc mail.
 
Chào các bạn;
Rất mong nhận được ý kiến của các bạn với vấn đề sau.
Tôi muốn tạo một data validation với danh sách tên trong đó có những cái tên trùng nhau.
Vấn đề là data validation sẽ ghi nhận một tên trong các tên trùng nhau, tôi không rõ có cách nào để data validation (hoặc cách nào khác) để có thể hiển thị toàn bộ những tên trùng nhau; chẳng hạn có 5 tên Nguyễn Văn A thì danh sách xổ xuống của data validation sẽ cho ra cả 5 dòng tên Nguyễn Văn A, để khi chọn một trong năm cái tên đó thì trong một cell tương ứng sẽ đưa ra mã cho tên đó.
Dĩ nhiên việc data validation cho mã sẽ ra tên thì đơn giản, nhưng đôi khi không thể nhớ mã mà phải tìm tên.
Do sheet truy tìm dữ liệu của tôi khác với sheet có danh sách nên mới phát sinh vấn đề này.
Mong nhận được ý kiến của các bạn và cám ơn các bạn đã đọc mail.
Vậy anh ghép mã với tên rồi mới đưa vào validation xem thế nào.
 
Cám ơn bạn Hoàng Tuấn 686 đã quan tâm.
Tôi thấy cách này cũng không ổn vì với Nguyễn Văn A, chúng ta sẽ có 0001 Nguyễn Văn A; 0123 Nguyễn Văn A; 0456 Nguyễn Văn A; ... thì các tên này sẽ cách biệt với nhau, đôi khi rất xa. Hơn nữa, chúng ta cũng không biết có bao nhiêu Nguyễn Văn A để tìm. Nếu như có danh sách để chọn thì những cái tên Nguyễn Văn A sẽ đi liền nhau, để chúng ta có thể tùy chọn.
Hiện nay thì tôi đành theo cách thủ công là không biết mã thì mở sheet danh sách ra tìm mã rồi đành trở lại sheet truy cập để nhập mã thôi. Vấn đề là danh sách lên đến cả ngàn tên thì tìm cũng hơi bị nhọc.
Dù sao, tôi cám ơn anh rất nhiều, chúc anh những ngày lễ thật vui.
 
Cám ơn bạn Hoàng Tuấn 686 đã quan tâm.
Tôi thấy cách này cũng không ổn vì với Nguyễn Văn A, chúng ta sẽ có 0001 Nguyễn Văn A; 0123 Nguyễn Văn A; 0456 Nguyễn Văn A; ... thì các tên này sẽ cách biệt với nhau, đôi khi rất xa. Hơn nữa, chúng ta cũng không biết có bao nhiêu Nguyễn Văn A để tìm. Nếu như có danh sách để chọn thì những cái tên Nguyễn Văn A sẽ đi liền nhau, để chúng ta có thể tùy chọn.
Hiện nay thì tôi đành theo cách thủ công là không biết mã thì mở sheet danh sách ra tìm mã rồi đành trở lại sheet truy cập để nhập mã thôi. Vấn đề là danh sách lên đến cả ngàn tên thì tìm cũng hơi bị nhọc.
Dù sao, tôi cám ơn anh rất nhiều, chúc anh những ngày lễ thật vui.
Anh chưa hiểu rõ rồi, khi ghép thì để tên lên trước mã, sau đó xắp xếp lại theo vần chữ cái rồi mới đưa vào validation.
Nếu vẫn chưa hình dung ra thì anh đính kèm file lên đây anh nhé.
 
Tôi cũng vừa nghĩ như thế, tên để trước thì sẽ ra một danh sách ổn định.
Có điểm không hay là nó sẽ hiển thị trong cell cả tên và mã.
Tôi đang thử nghiệm cho hiển thị ở một cell khác (với màu trùng nền để không hiển thị), và từ đó tách ra tên và mã ở các ô tương ứng.

Rất cám ơn gợi ý của anh, nó giúp tôi hướng giải quyết rất tốt.
 
Tôi cũng vừa nghĩ như thế, tên để trước thì sẽ ra một danh sách ổn định.
Có điểm không hay là nó sẽ hiển thị trong cell cả tên và mã.
Tôi đang thử nghiệm cho hiển thị ở một cell khác (với màu trùng nền để không hiển thị), và từ đó tách ra tên và mã ở các ô tương ứng.

Rất cám ơn gợi ý của anh, nó giúp tôi hướng giải quyết rất tốt.
Anh nên gửi file xem cụ thể thế nào, có thể sẽ có nhiều giải pháp phù hợp hơn từ nhiều thành viên khác chứ giải quyết về excel mà toàn chữ là chữ thế này thì cũng khó hình dung.
 
Tôi sẽ làm lại file cho đơn giản để gửi lên cho anh và các bạn khác có phương án giải quyết tốt hơn.
 
Chào anh Hoàng Tuấn 868 và các bạn khác;
Tôi gửi file để các bạn dễ hình dung vấn đề.
Hiện nay thì tôi giải quyết theo cách của anh Hoàng Tuấn 868 là tạo thêm một cột gồm tên và mã nhân viên trong sheet THÔNG TIN
Trong sheet TRA CỨU thì cell B1 sẽ làm data validation danh sách từ cột J của trang THÔNG TIN (cùng mã), rồi sau đó tách ra mã (cell A3 sheet TRA CUU) và tên (cell B3 sheet TRA CUU). Từ mã ở cell A3 sẽ truy xuất các thông tin khác trong sheet THÔNG TIN (và nhiều sheet khác).

Mục đích của tôi là muốn tạo một data validation có toàn bộ các dữ liệu kể cả dữ liệu trùng (như 3 tên Nguyễn Văn A) ở cell B3 (từ đó truy ngược lại mã ở cell A3).

Thực sự thì cách làm trong file đính kèm cũng được cho tôi rồi.
Nếu có cách giải quyết khác thì quá hay.
Rất cám ơn anh Hoàng Tuấn 868 đã quan tâm.
 

File đính kèm

  • Data validation với dữ liệu trùng.xlsx
    22.2 KB · Đọc: 10
Chào anh Hoàng Tuấn 868 và các bạn khác;
Tôi gửi file để các bạn dễ hình dung vấn đề.
Hiện nay thì tôi giải quyết theo cách của anh Hoàng Tuấn 868 là tạo thêm một cột gồm tên và mã nhân viên trong sheet THÔNG TIN
Trong sheet TRA CỨU thì cell B1 sẽ làm data validation danh sách từ cột J của trang THÔNG TIN (cùng mã), rồi sau đó tách ra mã (cell A3 sheet TRA CUU) và tên (cell B3 sheet TRA CUU). Từ mã ở cell A3 sẽ truy xuất các thông tin khác trong sheet THÔNG TIN (và nhiều sheet khác).

Mục đích của tôi là muốn tạo một data validation có toàn bộ các dữ liệu kể cả dữ liệu trùng (như 3 tên Nguyễn Văn A) ở cell B3 (từ đó truy ngược lại mã ở cell A3).

Thực sự thì cách làm trong file đính kèm cũng được cho tôi rồi.
Nếu có cách giải quyết khác thì quá hay.
Rất cám ơn anh Hoàng Tuấn 868 đã quan tâm.
Anh ơi, anh cần gì phải thêm ô A3 và B3, anh lấy thẳng từ B1 là được mà, anh thử xem file đính kèm nhé.
 

File đính kèm

  • Data validation với dữ liệu trùng.xlsx
    21.6 KB · Đọc: 6
Cám ơn anh Hoàng Tuấn 868
Tôi cũng biết thế, nhưng trong file của tôi thì có rất nhiều sheet để lấy thông tin, số liệu qua nhiều năm.
Những sheet sau thì đâu có cái cột với giá trị trong cell B1, chính vì thế mà tôi phải tách tên và mã để từ mã cell A3 mà truy xuất số liệu từ các sheet khác.
Một lần nữa, rất cám ơn anh đã nhiệt tình quan tâm.
Tôi thấy cách xử lý thế này thì cũng ổn.
Chúc anh nhiều sức khỏe.
 
Cám ơn anh Hoàng Tuấn 868
Tôi cũng biết thế, nhưng trong file của tôi thì có rất nhiều sheet để lấy thông tin, số liệu qua nhiều năm.
Những sheet sau thì đâu có cái cột với giá trị trong cell B1, chính vì thế mà tôi phải tách tên và mã để từ mã cell A3 mà truy xuất số liệu từ các sheet khác.
Một lần nữa, rất cám ơn anh đã nhiệt tình quan tâm.
Tôi thấy cách xử lý thế này thì cũng ổn.
Chúc anh nhiều sức khỏe.
Để tách mã trong ô B1 thì anh dùng hàm RIGHT rồi áp vào hàm tìm kiếm là xong thôi, còn đơn giản hơn cả cách cũ.
 

File đính kèm

  • Data validation với dữ liệu trùng.xlsx
    21.7 KB · Đọc: 6
Cám ơn anh Hoàng Tuấn (tôi xin bỏ 868)
Do trong trang chủ thì có cell mã từng người (mỗi người có một mã riêng), tôi muốn hiển thị mã luôn trong cell đó thôi. Có chút rắc rối nhỏ thêm thật, nhưng khi in trang cho từng người thì coi đẹp mắt hơn.

Tôi cũng xin phiền anh thêm một chút,
Anh xem trong file đính kèm, tôi làm cái data validation không có hàng trống với sheet THONG TIN. Nhưng tôi không hiểu tại sao mà với Name Manager "Danhsach_1" cho cột M từ danh sách cột L (tôi tô hồng cho anh dễ thấy) thì phải từ hàng 4 trở đi mới đúng, còn từ 1 đến 4 luôn là sai. Trong khi với "Danhsach_2" cho cột P từ danh sách cột O thì khớp ngay từ đầu.
Hàm cho Danhsach_1 là : =IF(ISERROR(INDEX('THONG TIN'!$L$3:$L$1000;SMALL(IF('THONG TIN'!$L$3:$L$1000<>"";ROW('THONG TIN'!$L$3:$L$1000);"");ROWS('THONG TIN'!$3:1000))));"";INDEX('THONG TIN'!$L$3:$L$1000;SMALL(IF('THONG TIN'!$L$3:$L$1000<>"";ROW('THONG TIN'!$L$3:$L$1000);"");ROWS('THONG TIN'!$3:1000))))
Hàm cho Danhsach_2 là: =IF(ISERROR(INDEX('THONG TIN'!$L$1:$L$1000;SMALL(IF('THONG TIN'!$L$1:$L$1000<>"";ROW('THONG TIN'!$L$1:$L$1000);"");ROWS('THONG TIN'!$1:1))));"";INDEX('THONG TIN'!$L$1:$L$1000;SMALL(IF('THONG TIN'!$L$1:$L$1000<>"";ROW('THONG TIN'!$L$1:$L$1000);"");ROWS('THONG TIN'!$1:1))))
Trước nay đúng cái món này là tôi cứ phải đẩy lên row 1 thôi, tôi đã làm đủ cách mà chẳng được cái nào cả.

Rất cám ơn anh và thật sự tôi rất biết ơn với nhiệt tình của anh.
 

File đính kèm

  • Data validation với dữ liệu trùng.xlsx
    23.2 KB · Đọc: 10
Cám ơn anh Hoàng Tuấn (tôi xin bỏ 868)
Do trong trang chủ thì có cell mã từng người (mỗi người có một mã riêng), tôi muốn hiển thị mã luôn trong cell đó thôi. Có chút rắc rối nhỏ thêm thật, nhưng khi in trang cho từng người thì coi đẹp mắt hơn.

Tôi cũng xin phiền anh thêm một chút,
Anh xem trong file đính kèm, tôi làm cái data validation không có hàng trống với sheet THONG TIN. Nhưng tôi không hiểu tại sao mà với Name Manager "Danhsach_1" cho cột M từ danh sách cột L (tôi tô hồng cho anh dễ thấy) thì phải từ hàng 4 trở đi mới đúng, còn từ 1 đến 4 luôn là sai. Trong khi với "Danhsach_2" cho cột P từ danh sách cột O thì khớp ngay từ đầu.
Hàm cho Danhsach_1 là : =IF(ISERROR(INDEX('THONG TIN'!$L$3:$L$1000;SMALL(IF('THONG TIN'!$L$3:$L$1000<>"";ROW('THONG TIN'!$L$3:$L$1000);"");ROWS('THONG TIN'!$3:1000))));"";INDEX('THONG TIN'!$L$3:$L$1000;SMALL(IF('THONG TIN'!$L$3:$L$1000<>"";ROW('THONG TIN'!$L$3:$L$1000);"");ROWS('THONG TIN'!$3:1000))))
Hàm cho Danhsach_2 là: =IF(ISERROR(INDEX('THONG TIN'!$L$1:$L$1000;SMALL(IF('THONG TIN'!$L$1:$L$1000<>"";ROW('THONG TIN'!$L$1:$L$1000);"");ROWS('THONG TIN'!$1:1))));"";INDEX('THONG TIN'!$L$1:$L$1000;SMALL(IF('THONG TIN'!$L$1:$L$1000<>"";ROW('THONG TIN'!$L$1:$L$1000);"");ROWS('THONG TIN'!$1:1))))
Trước nay đúng cái món này là tôi cứ phải đẩy lên row 1 thôi, tôi đã làm đủ cách mà chẳng được cái nào cả.
Nhìn hai công thức của anh em hoa cả mắt, nhưng em chưa rõ anh bảo luôn sai thì cụ thể là sai thế nào, anh ví dụ thực tế luôn chứ anh tả toàn chữ là chữ. Bước đầu em nhìn thì thấy 2 công thức khác nhau anh ạ.
 
Xin lỗi làm anh "hoa cả mắt".
Tôi có gửi file cho anh xem mà.
Với hàm Danhsach_2 thì OK, nhưng bắt buộc phải bắt đầu danh sách từ dòng đầu tiên của sheet (không ngang với dòng chủ của nó, cột "Tên họ", cột C)
Còn với hàm Danhsach_1 (đặt ngang với danh sách trong cột "Tên họ"), thì ba dòng trên (dòng 3, 4, 5) thì sai, chỉ từ dòng 6 trở đi thì khớp với danh sách chính. Tôi chỉnh đủ cách mà vẫn không được.
Thật ra thì cũng không quan trọng lớp vì dù sao cả hai cột này sẽ bị ẩn cả. Tôi chỉ thắc mắt không hiểu tại sao khi không bắt đầu từ dòng đầu tiên của sheet thì công thức chạy không ổn.
Nếu phức tạp quá thì mong anh không cần nhọc lòng.
 
Còn với hàm Danhsach_1 (đặt ngang với danh sách trong cột "Tên họ"), thì ba dòng trên (dòng 3, 4, 5) thì sai, chỉ từ dòng 6 trở đi thì khớp với danh sách chính.

Thử chỉnh như sau:

=IFERROR(INDEX('THONG TIN'!$L$3:$L$1000,SMALL(IF('THONG TIN'!$L$3:$L$1000<>"",
ROW('THONG TIN'!$L$3:$L$1000)-ROWS($L$1:$L$2)),ROWS($M$3:M3))),"")

.
 
Cám ơn anh Phuocam rất nhiều,
Tôi đã thử áp dụng và hoàn toàn phù hợp.
Quan trọng nhất là hàm của anh không làm anh Hoàng Tuấn đến nỗi hoa cả mắt.
Một lần nữa, tôi cám ơn anh, và cả anh Hoàng Tuấn, rất nhiều.
 
Web KT
Back
Top Bottom