Tạo dùm Validation (2 người xem)

Liên hệ QC

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

chapi.you

Thành viên mới
Tham gia
24/3/11
Bài viết
20
Được thích
8
Tôi có 1 ví dụ nhỏ này, tôi đưa lên đây nhờ các ACE giúp đỡ về tạo Validation cho từng mục phiếu thu, phiếu chi.
 

File đính kèm

File đính kèm

Câu hỏi này giống như lỗi trong topic nàytopic này
Trong topic đó có nói "hãy dùng name động" và nói ""lọc lấy danh sách duy nhất"
Vậy thì giải thích luôn 1 lần cho khỏi hỏi nữa, mặc dù những cái này trên diễn đàn có rất nhiều.

1. Lọc lấy danh sách duy nhất:


a. Dùng Advanced Filter
- tạo 2 ô làm 1 vùng điều kiện, thí dụ D1:D2. D1 = tên field = Số_Phiếu, D2 = PT*
- Data - Advanced Filter, đánh dấu Copy to another location, đánh dấu Unique record only, List Range là vùng cần lọc, Criteria Range là D1:D2, Copy to là nơi muốn chép đến (giả sử G3)
- Nhấn ok, sẽ được danh sách duy nhất các phiếu thu. Dù cho 1 phiếu thu nhiều dòng nó cũng chỉ hiện 1 dòng.
- Làm tương tự với phiếu chi: Criteria Range là E1:E2, E1 = Số_Phiếu, E2 = PC*, Copy to = H3

b. Dùng VBA:
- Record macro 2 lần filter trên. Gán code cho 1 nút nhấn hoặc gán cho sự kiện nào đó phù hợp như Worksheet_Activate
- Dùng VBA có thể sửa copy to là 1 cell trên 1 sheet khác
- Nếu biết cách sửa, có thể gộp 2 code thành 1, với 1 lựa chọn là "In phiếu thu" hoặc "In phiếu chi" và chọn bằng 2 Option Button. Nghĩa là chỉ cần 1 vùng điều kiện và 1 đích đến. Chon Option này thì vùng điều kiện là "PT*", chọn Option kia thì vùng điều kiện là "PC*"

2. Gán cho validation bằng Name:

a. Dùng công thức để tạo name.

- Đặt name cho 2 vùng đích mới advanced filter xong, nếu name động thì hay hơn, danh sách có bao nhiêu dòng sẽ chỉ vô bấy nhiêu. Tìm trên GPE công thức tạo name động (rất nhiều bài viết và rất nhiều file có name sẵn)
- Gán List cho validation bằng name vừa đặt.

b. Dùng VBA
- Nếu dùng VBA thì xác định được vùng dữ liệu sau khi advanced filter.
- Lấy địa chỉ vùng đó đặt name, gán name cho validation (có thể record macro để xài, khỏi viết)
- Cũng có thể gán list cho validation bằng chính địa chỉ vùng đó, khỏi name.

3. Vấn đề tự cập nhật thêm dòng khi thêm dữ liệu
- Nếu dùng advanced filter bằng tay, sẽ phải làm lại sau khi chỉnh sửa số liệu
- Nếu dùng VBA, sẽ tự cập nhật. Với điều kiện là
+ Xác định được vùng dữ liệu dùng để filter (xác định dòng cuối)
+ Xác định được vùng dữ liệu chép từ Filter (xác định dòng cuối)

4. Ghi chú:

Bạn phải tự làm tất cả các bước trên, vướng mắc chỗ nào thì hỏi riêng chỗ đó thôi. Tôi không muốn và không ai muốn làm hết cho bạn cả. Liên quan đến name động, lọc danh sách duy nhất, validation = list, = name, GPE đã có quá nhiều.
Mong rằng cả NHDK, cả ngh_khanh, cả iVBA, namkhanh.dangtran, nguoiay ... đều đọc bài này và làm thử ít nhất 1 lần, và tìm đọc bài có sẵn trên GPE, ít nhất 1 lần.
 
Lần chỉnh sửa cuối:
Gởi ndu
Dynamic Name và Dynamic validation của ndu hay, nhưng mình biết trước là dữ liệu của tác giả sẽ có dữ liệu trùng, thí dụ 1 phiếu chi PC001 có thể chi 2, 3, ... mục, nên sẽ lập lại PC001 2, 3, ... dòng trong list của validation. Lỗi này thậm chí rất nhiều người không biết, hoặc biết mà chấp nhận xài, cụ thể là trong 2 topic trích dẫn ở bài trên.
 
Gởi ndu
Dynamic Name và Dynamic validation của ndu hay, nhưng mình biết trước là dữ liệu của tác giả sẽ có dữ liệu trùng, thí dụ 1 phiếu chi PC001 có thể chi 2, 3, ... mục, nên sẽ lập lại PC001 2, 3, ... dòng trong list của validation. Lỗi này thậm chí rất nhiều người không biết, hoặc biết mà chấp nhận xài, cụ thể là trong 2 topic trích dẫn ở bài trên.
Ôi... em đâu có biết gì... trong trái ổi chứ
Tác giả yêu cầu sao em làm vậy... khi nào muốn... trùng hay... giun gì gì đó thì tính tiếp hen
Ẹc... Ẹc...
 
