Tạo droplist kèm điều kiện

th_dungdn

Thành viên mới
Tham gia ngày
14 Tháng năm 2012
Bài viết
6
Thích
0
Tuổi
29
#1
Hiện tại em đang làm menu thực đơn cho canteen. Thực đơn bao gồm 2 món chính (main dish), 1 món phụ và 1 canh. Nguyên tắc làm menu là không bị lặp món trong 1 tuần. Hiện tại em đã làm droplist sổ xuống cho mỗi ô. Cho em hỏi, làm sao để droplist ở mỗi ô sau sẽ không bao gồm các món đã chọn ở các ô trước ạ?
Em có gửi file đính kèm, anh chị giúp em với ạ!
Em cảm ơn

1526368056740.png
 

File đính kèm

Nguyễn Hồng Quang

Thành viên GPE Hà Nội
Tham gia ngày
8 Tháng sáu 2007
Bài viết
561
Thích
280
Tuổi
33
#2
Hiện tại em đang làm menu thực đơn cho canteen. Thực đơn bao gồm 2 món chính (main dish), 1 món phụ và 1 canh. Nguyên tắc làm menu là không bị lặp món trong 1 tuần. Hiện tại em đã làm droplist sổ xuống cho mỗi ô. Cho em hỏi, làm sao để droplist ở mỗi ô sau sẽ không bao gồm các món đã chọn ở các ô trước ạ?
Em có gửi file đính kèm, anh chị giúp em với ạ!
Em cảm ơn
Ý tưởng của mình là tạo nhiều list dùng hàm tìm kiếm để loại các món đã chọn theo thứ tự như bạn đã nêu trong bài. Kết nối các ô đến các list tương ứng Vẫn theo nguyên tắc thực hiện chọn là:
Chọn theo đúng thứ tự từ các ngày nhỏ đến ngày to, từ món chính 1 xong đến món chính 2
Trong trường hợp chọn xong, mà muốn quay lại sửa các ngày trước nếu trùng với các ngày sau sẽ có báo Duplicate (màu hồng)
Ví dụ như trong file gửi kèm: Mình đã chọn xong hết, quay lại chọn Main dish 1 cho Tuesday thì file báo trùng với Saturday. Điều này có nghĩa là phải chọn lại Main dish1 của Saturday
Các phần còn lại bạn có thể phát triển theo ý tưởng này
Hy vọng giúp ích được cho bạn. (Các món ăn hấp dẫn quá, đang đói nên mình không làm tiếp nổi )
 

File đính kèm

Lần chỉnh sửa cuối:
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,130
Thích
2,103
#3
Hiện tại em đang làm menu thực đơn cho canteen. Thực đơn bao gồm 2 món chính (main dish), 1 món phụ và 1 canh. Nguyên tắc làm menu là không bị lặp món trong 1 tuần. Hiện tại em đã làm droplist sổ xuống cho mỗi ô. Cho em hỏi, làm sao để droplist ở mỗi ô sau sẽ không bao gồm các món đã chọn ở các ô trước ạ?
Em có gửi file đính kèm, anh chị giúp em với ạ!
Em cảm ơn

View attachment 195478
Tất cả các món đều không được trùng, dùng 1 mã VBA:
 

File đính kèm

Lần chỉnh sửa cuối:

th_dungdn

