Tổng hợp từ sheet phụ sang sheet tổng (1 người xem)

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

Gà Công Nghệ

Thành viên mới
Tham gia
11/8/15
Bài viết
860
Được thích
456
Em xin nhờ anh chị trên diễn đàn giúp đỡ.
- Khi nhập hay xoá dữ liệu các sheet phụ thì sheet tổng sẽ cập nhật theo.
- Khi chọn năm sinh ô H4 (tô vàng) sheet tổng thì sẽ lọc các bé ở sheet tổng theo năm sinh.
- Số thứ tự ở sheet tổng sẽ tự cập nhật tổng học sinh, và khi lọc năm sinh học sinh thì số thứ tự cũng lọc theo.
 

File đính kèm

Em xin nhờ anh chị trên diễn đàn giúp đỡ.
- Khi nhập hay xoá dữ liệu các sheet phụ thì sheet tổng sẽ cập nhật theo.
- Khi chọn năm sinh ô H4 (tô vàng) sheet tổng thì sẽ lọc các bé ở sheet tổng theo năm sinh.
- Số thứ tự ở sheet tổng sẽ tự cập nhật tổng học sinh, và khi lọc năm sinh học sinh thì số thứ tự cũng lọc theo.
Bác thử xem, cách dùng:
- Nhập/xoá ở sheet lớp nào cũng được, quay sang sheet TONG là thấy đủ ngay.
- Ô H4 (ô vàng) có menu xổ xuống, chọn "Tất cả" hoặc chọn năm sinh muốn xem.
Danh sách năm tự sinh từ dữ liệu, bác không phải khai báo tay.
- STT tự đánh lại 1, 2, 3... theo đúng danh sách đang hiện; ngay dưới bảng có
dòng "Tổng số: n" chạy theo luôn.
 

File đính kèm

Bác thử xem, cách dùng:
- Nhập/xoá ở sheet lớp nào cũng được, quay sang sheet TONG là thấy đủ ngay.
- Ô H4 (ô vàng) có menu xổ xuống, chọn "Tất cả" hoặc chọn năm sinh muốn xem.
Danh sách năm tự sinh từ dữ liệu, bác không phải khai báo tay.
- STT tự đánh lại 1, 2, 3... theo đúng danh sách đang hiện; ngay dưới bảng có
dòng "Tổng số: n" chạy theo luôn.
Vâng à, cám ơn bạn nhiều
 
File này cũng có thể xài Power Query và Pivlot table để tổng hợp nhanh nè. Gửi bác thêm thông tin để làm.
 

File đính kèm

Bác thử xem, cách dùng:
- Nhập/xoá ở sheet lớp nào cũng được, quay sang sheet TONG là thấy đủ ngay.
- Ô H4 (ô vàng) có menu xổ xuống, chọn "Tất cả" hoặc chọn năm sinh muốn xem.
Danh sách năm tự sinh từ dữ liệu, bác không phải khai báo tay.
- STT tự đánh lại 1, 2, 3... theo đúng danh sách đang hiện; ngay dưới bảng có
dòng "Tổng số: n" chạy theo luôn.
Bạn cho mình hỏi thêm là sheet phụ mình xoá dữ liệu nhưng không có phục hồi lại được, vậy có cách nào khi xoá dữ liệu vẫn phục hồi lại không bạn.
Bài đã được tự động gộp:

File này cũng có thể xài Power Query và Pivlot table để tổng hợp nhanh nè. Gửi bác thêm thông tin để làm.
Cách này làm như thế nào vậy bạn, hướng dẫn mình với.
 
Bạn cho mình hỏi thêm là sheet phụ mình xoá dữ liệu nhưng không có phục hồi lại được, vậy có cách nào khi xoá dữ liệu vẫn phục hồi lại không bạn.
Bài đã được tự động gộp:


Cách này làm như thế nào vậy bạn, hướng dẫn mình với.
Bạn tải file về rồi kiểm tra nhé.
 

File đính kèm

