Mọi người giúp đỡ: Tổng hợp danh sách học sinh nộp học phí theo từng lớp (1 người xem)

Liên hệ QC

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

sonthanh8484

Thành viên mới
Tham gia
19/7/12
Bài viết
10
Được thích
1
Quản lý thu học phí của học sinh. Gồm 2 sheet: sheet DSHS là thông tin học sinh đóng học phí. Những học sinh đã đóng số tiền là 200. Chưa đóng là 0. Yêu cầu: xuất ra danh sách học sinh đã đóng tiền học phí theo lớp như sheet: TONGHOP. Mỗi lần chọn một lớp theo danh sách Validation thì danh sách học sinh đã nộp học phí của lớp sẽ hiện ra. Mong mọi người giúp đỡ giải quyết. Cảm ơn nhiều.
 

File đính kèm

Bạn xem file đính kèm xem có dùng được không nhé
 

File đính kèm

Quản lý thu học phí của học sinh. Gồm 2 sheet: sheet DSHS là thông tin học sinh đóng học phí. Những học sinh đã đóng số tiền là 200. Chưa đóng là 0. Yêu cầu: xuất ra danh sách học sinh đã đóng tiền học phí theo lớp như sheet: TONGHOP. Mỗi lần chọn một lớp theo danh sách Validation thì danh sách học sinh đã nộp học phí của lớp sẽ hiện ra. Mong mọi người giúp đỡ giải quyết. Cảm ơn nhiều.
bạn xem có đứng ý bạn ko???

vùng điều kiện chọn nơi có tô màu vang chọn lớp xong nhấn phím CRTL+Shift +D nó sẽ tự động cho ra kết quả
 

File đính kèm

M
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, j%, n%: i = 1: j = 4
For n = 5 To 49
Range("B" & n) = "" : Range("C" & n) = "" : Range("D" & n) = ""
Next
Do: i = i + 1
If Sheets("DSHS").Range("E" & i) > 0 And Sheets("DSHS").Range("D" & i) = Range("E3") Then
j = j + 1
Range("B" & j) = Sheets("DSHS").Range("B" & i)
Range("C" & j) = Sheets("DSHS").Range("C" & i)
Range("D" & j) = Sheets("DSHS").Range("E" & i)
End If
Loop Until Trim(Sheets("DSHS").Range("D" & i)) = Empty
End Sub

Bài này mình áp dụng cách viết từ VB, tuy hơi lởm khởm một chút, nhưng chạy ngon.
 

File đính kèm

Lần chỉnh sửa cuối:
bạn xem có đứng ý bạn ko???

vùng điều kiện chọn nơi có tô màu vang chọn lớp xong nhấn phím CRTL+Shift +D nó sẽ tự động cho ra kết quả

Xin cảm ơn bạn đã đọc và giúp đỡ. Nhưng khi tải về thì nhấn bị lỗi. Bạn kiểm tra lại dùm. Bạn có thể giải thích giúp mình nguyên tắc hoạt động để mình áp dụng cho các trường hợp tương tự.
 
M
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, j%, n%: i = 1: j = 4
For n = 5 To 49
Range("B" & n) = "" : Range("C" & n) = "" : Range("D" & n) = ""
Next
Do: i = i + 1
If Sheets("DSHS").Range("E" & i) > 0 And Sheets("DSHS").Range("D" & i) = Range("E3") Then
j = j + 1
Range("B" & j) = Sheets("DSHS").Range("B" & i)
Range("C" & j) = Sheets("DSHS").Range("C" & i)
Range("D" & j) = Sheets("DSHS").Range("E" & i)
End If
Loop Until Trim(Sheets("DSHS").Range("D" & i)) = Empty
End Sub

Bài này mình áp dụng cách viết từ VB, tuy hơi lởm khởm một chút, nhưng chạy ngon.
Bạn ơi có thể giải thích code dùm mình không. Bạn tạo thành nút bấm luôn giúp mình. Cứ mỗi lần nhấn vào một ô nào là nó lại thống kê lại rất bất tiện.
 
Xin cảm ơn bạn đã đọc và giúp đỡ. Nhưng khi tải về thì nhấn bị lỗi. Bạn kiểm tra lại dùm. Bạn có thể giải thích giúp mình nguyên tắc hoạt động để mình áp dụng cho các trường hợp tương tự.