Thành viên mới
Tham gia ngày
14 Tháng năm 2012
Bài viết
6
Thích
0
Tuổi
29
#5
Ý tưởng của mình là tạo nhiều list dùng hàm tìm kiếm để loại các món đã chọn theo thứ tự như bạn đã nêu trong bài. Kết nối các ô đến các list tương ứng Vẫn theo nguyên tắc thực hiện chọn là:
Chọn theo đúng thứ tự từ các ngày nhỏ đến ngày to, từ món chính 1 xong đến món chính 2
Trong trường hợp chọn xong, mà muốn quay lại sửa các ngày trước nếu trùng với các ngày sau sẽ có báo Duplicate (màu hồng)
Ví dụ như trong file gửi kèm: Mình đã chọn xong hết, quay lại chọn Main dish 1 cho Tuesday thì file báo trùng với Saturday. Điều này có nghĩa là phải chọn lại Main dish1 của Saturday
Các phần còn lại bạn có thể phát triển theo ý tưởng này
Hy vọng giúp ích được cho bạn. (Các món ăn hấp dẫn quá, đang đói nên mình không làm tiếp nổi )
Cảm ơn bạn Quang nhiều nha! Vấn đề của mình giải quyết được rồi. Mình cứ đinh ninh là phải dùng VBA nên không động não suy nghĩ kỹ. Cảm ơn bạn rất nhiều!!
 
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,130
Thích
2,103
#6
Nghĩa là sao ạ? Em download file đính kèm về rồi mà vẫn chưa thấy drop list những ô sau thay đổi gì cả ạ. Anh coi lại giúp em với ạ!
Em cảm ơn
Bạn bật Enable Macro chưa, với khi bạn chọn món nó chỉ còn những món bạn chưa chọn thôi mà nhỉ ??
Bạn chọn thử bên trái cây xem, chỉ còn 3 lựa chọn, hôm qua mình chỉnh còn lấy thiếu dữ liệu:
 

File đính kèm

th_dungdn

Thành viên mới
Tham gia ngày
14 Tháng năm 2012
Bài viết
6
Thích
0
Tuổi
29
#7
Bạn bật Enable Macro chưa, với khi bạn chọn món nó chỉ còn những món bạn chưa chọn thôi mà nhỉ ??
Bạn chọn thử bên trái cây xem, chỉ còn 3 lựa chọn, hôm qua mình chỉnh còn lấy thiếu dữ liệu:
Cảm ơn anh nhiều nhé! Em bật macro lên rồi, file chạy được rồi anh ơi! Nhưng em vẫn chưa hiểu lắm cách anh đang làm ạ. Em xem cách anh làm file mà vẫn chưa hiểu lắm ạ! Nếu anh có thời gian, anh giải thích cho em với được không ạ. Em cảm ơn!
 
Tham gia ngày
28 Tháng hai 2017
Bài viết
2,130
Thích
2,103
#8
Cảm ơn anh nhiều nhé! Em bật macro lên rồi, file chạy được rồi anh ơi! Nhưng em vẫn chưa hiểu lắm cách anh đang làm ạ. Em xem cách anh làm file mà vẫn chưa hiểu lắm ạ! Nếu anh có thời gian, anh giải thích cho em với được không ạ. Em cảm ơn!
Chết xin lỗi bạn, cứ chăm chăm copy công thức nên lại sai nữa, bạn xài bản này không có VBA khỏe hơn:
Ở đây mình có tạo thêm 1 bảng phụ lấy từ danh sách món ăn chính của bạn, sau đó dùng hàm đếm:
PHP:
COUNTIF(J$1:J1,B$2:B$77)+COUNTIF(Menu!$C$4:$I$5,B$2:B$77)
Đếm ở đây là gom cả 2 bảng ra đếm:
- COUNTIF(J$1:J1,B$2:B$77) là đếm từ loại trừ trùng từ trên xuống món nào lọc ra rồi thì loại bỏ lấy món tiếp theo tức là số 1
- COUNTIF(Menu!$C$4:$I$5,B$2:B$77) là đếm từ bảng dữ liệu món ăn bạn đã chọn có rồi thì thành các số lớn hơn 0
Tiếp đến là hàm Match(0,...,0) là tìm vị trí số 0 mà cái nào ta chưa đếm được trong bảng đã chọn món ăn với tránh trùng từ bên trên, ta sẽ có vị trí món ăn cần lấy.
Cuối cùng dùng hàm OFFSET để lấy món ăn chưa được trọn và không trùng tiếp theo ra.
Bên trong Name tôi dùng công thức OFFSET để lấy các món ăn đã được loại trừ trùng và chọn kết hợp hàm COUNTIF(vùng dữ liệu cần lấy,điều kiện "?*" là đếm các có bao nhiêu chuỗi)
Bonus thêm 1 cái dữ lại dữ liệu đã chọn trong ô (xài Macro).
 