Bạn tải file về rồi kiểm tra nhé.
Nhờ bạn sửa lại giùm mình file này với, sếp đổi ý đưa mẫu khác và bổ sung thêm các trường gộp lại. Dữ liệu khoảng 2000 học sinh khi tổng hợp ở sheet TONG. Ở Sheet phụ mình xóa hay sửa, khi qua sheet khác quay về sheet vừa xóa vẫn phục hồi lại được.
 

File đính kèm

Lần chỉnh sửa cuối:
Nhờ bạn sửa lại giùm mình file này với, sếp đổi ý đưa mẫu khác và bổ sung thêm các trường gộp lại. Dữ liệu khoảng 2000 học sinh khi tổng hợp ở sheet TONG. Ở Sheet phụ mình xóa hay sửa, khi qua sheet khác quay về sheet vừa xóa vẫn phục hồi lại được.
Bạn kiểm tra lại . . .
 

File đính kèm

@Chủ bài đăng:
File nhân sự của bạn còn thiếu 1 trường dữ liệu quan trọng; đó là [Mã NS]

Bạn có thể chiêm nghiệm hệ mã sau (thực tiển đã xài cho 1 trương khoảng 5 ngàn học sinh)

1788619046487.png
 
Góp vui cho diễn đàn thêm nhộn nhịp.
@Chủ bài đăng:
File nhân sự của bạn còn thiếu 1 trường dữ liệu quan trọng; đó là [Mã NS]

Bạn có thể chiêm nghiệm hệ mã sau (thực tiển đã xài cho 1 trương khoảng 5 ngàn học sinh)

View attachment 312570
Theo tôi là : Có lẽ cũng không cần thiết, bởi nếu học sinh đã được cập nhật trong Phần mềm QLGD của Bộ GD ĐT( Thường gọi là Phần mềm PCGD) thì đã có 1 mã số do phần mềm cấp-mã số này cũng không trùng cho toàn bộ người có tên trên phần mềm.

Nhờ bạn sửa lại giùm mình file này với, sếp đổi ý đưa mẫu khác và bổ sung thêm các trường gộp lại. Dữ liệu khoảng 2000 học sinh khi tổng hợp ở sheet TONG. Ở Sheet phụ mình xóa hay sửa, khi qua sheet khác quay về sheet vừa xóa vẫn phục hồi lại được.
bạn chủ thớt có thể tham khảo file dưới đây:
Tất cả các thay đổi của các sheet (trừ sh TongHop và Sh ThayDoi) đều được ghi lại (bản log) từ ngày giờ, tên sheet, địa chỉ ô bị thay đổi, Giá trị trước khi thay đổi, gía trị sau khi thay đổi. Như vậy từ bảng theo dõi thay đổi ở các sh này ta có thể khôi phục lại.
Trong file tôi đã đề xuất 2 lựa chọn khôi phục: Theo lần và theo ngày trên tất cả các Sh (trừ Sh Tong và ThayDoi
+ Theo lần: Bạn nhập vào ô S1 1 số nào đó: 1,2,3,... Thì số lần Undo sẽ đưa bạn trở lại giá trị của sh như lúc trước khi thay đổi bấy nhiêu lần.
+ Theo ngày: Bạn click vào ô T1 sẽ xuất hiện 1 List trong đó có liệt kê các ngày đã có sự thay đổi,==> bạn click chọn 1 dòng ===> code chạy và Undo dữ liệu lại đúng ngày trước đây(ngày Chọn) mà bạn đã sửa (xóa, thêm,...), có cả Undo và khôi phục lại đến ngày cuối cùng.
*) Lưu ý nếu bạn xóa dòng mà dòng này nằm giữa vùng dữ liệu thì khi Undo lại dữ liệu có thể sai. (tôi cũng chưa test trường hợp này).
+ Các Tiện ích chọn năm sinh ở ô S4/Sh TONG vẫn thực hiện bình thường ( Tất cả, 2020,2021,...,2026), xóa, thêm, hoặc sửa dữ liệu ở các sh Lớp thì sh TONG cũng được cập nhật theo.
+ Trong file đã làm cả hyperlink đến các sheet.
+ Việc thay đổi dữ liệu trong phạm vi từ dòng 7:50 thì cập nhật lại vào sheet Tong, ngoài phạm vi đó thì không cập nhật .Thực ra DS học sinh 1 lớp mầm non cúng không thể quá 50 cháu.
Hy vọng giúp được bạn phần nào.
P/S: Code trong file có 1 phần có được sự hỗ trợ của Copylot. Rất mong nếu có ai đó ghé xem góp ý thêm để hoàn thiện.
Còn đoạn code dùng để xóa bớt dữ liệu (ở sheet ThayDoi) sau 1 khoảng thời gian nhất định cho nhẹ file mà chán quá rồi. Thôi bỏ đi
 

