Chọn Mã trong một nhóm quy định!

  • Thread starter DucThuan
  • Ngày gửi
DucThuan

DucThuan

Tè lè ra rồi !
4/12/04
173
4
18
Đầu đường xó chợ
#1
Các bác cho hỏi cái này:
Công ty A có:
1200 Khách hàng ở TPHCM,
560 khách hàng ở Hà Nội,
320 khách hàng ở Đà Nẵng,
700 khách hàng ở Cần Thơ,
150 khách hàng ở Hải Phòng,
75 khách hàng ở Nha Trang....
Và còn nhiều hơn thế nữa.

Khi nhập liệu, người dùng chỉ cần nhấp chuột vào là tự động hiện danh sách các vùng TPHCM, Hà Nội,.... Nhấp chuột thêm vào TPHCM thì hiện tiếp danh sách khách hàng... Sau đó người dùng chỉ chọn mã KH là đủ.

Mong chỉ giúp cám ơn.
thuan25121975@yahoo.com - tsf264@gmail.com
 
H

handung107

Thành viên thân thiết
28/8/04
576
15
0
VN
www.giaiphapexcel.com
#2
Chỉ cần sử dụng Data/Validation thôi, rất đơn giản, Thuận nhé
1/ Giả sử ta có 1 bảng DM A1:B10 - Đặt tên là Tinh.
- Cột A : tên tỉnh, thành phố : TPHCM, Hà Nội, Huế, Đà Nẵng. Đặt tên cột này là DSTinh
- Cột B : Mã tỉnh. TD : TPHCM là HCM, Hà Nội là HN...
2/ Ta có các cột C là tên KH tại TPHCM, cột D là KH tại Hà Nội, cột E là KH tại Huế, cột F là Kh tại Đà Nẵng. Đặt tên các cột này quan trọng nhất là phải đúng với mã tỉnh, thành phố ta quy định tại cột B. TD cột C đặt tên là HCM
3/ Tại Cell nào đó, thí dụ tại Sheet2!B2 ta đặt Validation với Source =DSTinh. Ta sẽ có List các tỉnh, thành phố
4/ tại Sheet2!C2 chẳng hạn, ta đặt Validation, với Source sẽ là công thức sau : =INDIRECT(VLOOKUP(B2,Tinh,2,0))
5/Test lại, em sẽ thấy khi chọn tỉnh nào tại B2 thì DS các KH tại tỉnh đó sẽ hiện ra trong DS tại C2
 
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#3
Tuyệt chiêu thật đấy chị Dung. Em không đến nỗi dốt Excel lắm nhưng cũng chưa áp dụng cách này bao giờ. Mới gắn lại xong internet hôm nay lên chit chát với bà con trong làng.
Còn một cách nữa là dùng combo, nhưng xem ra cách của chị handung là hay nhất rồi.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
#4
Dear all,
--------
Không biết em đã hiểu hết ý của chị Dung chưa, em đã thử rồi, nhưng mà không có được:
Tại bước 4:
- Hàm VLOOKUP ném về một giá trị
- Hàm INDIRECT nôm na là conver một String sang Range
- Kết hợp 2 hàm này để set Source cho Validation sẽ gây lỗi do INDIRECT không tìm được chuỗi tham chiếu!
Mặt khác:
Mục tiêu của chúng ta là muốn lập một danh sách các khách hàng ở một tỉnh cho trước:
- Nguồn đưa vào phải là một mảng (array) các thành phần là khách hàng.
- Các khách hàng này phải nằm trong cùng một tỉnh được khai báo trong danh mục.
Cách của em:
Cái này em đã từng làm để danh sách các hóa đơn chưa được thanh toán:
- AdvandceFilter theo tỉnh để lọc ra danh sách các khách hàng theo một tỉnh đã lựa chọn rồi đưa vào bảng tạm.
- Set Source của Validation Khách hàng từ danh sách bảng tạm
Mong các anh chị góp ý!
 
Sửa lần cuối:
DucThuan

DucThuan

Tè lè ra rồi !
4/12/04
173
4
18
Đầu đường xó chợ
#6
Chị handung107, mọi người:
Cám ơn chị đã chỉ em cách dùng này, thật thú vị.
Nhưng ý của em là chỉ click trên một ô của một cột thôi (không cần phải hai cột) thì nó tự động hiển thị các danh sách tự chọn liền kề.

