Chọn và trích xuất dữ liệu theo Data Validation

Liên hệ QC

thedeath2078

Thành viên mới
Tham gia
14/3/08
Bài viết
38
Được thích
2
Chào diễn đàn.

Mình có 1 bài toán muốn giải quyết như sau:

dữ liệu gồm 3 cột 1, cột 2 và cột 3.

Ví dụ với cột 1 với thông số A gồm A1,A2...đến A10 ở cột 2 và A1.1,A1.2....đến A1.10 ở cột 3

Mình muốn sử dụng chức năng data validation để khi chọn 1 thông tin thì dữ liệu sẽ xuất hiện theo đúng thông tin trong cột 2 & Cột 3.

Mình ko dùng chức năng Filter vì muốn sử dụng Validation.

xem file đính kèm nhé

Nhờ các anh chị trong diễn đàn giúp giùm nhé.

Trong đây thấy có 1 bài cũng tương tự nhưng dữ liệu lọc ra cũng theo dạng Validation ko theo ý của bài toán của mình.

Nhờ giúp đỡ.

Cảm ơn nhiều ạh }}}}}
 

File đính kèm

Chào diễn đàn.

Mình có 1 bài toán muốn giải quyết như sau:

dữ liệu gồm 3 cột 1, cột 2 và cột 3.

Ví dụ với cột 1 với thông số A gồm A1,A2...đến A10 ở cột 2 và A1.1,A1.2....đến A1.10 ở cột 3

Mình muốn sử dụng chức năng data validation để khi chọn 1 thông tin thì dữ liệu sẽ xuất hiện theo đúng thông tin trong cột 2 & Cột 3.

Mình ko dùng chức năng Filter vì muốn sử dụng Validation.

xem file đính kèm nhé

Nhờ các anh chị trong diễn đàn giúp giùm nhé.

Trong đây thấy có 1 bài cũng tương tự nhưng dữ liệu lọc ra cũng theo dạng Validation ko theo ý của bài toán của mình.

Nhờ giúp đỡ.

Cảm ơn nhiều ạh }}}}}
Ý bạn như thế này phải không?
 

File đính kèm

Cảm ơn các anh chị trên diễn đàn. Mình đã học hỏi rất nhiều từ diễn đàn này

cảm ơn bạn viehoai. Cách giải của bạn đúng như ý mình cần làm.

1 lần nữa cảm ơn bạn nhé
 
cảm ơn bạn viehoai về cách giải trên, tuy nhiên có 1 điều là với cách trên thì nó chỉ đúng khi các thông tin là đều nhau, trong ví dụ trên thì dữ liệu của A,B&C đều cho lọc ra kết quả là 10 đơn vị.

thế nhưng trong trường hợp cơ sở dữ liệu là ko đều nhau thì khi ta chọn kết quả nó sẽ đưa ra kết quả ko chính xác như ví dụ trong file đính kèm.

trong ví dụ này, khi chọn A nó sẽ lọc ra 15 đơn vị, khi chọn B thì nó hiển thị kết quả vừa của B và vừa cả C, trong khi yêu cầu chọn dữ liệu nào thì nó chỉ ra dữ liệu đó

Vậy làm thế nào để khi ta chon A thì nó chỉ ra toàn bộ kết quả của A, chọn B thì ra toàn bộ kết quả của B, tương tư cũng như của C trong điều kiện là độ dài dữ liệu ko đều nhau.

xin cảm ơn
 

File đính kèm