File đính kèm

Lần chỉnh sửa cuối:

th_dungdn

Thành viên mới
Tham gia ngày
14 Tháng năm 2012
Bài viết
6
Thích
0
Tuổi
29
#9
Chết xin lỗi bạn, cứ chăm chăm copy công thức nên lại sai nữa, bạn xài bản này không có VBA khỏe hơn:
Ở đây mình có tạo thêm 1 bảng phụ lấy từ danh sách món ăn chính của bạn, sau đó dùng hàm đếm:
PHP:
COUNTIF(J$1:J1,B$2:B$77)+COUNTIF(Menu!$C$4:$I$5,B$2:B$77)
Đếm ở đây là gom cả 2 bảng ra đếm:
- COUNTIF(J$1:J1,B$2:B$77) là đếm từ loại trừ trùng từ trên xuống món nào lọc ra rồi thì loại bỏ lấy món tiếp theo tức là số 1
- COUNTIF(Menu!$C$4:$I$5,B$2:B$77) là đếm từ bảng dữ liệu món ăn bạn đã chọn có rồi thì thành các số lớn hơn 0
Tiếp đến là hàm Match(0,...,0) là tìm vị trí số 0 mà cái nào ta chưa đếm được trong bảng đã chọn món ăn với tránh trùng từ bên trên, ta sẽ có vị trí món ăn cần lấy.
Cuối cùng dùng hàm OFFSET để lấy món ăn chưa được trọn và không trùng tiếp theo ra.
Bên trong Name tôi dùng công thức OFFSET để lấy các món ăn đã được loại trừ trùng và chọn kết hợp hàm COUNTIF(vùng dữ liệu cần lấy,điều kiện "?*" là đếm các có bao nhiêu chuỗi)
Bonus thêm 1 cái dữ lại dữ liệu đã chọn trong ô (xài Macro).[/QUOTE
Chết xin lỗi bạn, cứ chăm chăm copy công thức nên lại sai nữa, bạn xài bản này không có VBA khỏe hơn:
Ở đây mình có tạo thêm 1 bảng phụ lấy từ danh sách món ăn chính của bạn, sau đó dùng hàm đếm:
PHP:
COUNTIF(J$1:J1,B$2:B$77)+COUNTIF(Menu!$C$4:$I$5,B$2:B$77)
Đếm ở đây là gom cả 2 bảng ra đếm:
- COUNTIF(J$1:J1,B$2:B$77) là đếm từ loại trừ trùng từ trên xuống món nào lọc ra rồi thì loại bỏ lấy món tiếp theo tức là số 1
- COUNTIF(Menu!$C$4:$I$5,B$2:B$77) là đếm từ bảng dữ liệu món ăn bạn đã chọn có rồi thì thành các số lớn hơn 0
Tiếp đến là hàm Match(0,...,0) là tìm vị trí số 0 mà cái nào ta chưa đếm được trong bảng đã chọn món ăn với tránh trùng từ bên trên, ta sẽ có vị trí món ăn cần lấy.
Cuối cùng dùng hàm OFFSET để lấy món ăn chưa được trọn và không trùng tiếp theo ra.
Bên trong Name tôi dùng công thức OFFSET để lấy các món ăn đã được loại trừ trùng và chọn kết hợp hàm COUNTIF(vùng dữ liệu cần lấy,điều kiện "?*" là đếm các có bao nhiêu chuỗi)
Bonus thêm 1 cái dữ lại dữ liệu đã chọn trong ô (xài Macro).
Em xem file rồi ạ. Cảm ơn anh nhiều nhé! Triệu like vì hướng dẫn quá nhiệt tình luôn!!!!!!
 
Top