Câu hỏi này giống như lỗi trong
topic này và
topic 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

2. 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

2, 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.