mình đã kiểm tra xài tốt, chắc do lỗi ngôn ngữ hệ thống nên khi qua mấy khác MACros bị lỗi

nếu bị lỗi, bạn có thể thực hiện thủ công như sau
chon DATa ->advanced filter họp thoại Advanced filter xuất hiện bạn chon COPY ANOTHER LOCATION
phần dưới có 3 ô địa chỉ
list range (chọn vùng dự liêu) mặt nhiên tự chọn
criteria rang (
chọn vùng điều kiện) tức vùng màu vàng mình tô [ cột lớp bạn chọn lớp cần lấy, Cột học phí nhập >0 là đã đống phí]
Copy to : (chọn địa chỉ L1) sau đó OK là được

bạn thử lại file sau
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn Tran Mui đã cung cấp cho bạn 1 file tham khảo tốt mà bạn!

Bạn xem file đính kèm xem có dùng được không nhé


Xin cảm ơn Trần Mùi nha;

Đây cũng là làm theo cách của tác giả này & có thêm chút gia vị; Xin mời bạn thử
 

File đính kèm

Bạn ơi có thể giải thích code dùm mình không. Bạn tạo thành nút bấm luôn giúp mình. Cứ mỗi lần nhấn vào một ô nào là nó lại thống kê lại rất bất tiện.
Mình đã sửa lại bài, nhấn vào CommandButton mới thi hành.

Private Sub CommandButton1_Click()
Dim i%, j%, n%: i = 1: j = 4


1.For n = 5 To 49
2.Range("B" & n) = "" : Range("C" & n) ="" : Range("D" & n) = ""
3.Next

Code từ dòng 1 đến dòng 3: Xoá dữ liệu cột A từ dòng 5 đến 49 trước khi điền dữ liệu mới để tránh thừa dữ liệu.

4.Do: i = i + 1
5.If Sheets("DSHS").Range("E" & i) > 0 And Sheets("DSHS").Range("D" & i) = Range("E3") Then
Dòng 5: Kiểm tra xem Sheets("DSHS") ở cột E từ dòng 2 đến hết danh sách xem có học sinh nào thuộc lớp trùng với tên lớp đã chọn không và học sinh này đã đóng học phí hay chưa.
6.j = j + 1
7.Range("B" & j) = Sheets("DSHS").Range("B" & i)
8.Range("C" & j) = Sheets("DSHS").Range("C" & i)
9.Range("D" & j) = Sheets("DSHS").Range("E" & i)
10.End If
Từ dòng 7 đến dòng 9: Điền dữ liệu tương ứng vào các cột B, C, E
11.Loop Until Trim(Sheets("DSHS").Range("D" & i)) = Empty
Dòng 11: Kết thúc việc thực hiện khi Sheets("DSHS") kết thúc không còn lớp nào nữa.
End Sub

Đơn giản không, code rất gọn, nhưng hiệu quả.
Untitled.jpg
 

File đính kèm

Lần chỉnh sửa cuối:
Quản lý thu học phí của học sinh. Gồm 2 sheet: sheet DSHS là thông tin học sinh đóng học phí. Những học sinh đã đóng số tiền là 200. Chưa đóng là 0. Yêu cầu: xuất ra danh sách học sinh đã đóng tiền học phí theo lớp như sheet: TONGHOP. Mỗi lần chọn một lớp theo danh sách Validation thì danh sách học sinh đã nộp học phí của lớp sẽ hiện ra. Mong mọi người giúp đỡ giải quyết. Cảm ơn nhiều.

Vẫn là cách dùng AdvancedFilter, chỉ chỉnh sửa code tý xíu. Mong được xem xét và góp ý thêm
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu mình thêm lớp 10a11 khi lọc 10a1 thì lớp 10a11 xuất hiện luôn
 
Mình đã sửa lại bài, nhấn vào CommandButton mới thi hành.

Private Sub CommandButton1_Click()
Dim i%, j%, n%: i = 1: j = 4


1.For n = 5 To 49
2.Range("B" & n) = "" : Range("C" & n) ="" : Range("D" & n) = ""
3.Next

Code từ dòng 1 đến dòng 3: Xoá dữ liệu cột A từ dòng 5 đến 49 trước khi điền dữ liệu mới để tránh thừa dữ liệu.