Ôi... em đâu có biết gì... trong trái ổi chứ
Tác giả yêu cầu sao em làm vậy... khi nào muốn... trùng hay... giun gì gì đó thì tính tiếp hen
Ẹc... Ẹc...
Vấn đề là tốn công làm xong mà không đúng ý tác giả, phải làm lại. Không chỉ tốn công không, 15 phút đó uống hết 1 ly cafe và 3 điếu thuốc, tất cả đều uổng phí.
Ở đây, tác giả không biết cách tạo dữ liệu mẫu, nên không thấy trùng. Hoặc không cho rằng việc loại bỏ trùng là quan trọng.
 
Câu hỏi này giống như lỗi trong topic nàytopic này
Trong topic đó có nói "hãy dùng name động" và nói ""lọc lấy danh sách duy nhất"
Vậy thì giải thích luôn 1 lần cho khỏi hỏi nữa, mặc dù những cái này trên diễn đàn có rất nhiều.

Trước tiên rất cám ơn anh ptm0412! Em không biết anh đang nói về ai ah?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Trước tiên rất cám ơn anh ptm0412! Em không biết anh đang nói về ai ah?

Bài viết của tôi rõ ràng quá chứ có chỗ nào mù mờ? Tôi nhận định cái gì là có liệt kê nick ra, nhận xét cái gì của topic nào cũng có để link mở lên là thấy tác giả, trích dẫn cái gì của bạn thì dùng từ "tác giả". Riêng câu này là tôi nói bạn (chapi.you), và tôi lập lại đây:

tác giả không biết cách tạo dữ liệu mẫu, nên không thấy trùng. Hoặc không cho rằng việc loại bỏ trùng là quan trọng.
Bạn đọc mà không hiểu câu nào tôi nói ai à?

Hơn nữa, việc tôi đang nói về nick chapi.you hay nick nào khác bất kỳ, có phải là vấn đề lớn không?

Tôi trả lời bài, hướng dẫn thực hiện bài, đâu phải cho 1 mình bạn, hay cho 10 nick? Tôi viết hướng dẫn thực hiện bài này cho 300 ngàn thành viên, ai có nhu cầu thì đọc. Nếu tôi có đưa ra lời nhận xét, cũng là muốn cho tất cả người đọc đừng mắc lỗi đó (trong đó nhất định là có cả bạn).

Tuy vậy, bạn hỏi thì tôi cũng trả lời:

Tình hình nói chung là những nick trên mắc những lỗi giống nhau, trong đó có cả bạn. Những nick kia đều có hỏi riêng tôi cả trên GPE và cả trong Yahoo Messenger. Làm những cái này liên quan đến rất nhiều kiến thức không chỉ VBA, mà cả name, công thức, validation, lọc danh sách duy nhất, advanced filter, ... Những kiến thức này trên GPE có rất nhiều, tôi đã phải lập đi lập lại với những nick đó như thế. Hôm nay tôi lập đi lập lại cả với bạn nữa đấy. Chẳng thà người mới học Excel, không biết AutoFilter là cái gì, không biết validation là cái gì, không biết kết hợp 2 hàm trở lên như thế nào, thì tôi không nói. Đây là những nick trả lời bài ào ào, viết code ầm ầm, mà không biết những cái căn bản nhất. Đó là những lỗ hổng khổng lồ trong kiến thức.

Những lỗi mà nếu hướng dẫn cụ thể từng bước, thì không có thời gian, nếu làm sẵn cho thì sẽ ỷ lại và không lấp được lỗ hổng kiến thức. Nhưng xem ra những nick đó không muốn đọc để lấp lỗ hổng kiến thức, mà chỉ muốn hỏi và nhờ giúp từ A đến Z thôi.

Nhân tiện bạn mở topic này, (chữ "tác giả" trong các bài trên là nói về tác giả topic, tức là bạn đấy), tôi muốn trả lời 1 lần cho tất cả các nick trên, và cả bạn nữa. Tôi đã trả lời bằng 1 quy trình gần như đủ hết cho bạn làm, chỉ thiếu đưa file lên nữa thôi.
 
Lần chỉnh sửa cuối:
Chào các anh chị, em đã tìm nhiều mục mà không thấy trang nào có phần giống yêu cầu của em. Nên em gởi bài tại đây nhờ các anh chị xem giúp nhé

Khi em bấm nút hộp validation ở vùng ô màu xanh E2:E5 list hiện ra chỉ có 8 dòng

ke A
ke B
ke C
ke D
ke E
ke F
ke G
ke H