File đính kèm

T
Bạn cho mình hỏi thêm là sheet phụ mình xoá dữ liệu nhưng không có phục hồi lại được, vậy có cách nào khi xoá dữ liệu vẫn phục hồi lại không bạn.
Bài đã được tự động gộp:


Cách này làm như thế nào vậy bạn, hướng dẫn mình với.
Trong 4rum mình có đầy đủ tài liệu, bài chia sẽ rất có tâm của các thành viên, admin. Bạn tìm và xem nhé. Mình cũng học trong này!
 
........Còn đoạn code dùng để xóa bớt dữ liệu (ở sheet ThayDoi) sau 1 khoảng thời gian nhất định cho nhẹ file mà chán quá rồi. Thôi bỏ đi
Hôm nay, nhân có lúc rỗi rãi, thêm vào cho nó đủ bộ, hy vọng biết đâu có ai cần.
Tôi cho rằng file này sẽ cần cho các thầy cô giáo nhất là các cô giáo mầm non phải phụ trách công tác PCGD.
Mở 1 module nữa và paste code này vào.

Mã:
Option Explicit

Sub XoaDuLieu()
Dim i&, Lr&, t&, DayNow As Date, Rng As Range
Dim Sh As Worksheet, ws As Worksheet
Set Sh = Sheets("ThayDoi")
Lr = Sh.Cells(Rows.Count, 2).End(xlUp).Row
DayNow = Date - 10  ' Điều chỉnh chỗ này để xóa số ngày truơc ngày  hiện tại
t = 0
For i = Lr To 4 Step -1
    If Sh.Range("B" & i) < DayNow Then
        If Rng Is Nothing Then
            Set Rng = Sh.Rows(i)
            t = t + 1
        Else
            Set Rng = Union(Rng, Sh.Rows(i))
            t = t + 1
        End If
    End If
Next i
If Not Rng Is Nothing Then Rng.Delete Shift:=xlUp
If t = 0 Then MsgBox " Khong có dong du liêu nao phu hop" Else MsgBox "Da xoa " & t & " dong du lieu cu truoc ngay hôm nay 10 ngày"
End Sub

và thêm đoạn này vào trong module của ThisWorkbook

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    XoaDuLieu
End Sub
 
Lần chỉnh sửa cuối:
Cách này làm như thế nào
Đọc và thực hành; Từ khóa QUERY hoặc M code...
https://www.giaiphapexcel.com/diend...-về-power-query-và-m-code-của-ptm0412.162699/
Áp dụng cho bài này:
Mã:
let
    Source = Excel.Workbook(File.Contents("C:\Users\Ms.Vy\Downloads\DS HS GPE.xlsx"), null, true),
    FilteredRows = Table.SelectRows(Source, each Text.StartsWith([Name], "N") or Text.StartsWith([Name], "M") or Text.StartsWith([Name], "C") or Text.StartsWith([Name], "L")),
    AddCol = Table.AddColumn(FilteredRows, "ColTrans", each let
a= [Data],
b= Table.PromoteHeaders(Table.Skip(a,5)),
lColName= {"Họ và tên","Nữ","Năm sinh","SĐT","GHI CHÚ","LỚP"},
c= Table.SelectColumns(b,lColName),
d= Table.SelectRows(c, each ([Họ và tên] <> null and  not Text.Contains([Họ và tên],"Giáo viên chủ nhiệm") and not Text.StartsWith([Họ và tên] ,"Tổng số:"))),
e= Table.AddColumn(d,"YYYY", each Text.End(Text.From([Năm sinh]),4)),
f= Table.TransformColumns(e,{}, each Text.From(_))
in
e),
    TongHop = Table.Combine(AddCol[ColTrans]),
    Type = Table.TransformColumns(TongHop, {}, Text.From)
