PDA

View Full Version : Lọc dữ liệu từ một sheet qua các sheet khác



khaothibaclieu
22-09-08, 05:12 PM
Nhờ mọi người giúp đỡ. Mình muốn lọc từ sheet NhapDS sang các sheet Toán, Lý theo môn học sinh đăng kí dự thi nhưng mình không biết cách làm.
Ví dụ: Học sinh đăng kí thi Toán thì được lọc qua sheet Toán.
Nhờ mọi người hướng dẫn. Lọc bằng công thức cũng được vì dữ liệu của mình không lớn.
Ở sheet các môn Toán, Lý khi lọc xong thì phải dấu cột "Môn thi" đi.
Nếu dùng VBA thì càng tốt. Nếu được thì làm cho có vẻ chuyên nghiệp luôn là chỉ cần tạo một combo box để người dùng chỉ chọn hoặc có vào một ô nào đó ví dụ như "In Môn thi" thì chương trình chạy ra luôn danh sách của môn đó ở một sheet khác, không cần phải tạo nhiều sheet cho nhiều môn. Nếu vậy thì tên môn thi ở dòng Tiêu đề Danh sách thí sinh cũng phải được thể hiện sau khi đã dấu cột môn thi đi.
Quan trọng nhất là các bạn chỉ bảo luôn cách làm để sau này mình có thể giải quyết vấn đề tương tự.
Cám ơn trước.

Po_Pikachu
22-09-08, 05:42 PM
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$4" Then
[B8:K15].ClearContents
k = 8
For i = 9 To Sheet3.[B9].End(xlDown).Row
If Sheet3.Cells(i, 2) = [H4].Value Then
Range("B" & k & ":K" & k) = Sheet3.Range("B" & i & ":K" & i).Value
k = k + 1
End If
Next
End If
End Sub
Bạn xem file nha!
Thân.

ndu96081631
22-09-08, 05:58 PM
Bài toán này nếu làm nhanh nhất là dùng AutoFilter... Nếu dùng VBA cũng nên đi theo hướng này, tốc độ sẽ nhanh hơn rất nhiều so với vòng lập For
Tôi nhận xét rằng: Nếu phải trích ra từ 10 sheet trở lên và dử liệu bố trí phức tạp hơn thì mới nghĩ đến chuyện làm bằng VBA.. còn ở đây có 3 sheet: 3 lần Filter, 3 lần copy và 3 lần paste ---> đâu có lâu, lại vô cùng dể hiểu

khaothibaclieu
22-09-08, 07:04 PM
Bài toán này nếu làm nhanh nhất là dùng AutoFilter... Nếu dùng VBA cũng nên đi theo hướng này, tốc độ sẽ nhanh hơn rất nhiều so với vòng lập For
Tôi nhận xét rằng: Nếu phải trích ra từ 10 sheet trở lên và dử liệu bố trí phức tạp hơn thì mới nghĩ đến chuyện làm bằng VBA.. còn ở đây có 3 sheet: 3 lần Filter, 3 lần copy và 3 lần paste ---> đâu có lâu, lại vô cùng dể hiểu

Cám ơn bạn đã quan tâm. Tôi chỉ làm sheet ví dụ thôi. Dĩ nhiên là bạn thấy có nhiều môn thi đấy (hơn 10 sheet). Vấn đề là tôi muốn học hỏi thêm qua các ví dụ từ thực tiễn.

khaothibaclieu
22-09-08, 07:14 PM
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$4" Then
[B8:K15].ClearContents
k = 8
For i = 9 To Sheet3.[B9].End(xlDown).Row
If Sheet3.Cells(i, 2) = [H4].Value Then
Range("B" & k & ":K" & k) = Sheet3.Range("B" & i & ":K" & i).Value
k = k + 1
End If
Next
End If
End SubBạn xem file nha!
Thân.

Rất cám ơn bạn nhưng tại sao tôi đổi qua các môn khác không thấy có sự lọc dữ liệu vậy.

dohuuthuc
22-09-08, 07:37 PM
Có khi tên nhãn lạ , nó không hiểu; bạn chỉ đổi tên nhãn thôi , rồi chạy , ra đuơcaở shêt khác sẽ cho nó về đúng môn mà mình mong muốn.

Po_Pikachu
22-09-08, 07:38 PM
Bạn đổi tên ở ô màu vàng ấy! Còn các ô ở dưới thì chỉ hiển thị giá trị thôi!
Thân.

ndu96081631
22-09-08, 08:30 PM
Thử file này xem!
Mổi khi bạn chọn vào 1 sheet thì nó tự động lọc
Nếu sau này danh sách bạn dài thêm và có thêm những môn mới thì cứ việc thêm tên sheet trùng tên với tên môn thì... chắc chắn nó sẽ lọc chính xác
Bài này làm trên cơ sở Sort và AutoFilter... Bảo đãm tốc độ nhanh


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Rng As Range, TempRng As Range, TenSh As Worksheet
Application.ScreenUpdating = False
Set TenSh = ActiveSheet
If TenSh.Name <> "Huongdan" And TenSh.Name <> "Dinhnghia" And TenSh.Name <> "NhapDS" Then
Set TempRng = [A7].CurrentRegion
If TempRng.Rows.Count > 1 Then
TempRng.Offset(1).Resize(TempRng.Rows.Count - 1).Delete
End If
Set Rng = Sheets("NhapDS").[A9].CurrentRegion
Rng.Offset(2).Sort Key1:=Rng(3, 2), Order1:=1, Header:=xlNo
Rng.AutoFilter Field:=2, Criteria1:=TenSh.Name
Rng.Offset(2).SpecialCells(2, 23).Copy
[A8].Insert Shift:=xlDown
Sheets("NhapDS").ShowAllData
Rng.Offset(2).Sort Key1:=Rng(3, 1), Order1:=1, Header:=xlNo
End If
End Sub
Chú ý: Tôi đã sửa lại dử liệu của bạn 1 chút: Phần dử liệu và tiêu đề nằm trên cùng phải cách nhau ít nhất 1 dòng... Như thể sẽ dể dàng định vị dử liệu hơn
Bạn theo dỏi đề tài này:
http://www.giaiphapexcel.com/forum/showthread.php?t=13658&page=2
Gần giống đến 99% yêu cầu của bạn đấy

Devil_2008
03-10-08, 11:05 PM
- Vào sheet "In Danh Sach" --> chọn môn nào sẽ hiển thị danh sách hs thi môn đó

- Mình đã sửa lại cột thứ tự ở sheet "NhapDS" --> hiển thị TT tự động khi nhập dữ liệu (tối đa 200 hs)

Pass Unprotect Sheet : devilwoman


Download file :

http://www.box.net/rssdownload/202438406/Nhap%20lieu%20thi%20HSGL12.rar

ndcnbb
07-07-11, 03:55 PM
- Vào sheet "In Danh Sach" --> chọn môn nào sẽ hiển thị danh sách hs thi môn đó

- Mình đã sửa lại cột thứ tự ở sheet "NhapDS" --> hiển thị TT tự động khi nhập dữ liệu (tối đa 200 hs)

Pass Unprotect Sheet : devilwoman


Download file :

http://www.box.net/rssdownload/202438406/Nhap lieu thi HSGL12.rar

}}}}} Bạn cho minh code và cách làm như bạn được không?

Chỉ cần như là ở phần" In Danh Sach" có cái hàm lọc đó , để mình làm file quản lý của riêng mình được ko?
mail: cnt.ndc@gmail.com (ndc.cnt@gmail.com)

Pass Unprotect Sheet : devilwoman (ko đúng bạn)


thanks