4.Do: i = i + 1
5.If Sheets("DSHS").Range("E" & i) > 0 And Sheets("DSHS").Range("D" & i) = Range("E3") Then
Dòng 5: Kiểm tra xem Sheets("DSHS") ở cột E từ dòng 2 đến hết danh sách xem có học sinh nào thuộc lớp trùng với tên lớp đã chọn không và học sinh này đã đóng học phí hay chưa.
6.j = j + 1
7.Range("B" & j) = Sheets("DSHS").Range("B" & i)
8.Range("C" & j) = Sheets("DSHS").Range("C" & i)
9.Range("D" & j) = Sheets("DSHS").Range("E" & i)
10.End If
Từ dòng 7 đến dòng 9: Điền dữ liệu tương ứng vào các cột B, C, E
11.Loop Until Trim(Sheets("DSHS").Range("D" & i)) = Empty
Dòng 11: Kết thúc việc thực hiện khi Sheets("DSHS") kết thúc không còn lớp nào nữa.
End Sub

Đơn giản không, code rất gọn, nhưng hiệu quả.
View attachment 88932
Cảm ơn bạn giúp đỡ. Đã chạy rất tốt nhưng mình không áp dụng được cho trường hợp khác. Mình không thể tạo ra được nút lệnh như bạn. Mình chỉ biết gán macro cho nút lệnh. Bạn có thể hướng dẫn chi tiết cách tạo nút lệnh cho mình học hỏi với. Mình có file quản lý thực tế có thể trao đổi và nhờ sự giúp đỡ của bạn qua mail được không. Chân thành cảm ơn bạn.
 
File đính kèm: Dùng AutoFilter thay cho AdvancedFilter đã sửa lỗi Lọc 10a1 với 10a11

Cảm ơn boyxin. Giúp mình giải thích dòng lệnh để mình áp dụng qua file khác được không. Bạn có thể cho mình mail để liên lạc được không. Mình đang có nhiều vấn đề cần bạn giúp. Trao đổi trên diễn đàn minh kô post được tập tin.
 
Cảm ơn boyxin. Giúp mình giải thích dòng lệnh để mình áp dụng qua file khác được không. Bạn có thể cho mình mail để liên lạc được không. Mình đang có nhiều vấn đề cần bạn giúp. Trao đổi trên diễn đàn minh kô post được tập tin.

Đây là toàn bộ nội dung CODE lọc bằng cách dùng AutoFilter trong File đính kèm. Bạn chưa hiểu dòng lệnh nào? (đừng nói là cần giải thích tất cả các dòng nhé)

Mã:
1 Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
3   If Not Intersect(Target, [E3]) Is Nothing Then
4   Application.ScreenUpdating = False
5   [A4].CurrentRegion.Offset(5).ClearContents
6   Dim Sh As Worksheet, Rng As Range
7   Set Sh = ThisWorkbook.Worksheets("DSHS")
8   Set Rng = Sh.[B2].CurrentRegion
9   Rng.AutoFilter Field:=4, Criteria1:=[E3].Value
10   Rng.AutoFilter Field:=5, Criteria1:="<>0"
11  Rng.Offset(, 1).Resize(, 2).SpecialCells(12).Copy Destination:=[B5]
12  Rng.Offset(, 4).Resize(, 1).SpecialCells(12).Copy Destination:=[D5]
13  Sh.AutoFilterMode = False
14  [A6].Resize([B5].End(xlDown).Row - 5) = Evaluate("ROW(a:a)")
15  With [B5].End(xlDown).Offset(2)
16      .Value = "TONG CONG"
17      .Offset(, 1) = "[ " & [B5].End(xlDown).Row - 5 & " ]"
18      .Offset(, 2) = Application.Sum([D6].Resize(.Row - 7))
19  End With
20  Application.ScreenUpdating = True
21  End If
End Sub
 
Bạn xem file đính kèm xem có dùng được không nhé
Tập tin đính kèm
·
clip_image001.gif
Thongke_HS_nophocphi.rar (128.0 KB, 58 lần tải)

Nay nhờ các bạn trên cơ sở của file này làm giúp cho việc thu các loại tiền đầu năm.Thanks!
 

File đính kèm

Web KT

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

Back
Top Bottom