Vậy em muốn khi bấm nút hộp validation list hiện ra đến 12 dòng

ke A
ke B
ke C
ke D
ke E
ke F
ke G
ke H
ke K
nho mat
tu I
tu L

thì phải chỉnh sửa ở menu nào hay ở đâu ạ ? để xem được đầy đủ danh sách bảng vitri mà không cần dùng nút kéo xuống.
 

File đính kèm

Chào các anh chị, em đã tìm nhiều mục mà không thấy trang nào có phần giống yêu cầu của em. Nên em gởi bài tại đây nhờ các anh chị xem giúp nhé

Khi em bấm nút hộp validation ở vùng ô màu xanh E2:E5 list hiện ra chỉ có 8 dòng

ke A
ke B
ke C
ke D
ke E
ke F
ke G
ke H

Vậy em muốn khi bấm nút hộp validation list hiện ra đến 12 dòng

ke A
ke B
ke C
ke D
ke E
ke F
ke G
ke H
ke K
nho mat
tu I
tu L

thì phải chỉnh sửa ở menu nào hay ở đâu ạ ? để xem được đầy đủ danh sách bảng vitri mà không cần dùng nút kéo xuống.
Bạn nhấn Data/Data Validation (với Excel 2010) sẽ thấy 1 name có tên là vị trí
Muốn chỉnh name này bạn nhấn Ctrl+F3 sẽ thấy và có thể chỉnh sửa được name này theo yêu cầu.
 
Chào các anh chị, em đã tìm nhiều mục mà không thấy trang nào có phần giống yêu cầu của em. Nên em gởi bài tại đây nhờ các anh chị xem giúp nhé

Khi em bấm nút hộp validation ở vùng ô màu xanh E2:E5 list hiện ra chỉ có 8 dòng


Vậy em muốn khi bấm nút hộp validation list hiện ra đến 12 dòng


thì phải chỉnh sửa ở menu nào hay ở đâu ạ ? để xem được đầy đủ danh sách bảng vitri mà không cần dùng nút kéo xuống.

Xin thưa là KHÔNG CÓ CÁCH NÀO cả!
Vì validation từ Excel 2003 đến tận bây giờ nó vẫn thế, chỉ hiện ra có 8 phần tử (cho dù list dài bao nhiêu cũng mặc kệ)
Muốn nhiều hơn thì bạn đừng dùng Validation nữa, chuyển sang dùng ComboBox chẳng hạn cho nó sung
 
Xin thưa là KHÔNG CÓ CÁCH NÀO cả!
Vì validation từ Excel 2003 đến tận bây giờ nó vẫn thế, chỉ hiện ra có 8 phần tử (cho dù list dài bao nhiêu cũng mặc kệ)
Muốn nhiều hơn thì bạn đừng dùng Validation nữa, chuyển sang dùng ComboBox chẳng hạn cho nó sung

Ôi! buồn nhỉ, dùng combobox rất hay em đã thấy, nhưng em thích dùng những công cụ có sẳng của excel hơn ở chổ những công cụ tự tạo cứ mổi lần dùng ta phải enable macro như vậy máy tính bị giảm mức an toàn, điều lo lắng của em có đúng không anh ?
 
Ôi! buồn nhỉ, dùng combobox rất hay em đã thấy, nhưng em thích dùng những công cụ có sẳng của excel hơn ở chổ những công cụ tự tạo cứ mổi lần dùng ta phải enable macro như vậy máy tính bị giảm mức an toàn, điều lo lắng của em có đúng không anh ?
Dùng Combobox thì mắc mớ gì phải enable macro? Gán list vào trong Listfillrange thì nó chạy ào ào rồi
 
Dùng Combobox thì mắc mớ gì phải enable macro? Gán list vào trong Listfillrange thì nó chạy ào ào rồi
Cám ơn bạn quanghai1969 nhắc mình, mình tự làm không xong rồi mình vẻ combobox ở E2 rồi khai báo input range: $B$2:$B$13 cell link : $E$2:$E$5 ,Drop down lines : 12 xong ok. Chỉ có ô E2 có combobox thôi còn ô E3,E4 ,E5 click không ra combobox, bạn vui lòng lấy file vidu làm giúp mình nhé.
 
Cám ơn bạn quanghai1969 nhắc mình, mình tự làm không xong rồi mình vẻ combobox ở E2 rồi khai báo input range: $B$2:$B$13 cell link : $E$2:$E$5 ,Drop down lines : 12 xong ok. Chỉ có ô E2 có combobox thôi còn ô E3,E4 ,E5 click không ra combobox, bạn vui lòng lấy file vidu làm giúp mình nhé.
Nó chỉ link đến 1 cell thôi bạn ạ. Muốn hơn thì dùng code thôi
 
Vậy là phải dùng code không còn cách khác nữa, buồn ghê. Cám ơn bạn quanghai1969 nhé.
 
Web KT

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

Back
Top Bottom