in
    Type
 

File đính kèm

Đọc và thực hành; Từ khóa QUERY hoặc M code...
https://www.giaiphapexcel.com/diendan/threads/danh-sách-các-tài-liệu-và-bài-thực-hành-về-power-query-và-m-code-của-ptm0412.162699/
Áp dụng cho bài này:
Mã:
let
    Source = Excel.Workbook(File.Contents("C:\Users\Ms.Vy\Downloads\DS HS GPE.xlsx"), null, true),
    FilteredRows = Table.SelectRows(Source, each Text.StartsWith([Name], "N") or Text.StartsWith([Name], "M") or Text.StartsWith([Name], "C") or Text.StartsWith([Name], "L")),
    AddCol = Table.AddColumn(FilteredRows, "ColTrans", each let
a= [Data],
b= Table.PromoteHeaders(Table.Skip(a,5)),
lColName= {"Họ và tên","Nữ","Năm sinh","SĐT","GHI CHÚ","LỚP"},
c= Table.SelectColumns(b,lColName),
d= Table.SelectRows(c, each ([Họ và tên] <> null and  not Text.Contains([Họ và tên],"Giáo viên chủ nhiệm") and not Text.StartsWith([Họ và tên] ,"Tổng số:"))),
e= Table.AddColumn(d,"YYYY", each Text.End(Text.From([Năm sinh]),4)),
f= Table.TransformColumns(e,{}, each Text.From(_))
in
e),
    TongHop = Table.Combine(AddCol[ColTrans]),
    Type = Table.TransformColumns(TongHop, {}, Text.From)
in
    Type
Đây mới là Mcode của dân chuyên này. Còn em chỉ Xài UI, cái nào k thuận mắt thì chỉnh sửa lại một xíu thôi. Múa rìu qua mắt thợ là chính kkk
 
Hôm nay, nhân có lúc rỗi rãi, thêm vào cho nó đủ bộ, hy vọng biết đâu có ai cần.
Tôi cho rằng file này sẽ cần cho các thầy cô giáo nhất là các cô giáo mầm non phải phụ trách công tác PCGD.
Mở 1 module nữa và paste code này vào.

Mã:
Option Explicit

Sub XoaDuLieu()
Dim i&, Lr&, t&, DayNow As Date, Rng As Range
Dim Sh As Worksheet, ws As Worksheet
Set Sh = Sheets("ThayDoi")
Lr = Sh.Cells(Rows.Count, 2).End(xlUp).Row
DayNow = Date - 10  ' Điều chỉnh chỗ này để xóa số ngày truơc ngày  hiện tại
t = 0
For i = Lr To 4 Step -1
    If Sh.Range("B" & i) < DayNow Then
        If Rng Is Nothing Then
            Set Rng = Sh.Rows(i)
            t = t + 1
        Else
            Set Rng = Union(Rng, Sh.Rows(i))
            t = t + 1
        End If
    End If
Next i
If Not Rng Is Nothing Then Rng.Delete Shift:=xlUp
If t = 0 Then MsgBox " Khong có dong du liêu nao phu hop" Else MsgBox "Da xoa " & t & " dong du lieu cu truoc ngay hôm nay 10 ngày"
End Sub

và thêm đoạn này vào trong module của ThisWorkbook

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    XoaDuLieu
End Sub
Em có thêm nhiều cột (em tô màu xanh ở sheet phụ) anh có thể hỗ trợ code đến các cột tô màu xanh và sheet tổng lại giùm em với (sheet tổng em thêm cột không được). Em xin cám ơn.
 