Chẳng hạn: Như chúng cần cùng dùng Autofilter thì chúng ta phải chọn Data thì tự động xổ xuống một danh sách có Filter, chọn tiếp Filter tự động xổ xuống một danh sách nữa ... và ta chọn cái ta cần tìm (Nghĩa là chúng ta cần mã khách hàng của tỉnh thành phố thôi, vì quá nhiều khách hàng nên phải phân nhóm để danh sách khách hàng nó bớt đi, thao tác nhanh hơn).

Trường hợp này có thể sử dụng Data Selector, nhưng khổ nỗi ở đây người dùng đặt mã không theo một số hoặc một ký tự riêng biệt,nên tìm rất lâu.

Cám ơn mọi người.
 
Sửa lần cuối:
W

workman

Cao cấp
22/7/05
372
0
0
46
Ho Chi Minh
#7
DucThuan nói:
Chị handung107, mọi người:
Cám ơn chị đã chỉ em cách dùng này, thật thú vị.
Nhưng ý của em là chỉ click trên một ô của một cột thôi (không cần phải hai cột) thì nó tự động hiển thị các danh sách tự chọn liền kề.

Chẳng hạn: Như chúng cần cùng dùng Autofilter thì chúng ta phải chọn Data thì tự động xổ xuống một danh sách có Filter, chọn tiếp Filter tự động xổ xuống một danh sách nữa ... và ta chọn cái ta cần tìm (Nghĩa là chúng ta cần mã khách hàng của tỉnh thành phố thôi, vì quá nhiều khách hàng nên phải phân nhóm để danh sách khách hàng nó bớt đi, thao tác nhanh hơn).

Trường hợp này có thể sử dụng Data Selector, nhưng khổ nỗi ở đây người dùng đặt mã không theo một số hoặc một ký tự riêng biệt,nên tìm rất lâu.

Cám ơn mọi người.
Hình như cách giải của Chị handung đã giải quyết đúng vấn đề của bạn rồi mà. Bạn xem lại xem sao nhé
 
HongViet

HongViet