cảm ơn bạn viehoai về cách giải trên, tuy nhiên có 1 điều là với cách trên thì nó chỉ đúng khi các thông tin là đều nhau, trong ví dụ trên thì dữ liệu của A,B&C đều cho lọc ra kết quả là 10 đơn vị.
thế nhưng trong trường hợp cơ sở dữ liệu là ko đều nhau thì khi ta chọn kết quả nó sẽ đưa ra kết quả ko chính xác như ví dụ trong file đính kèm.
trong ví dụ này, khi chọn A nó sẽ lọc ra 15 đơn vị, khi chọn B thì nó hiển thị kết quả vừa của B và vừa cả C, trong khi yêu cầu chọn dữ liệu nào thì nó chỉ ra dữ liệu đó
Vậy làm thế nào để khi ta chon A thì nó chỉ ra toàn bộ kết quả của A, chọn B thì ra toàn bộ kết quả của B, tương tư cũng như của C trong điều kiện là độ dài dữ liệu ko đều nhau.
xin cảm ơn
Bạn xem cách giải quyết này có được không nhé. Mình sử dụng một chút VBA:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Or Target.Address <> "$E$3" Then Exit Sub
    [G3:H1000].Clear
    [A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
End Sub
 

File đính kèm

Private Sub Worksheet_Change(ByVal Target As Range)
If
Target.Count > 1 Or Target.Address <> "$E$3" Then Exit Sub
[G3:H1000].Clear
[A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
End Sub

Cảm ơn bạn nhiều.

Bạn có thể giải thích cho mình hiểu đoạn code trên được không để mình hiểu và phát triển thêm. Ví dụ như mình muốn thêm các cột 4, cột 5,cột 6.....trong bảng dữ liệu, để khi lọc ra thì các cột này cũng hiển thị theo.

ví dụ đoạn code này: số 3 trong counta([A:A]), 3) có ý nghĩa gì vậy ạh [A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
End Sub

xin cảm ơn
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$E$3" Then Exit Sub
[G3:H1000].Clear
[A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
End Sub

Cảm ơn bạn nhiều.

Bạn có thể giải thích cho mình hiểu đoạn code trên được không để mình hiểu và phát triển thêm. Ví dụ như mình muốn thêm các cột 4, cột 5,cột 6.....trong bảng dữ liệu, để khi lọc ra thì các cột này cũng hiển thị theo.

ví dụ đoạn code này: số 3 trong counta([A:A]), 3) có ý nghĩa gì vậy ạh [A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
End Sub

xin cảm ơn
Có thể hiểu code này như sau:
Private Sub Worksheet_Change(ByVal Target As Range)
--> Code này sẽ chạy khi có sự thay đổi giá trị trên sheet.
If Target.Count > 1 Or Target.Address <> "$E$3" Then Exit Sub
--> Nếu vùng thay đổi giá trị có nhiều hơn 1 ô hoặc không phải là ô E3 thì không chạy code (thoát khỏi thủ tục)
[G3:H1000].Clear
--> Xóa dữ liệu và định dạng của vùng G3:H1000 để ghi dữ liệu mới
[A2].Resize(WorksheetFunction.CountA([A:A]), 3).AdvancedFilter xlFilterCopy, [E2:E3], [G2:H2]
--> Lọc dữ liệu ở vùng bên trái theo bảng tiêu chuẩn ở vùng E2:E3 và copy kết quả vào vùng G2:H2
End Sub
--> Kết thúc thủ tục.

Ở đây có chỗ này bạn chưa hiểu: [A2].Resize(WorksheetFunction.CountA([A:A]), 3). WorksheetFunction.CountA([A:A]) là đếm số ô có dữ liệu ở cột A, và đây cũng chính là số hàng trong vùng dữ liệu gốc. Như vậy [A2].Resize(WorksheetFunction.CountA([A:A]), 3) sẽ trả về một vùng xuất phát từ A2, mở rộng ra WorksheetFunction.CountA([A:A]) hàng và 3 cột --> Đây chính là toàn bộ vùng dữ liệu gốc.

Nếu muốn mở rộng bảng dữ liệu gốc thì bạn copy tiêu đề Cột 2, Cột 3, Cột 4,... sang vùng bắt đầu từ G2 và sửa lại [G2:H2] trong câu lệnh trên thành địa chỉ mới cho phù hợp. Đồng thời bạn sửa số 3 (chỗ bạn thắc mắc) thành số cột mới cho phù hợp (sửa lại thành 4, 5 hay 6...)
 
mình đã hiểu và cũng hơi nghi nghi về con số 3 chính là 3 hàng trong dữ liệu|||||.

vậy cho mình thắc mắc tiếp. Nếu mình ko trích xuất dữ liệu trong cùng sheet ma trích xuất dữ liệu sang sheet khác thì làm cách nào ạh.

ví dụ: sheet 1 la data, và sheet 2 là nơi để trích xuất dữ liệu.

mình là newbie nên mấy vụ VBA hơi bị gà mờ. Xin giúp đỡ ạh

xin cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
mình đã hiểu và cũng hơi nghi nghi về con số 3 chính là 3 hàng trong dữ liệu|||||.

vậy cho mình thắc mắc tiếp. Nếu mình ko trích xuất dữ liệu trong cùng sheet ma trích xuất dữ liệu sang sheet khác thì làm cách nào ạh.

ví dụ: sheet 1 la data, và sheet 2 là nơi để trích xuất dữ liệu.

mình là newbie nên mấy vụ VBA hơi bị gà mờ. Xin giúp đỡ ạh

xin cảm ơn
Bạn click chuột phải vào nhãn sheet Trich xuat du lieu, chọn View code và dán đoạn code này vào là được:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Or Target.Address <> "$A$3" Then Exit Sub
    [C3:D1000].Clear
    Sheet1.[A2].Resize(WorksheetFunction.CountA(Sheet1.[A:A]), 3).AdvancedFilter xlFilterCopy, [A2:A3], [C2:D2]
End Sub
 
Thay câu sau nó gọn hơn 1 chút

Sheet1.[A2].Resize(WorksheetFunction.CountA(Sheet1.[A:A]), 3).AdvancedFilter xlFilterCopy, [A2:A3], [C2:D2]

bằng:

Sheet1.[A2].CurrentRegion.AdvancedFilter xlFilterCopy, [A2:A3], [C2:D2]

 
Thay câu sau nó gọn hơn 1 chút

Sheet1.[A2].Resize(WorksheetFunction.CountA(Sheet1.[A:A]), 3).AdvancedFilter xlFilterCopy, [A2:A3], [C2:D2]

bằng:

Sheet1.[A2].CurrentRegion.AdvancedFilter xlFilterCopy, [A2:A3], [C2:D2]

Cái vụ CurrentRegion này em cũng đã dùng khá nhiều (VD như đây hoặc đây nè) nhưng trong trường hợp này em lại sợ Sheet1.[A2].CurrentRegion là cả vùng A2:E32 (dư 2 cột D, E), có thể làm sai kết quả lọc nên em không dùng. Bây giờ nghĩ lại mới thấy cho dù vùng đó là vùng nào thì mình vẫn chỉ trích xuất 2 cột (Cot 2 và Cot 3), miễn là hàng đầu tiên của Sheet1.[A2].CurrentRegion vẫn là hàng tiêu đề của bảng dữ liệu gốc. Đúng là đôi khi cứ như... đôi lúc vậy đó |||||||||||||||
 
Chào diễn đàn.

Mình có 1 bài toán muốn giải quyết như sau:

dữ liệu gồm 3 cột 1, cột 2 và cột 3.

Ví dụ với cột 1 với thông số A gồm A1,A2...đến A10 ở cột 2 và A1.1,A1.2....đến A1.10 ở cột 3

Mình muốn sử dụng chức năng data validation để khi chọn 1 thông tin thì dữ liệu sẽ xuất hiện theo đúng thông tin trong cột 2 & Cột 3.

Mình ko dùng chức năng Filter vì muốn sử dụng Validation.

xem file đính kèm nhé

Nhờ các anh chị trong diễn đàn giúp giùm nhé.

Trong đây thấy có 1 bài cũng tương tự nhưng dữ liệu lọc ra cũng theo dạng Validation ko theo ý của bài toán của mình.

Nhờ giúp đỡ.

Cảm ơn nhiều ạh }}}}}

Bạn tham khảo cách lọc dữ liệu động, sổ động mà không dùng VBA, nhưng dùng A-Tools.

http://bluesofts.net/forum/threads/124-So-ke-toan-SQL-Bo-so-ke-toan-tren-Excel-amp-A-Tools-Free-
 

File đính kèm

Web KT

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

Back
Top Bottom