File đính kèm

Em có thêm nhiều cột (em tô màu xanh ở sheet phụ) anh có thể hỗ trợ code đến các cột tô màu xanh và sheet tổng lại giùm em với (sheet tổng em thêm cột không được). Em xin cám ơn.
Trả bài:
Tôi đã thêm vào cho bạn:định dạng 2 cột số điện thoại ở Sh Tong là 10 số (có số 0 là số đầu tiện : 0########); Cố định ngăn để khi lăn chuột không cuộn mất các dòng tiêu đề.
Bài này có thể từ Sh TONG nhập ngược lại các sheet có tên ở cột LOP. (sẽ rất là cần thiết khi sửa chữa dữ liệu trên sh TONG mà không cần sửa lại trên sh có tên ở cột LOP)
 

File đính kèm

Trả bài:
Tôi đã thêm vào cho bạn:định dạng 2 cột số điện thoại ở Sh Tong là 10 số (có số 0 là số đầu tiện : 0########); Cố định ngăn để khi lăn chuột không cuộn mất các dòng tiêu đề.
Bài này có thể từ Sh TONG nhập ngược lại các sheet có tên ở cột LOP. (sẽ rất là cần thiết khi sửa chữa dữ liệu trên sh TONG mà không cần sửa lại trên sh có tên ở cột LOP)
Anh ơi, ở phần địa chỉ nhà đưa ra mẫu kêu tách ra, cột G6 bây giờ chèn thêm 2 cột rồi gộp lại (gộp 3 cột thành 1 cột, địa chỉ nhà tách ra gồm có: tổ, ấp, xã). Anh có thể hỗ trợ giùm em với anh.
 
Anh ơi, ở phần địa chỉ nhà đưa ra mẫu kêu tách ra, cột G6 bây giờ chèn thêm 2 cột rồi gộp lại (gộp 3 cột thành 1 cột, địa chỉ nhà tách ra gồm có: tổ, ấp, xã). Anh có thể hỗ trợ giùm em với anh.
Bạn gủi file mới sửa lại theo yêu cầu của bạn (còn code cũ) lên nhé để tôi sửa lại từ đó. file cũ trên máy tôi đã xóa rồi. Giải thích kết quả mong muốn càng tỷ mỉ càng tốt nhé.
Tôi vừa xem lại. Rất may là vẫn còn bản cũ .
Theo tôi hiểu thì các sheets LOP thì cột G (Chỗ ở Số nhà, tổ, ấp (khu phố), xã (phường, thị trấn), huyện, thị) được tách thành 3 cột gồm : Số nhà; Và tổ, ấp (khu phố); và xã (phường, thị trấn), huyện, thị). còn ở sheet Tổng thì vẫn giữ nguyên (tức là gộp 3 cột kia của các sheet LOP lại.
 
Lần chỉnh sửa cuối:
Bạn gủi file mới sửa lại theo yêu cầu của bạn (còn code cũ) lên nhé để tôi sửa lại từ đó. file cũ trên máy tôi đã xóa rồi. Giải thích kết quả mong muốn càng tỷ mỉ càng tốt nhé.
em có chèn thêm vài cột em tô màu vàng, em gửi anh xem giùm em với
 

File đính kèm

em có chèn thêm vài cột em tô màu vàng, em gửi anh xem giùm em với
Trong file bạn vừa gửi tôi thấy:
1/Các cột G đến I là nối thông ô không có tên của từng cột và G7:I7 thì nối thông ô (mergeCell) ở cả sh TONG và các sh LOP. do vậy code sẽ không hiểu được. Nếu G7:I7 ở các sh này có tên hoặc số thì sẽ làm được.
2/ Và thấy cũng hơi vô lý là cũ là Cột G (G6=Chỗ ở Số nhà, tổ, ấp (khu phố), xã (phường, thị trấn), huyện, thị) và mới là nối thông ô Từ G6:I6 và có giá trị như trên. đó là địa chỉ của học sinh, vậy các cột W:Z thì là địa chỉ cụ thể của ai? Phải chăng là địa chỉ của Cha(mẹ) hoặc người đỡ đầu? và nếu chỗ ở của Cha(mẹ).. thì nếu là trẻ trong độ tuổi mầm non thì có bao giờ chỗ ở của trẻ khác với chỗ ở của Cha (mẹ) hoặc người đỡ đầu? Theo tôi thì được biết thì chỉ có bé Tý con của chị Dậu (Tắt đèn-Ngô Tất Tố) phải đi ở cho Bá kiến mới có địa chỉ chỗ ở khác với chỗ ở của Cha (mẹ).
3/cột S=Số điện thoại; cột AD cũng là số diện thoại; và cột AH cũng là số điện thoại 1: Cho rằng Số Đt ở cột AD là số của Hiệu trưởng (bên cạnh -cột AC = Hiệu trưởng 1) , vậy cho hỏi : Số Đt ở cột S và cột AD là của phụ huynh hay của học sinh hay của giáo viên?
Nếu đả thông được vấn đề 1 nêu trên (đặt tên cho các cột ) thì sửa lại code cũng không còn khó nữa.
 
Lần chỉnh sửa cuối:
em có chèn thêm vài cột em tô màu vàng, em gửi anh xem giùm em với
Trả bài:
File của bạn không đồng nhất ở hàng tiêu đề. Có sheet có cột thừa, có sheet thì tiêu đề nằm ở dòng khác với các sheet khác. phần này tôi giữ nguyên.
Tôi chỉ Paste dòng tiêu đề của sheet TONG và dòng tiêu đề các Sh để đảm bảo đồng nhất.
Lưu ý bạn không được xóa hoặc thay đổi dòng thứ tự các cột (phía dưới dòng tiêu đề), nếu xóa code chạy sẽ sai kết quả.
 

File đính kèm

Trong file bạn vừa gửi tôi thấy:
1/Các cột G đến I là nối thông ô không có tên của từng cột và G7:I7 thì nối thông ô (mergeCell) ở cả sh TONG và các sh LOP. do vậy code sẽ không hiểu được. Nếu G7:I7 ở các sh này có tên hoặc số thì sẽ làm được.
2/ Và thấy cũng hơi vô lý là cũ là Cột G (G6=Chỗ ở Số nhà, tổ, ấp (khu phố), xã (phường, thị trấn), huyện, thị) và mới là nối thông ô Từ G6:I6 và có giá trị như trên. đó là địa chỉ của học sinh, vậy các cột W:Z thì là địa chỉ cụ thể của ai? Phải chăng là địa chỉ của Cha(mẹ) hoặc người đỡ đầu? và nếu chỗ ở của Cha(mẹ).. thì nếu là trẻ trong độ tuổi mầm non thì có bao giờ chỗ ở của trẻ khác với chỗ ở của Cha (mẹ) hoặc người đỡ đầu? Theo tôi thì được biết thì chỉ có bé Tý con của chị Dậu (Tắt đèn-Ngô Tất Tố) phải đi ở cho Bá kiến mới có địa chỉ chỗ ở khác với chỗ ở của Cha (mẹ).
3/cột S=Số điện thoại; cột AD cũng là số diện thoại; và cột AH cũng là số điện thoại 1: Cho rằng Số Đt ở cột AD là số của Hiệu trưởng (bên cạnh -cột AC = Hiệu trưởng 1) , vậy cho hỏi : Số Đt ở cột S và cột AD là của phụ huynh hay của học sinh hay của giáo viên?
Nếu đả thông được vấn đề 1 nêu trên (đặt tên cho các cột ) thì sửa lại code cũng không còn khó nữa.
Dạ, vâng. Em có sửa lại anh xem hộ giùm em với ạ. Cột Lớp code cũ cột P giờ thành cột T, dữ liệu cập nhật đến cột AD.
 

File đính kèm

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

Back
Top Bottom