Thành viên thân thiết
10/11/05
286
10
18
Đà nẵng
#9
DucThuan nói:
Các bác cho hỏi cái này:
Công ty A có:....
Khi nhập liệu, người dùng chỉ cần nhấp chuột vào là tự động hiện danh sách các vùng TPHCM, Hà Nội,.... Nhấp chuột thêm vào TPHCM thì hiện tiếp danh sách khách hàng... Sau đó người dùng chỉ chọn mã KH là đủ.Mong chỉ giúp cám ơn.
thuan25121975@yahoo.com - tsf264@gmail.com
Tôi thấy trong quyễn vỡ của B. Sa_DQ phần BC (chọn 1 danh sách từ 1 một DSách #) có nói như vầy, không biết bạn áp dụng được chăng?:
Tại 1 ô khi nhấp vô sẽ hiện tên đề mục (cụ thể của bạn là tên các tỉnh) Sau khi chọn từ dsách đổ xuống tên 1 tỉnh thành cụ thể thì trong ô bên cạnh bạn sẽ chọn được tên #h hàng cần thiết của tỉnh đó mà thôi!
; nhưng DSách của bạn quá nhiều thì khó đây!
# nhau ở đây với cách của chị HanDung107 ở chỗ: Cách trước chỉ tạo 3 trường; cách chị HanDung 107 tạo n+2 trường; ở đây n là số tỉnh, thành cần xuất hiện; Nhưng công thức thì cách này quá phức tạp, cái phức tạp này để Excel cán đáng là phải lắm ru!
 
Sửa lần cuối:
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
#10
Dear all,
--------
Em xem file Test_Validation.xls của chị Dung em mới hiểu vấn đề. Quả là một kỹ thuật uyên thâm!
Tuy nhiên em cũng xin chỉ ra một số nhược điểm của phương pháp này để mọi người vận dụng cho phù hợp:
1. Về tổ chức cơ sở dữ liệu (Database):
Đây là kỹ thuật quan trọng nhất và quyết định phần lớn trong việc gán Source cho Validation. Có thể hình dung danh mục khách hàng trong Test_Validation.xls được tổ chức theo chiều ngang. Việc tổ chức như vậy bộc lộ một vố hạn chế:
- Khi danh mục Tỉnh thành được mở rộng thì trường Tỉnh thành tương ứng phải được bổ sung vào danh mục khách hàng. Trường hợp dữ liệu trong danh mục Tỉnh thành càng nhiều thì bảng danh mục khách hàng sẽ nhiều Field hơn. Mặt khác số lượng khách hàng trong mỗi tỉnh thành là khác nhau: có Tỉnh nhiều khách hàng, có Tỉnh thì lại ít, nên có thể có nhiều ô trong danh mục khách hàng không sử dụng đến
- Việc bố trí danh mục khách hàng như vậy cũng gặp khó khăn trong việc thống kê, lập danh sách theo nhiều tiêu trí khác nhau. (Phải thiết kế một danh mục mới kết xuất từ mục cũ)
2. Quản lý Names:
Bạn bắt buộc phải đặt Name tương ứng với các tiêu đề của field trong danh mục Khách hàng. Điều này dẫn đến:
- Phải lập một Record phụ mô tả rõ hơn về tên tỉnh thành (nếu muốn in cho sếp coi danh mục Khách hàng)
- Mỗi một cột trong danh mục Khách hàng tương ứng với field nên bạn sẽ phải quản lý rất nhiều Name và phải quản lý chúng hết sức chặt chẽ. Giả như có nhỡ tay sửa/xóa cái tiêu đề trong danh mục khách hàng là Validation không tìm thấy nguồn nữa. Và mỗi khi thêm/sửa/bớt Tỉnh thành bạn phải thêm/sửa/bớt các Name tương ứng.
3 Hạn chế khác:
Nếu bạn muốn chuyển đổi cơ sở dữ liệu sang hệ quản trị khác như Access, SQL Server... bạn sẽ gặp khó khăn: phải tổ chức lại kết cấu các bảng CSDL cho phù hợp.
Một vài góp ý!
 
Sửa lần cuối:
O

omron

Sơ cấp
28/6/05
34
0
0
42
TPHCM
#11
Đào Việt Cường nói:
Dear all,
--------
Em xem file Test_Validation.xls của chị Dung em mới hiểu vấn đề. Quả là một kỹ thuật uyên thâm!
Tuy nhiên em cũng xin chỉ ra một số nhược điểm của phương pháp này để mọi người vận dụng cho phù hợp:
1. Về tổ chức cơ sở dữ liệu (Database):
Đây là kỹ thuật quan trọng nhất và quyết định phần lớn trong việc gán Source cho Validation. Có thể hình dung danh mục khách hàng trong Test_Validation.xls được tổ chức theo chiều ngang. Việc tổ chức như vậy bộc lộ một vố hạn chế:
- Khi danh mục Tỉnh thành được mở rộng thì trường Tỉnh thành tương ứng phải được bổ sung vào danh mục khách hàng. Trường hợp dữ liệu trong danh mục Tỉnh thành càng nhiều thì bảng danh mục khách hàng sẽ nhiều Field hơn. Mặt khác số lượng khách hàng trong mỗi tỉnh thành là khác nhau: có Tỉnh nhiều khách hàng, có Tỉnh thì lại ít, nên có thể có nhiều ô trong danh mục khách hàng không sử dụng đến
- Việc bố trí danh mục khách hàng như vậy cũng gặp khó khăn trong việc thống kê, lập danh sách theo nhiều tiêu trí khác nhau. (Phải thiết kế một danh mục mới kết xuất từ mục cũ)
2. Quản lý Names:
Bạn bắt buộc phải đặt Name tương ứng với các tiêu đề của field trong danh mục Khách hàng. Điều này dẫn đến:
- Phải lập một Record phụ mô tả rõ hơn về tên tỉnh thành (nếu muốn in cho sếp coi danh mục Khách hàng)
- Mỗi một cột trong danh mục Khách hàng tương ứng với field nên bạn sẽ phải quản lý rất nhiều Name và phải quản lý chúng hết sức chặt chẽ. Giả như có nhỡ tay sửa/xóa cái tiêu đề trong danh mục khách hàng là Validation không tìm thấy nguồn nữa. Và mỗi khi thêm/sửa/bớt Tỉnh thành bạn phải thêm/sửa/bớt các Name tương ứng.
3 Hạn chế khác:
Nếu bạn muốn chuyển đổi cơ sở dữ liệu sang hệ quản trị khác như Access, SQL Server... bạn sẽ gặp khó khăn: phải tổ chức lại kết cấu các bảng CSDL cho phù hợp.
Một vài góp ý!
Đó là ví dụ đơn giản thôi, bạn có thể lập công thức khác mà không cần đặt tên Name, và bố trí thế nào tùy thích !
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
#12
omron nói:
Đó là ví dụ đơn giản thôi, bạn có thể lập công thức khác mà không cần đặt tên Name, và bố trí thế nào tùy thích!
Dear omron,
------------
Mình chưa hiểu ý của omron lắm, omron nói rõ hơn về việc "bạn có thể lập công thức khác mà không cần đặt tên Name, và bố trí thế nào tùy thích" được không?

Dear all,
--------
Những góp ý trên đây của em có thể mang tính chủ quan nhưng cũng rất khách quan.
Tất nhiên mỗi người có thể thiết kế sao cho phù hợp và phục vụ nhanh nhất, hiệu quả nhất công việc của mình. Chính vì thế, có rất nhiều cách thức khác nhau và việc chia sẻ hiểu biết - dù đúng hay sai - của người này có thể là thông tin hữu ích đối với người khác.
Chỉ ra những nhược điểm của Test_Validation.xls không có nghĩa là phản đối cách thức ứng dụng của nó mà ngược lại, em muốn mọi người thấy bản chất của phương pháp này để vận dụng tốt hơn. Trong trường hợp khác, liệu cách vận dụng này có còn phù hợp? Em xin gửi kèm cơ sở dữ liệu mẫu để mọi người vận dụng trong trường hợp này!
 
Sửa lần cuối:
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
#13
Dear all,
--------
Để mọi người hình dung rõ hơn về việc áp dụng Validation trong mô hình cơ sở dữ liệu trong chuyên mục này, tôi xin mô tả rõ hơn một số ràng buộc như sau (CSDL mẫu đã được đính kèm ở bài trước):
- Điểm khởi hành (Đi từ) của khách hàng không phụ thuộc vào quê quán của khách hàng đó, nhưng điểm đến phải phụ thuộc vào khả năng công ty có thể bố trí được các tuyến nào (được cài đặt trong danh mục Tuyến)
- Các khách hàng được công ty đưa đi thì có thể được đón về hoặc được khách hàng thông báo là không đi theo tuyến công ty đón nữa. Điểm này khiến ta phải kiểm tra xem các khách hàng đưa đi đã được đón về hoặc không về nữa hay không (Đã đón = True/False).
- Khi chọn các khách hàng để đón về, chúng ta chỉ chọn các khách đã đưa đi và cùng tuyến với chuyến đưa đi (chuyến đón về có chiều ngược lại với chuyến đưa đi).
- Các chuyến đi đều tính số tiền căn cứ vào số lượng người đi và giá cho mỗi chuyến đi đã được cài đặt trong danh mục Tuyến
- Các bảng cơ sở dữ liệu không được phép thay đổi cấu trúc.
Vì chủ đề được đưa vào chuyên mục Excel và VBA nên chúng ta có thể vận dụng các kiến thức VBA để giải quyết.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
#14
Validation theo phương pháp trích lọc bằng Advanced Filter

Dear all,
-------
Chờ mãi mà không thấy ai đưa ra lời giải, tôi xin gửi lên đây phương pháp mà tôi đã từng làm.
Các giải pháp đưa ra có thể rất khác nhau do mục tiêu ứng dụng là khác nhau. Và để đạt được mục tiêu tối ưu này, thường chúng ta không thể đạt được mục tiêu tối ưu khác. Trong ví dụ này, vấn đề không đạt được có lẽ là tốc độ. Sau mỗi lần di chuyển trên bảng, biến cố Worksheet_SelectionChange lại xay ra để xác định điều kiện. Điều này dẫn đến quá trình tính toán gần như liên tục trong quá trình cập nhật dữ liệu. Điều này đòi hỏi tốc độ xử lý của máy tính của bạn phải đủ nhanh.
 

Đính kèm

Sửa lần cuối:

Thành viên trực tuyến

Không có thành viên trực tuyến.




Xem nhiều