Hỏi cách lấy dữ liệu từ sheet của các file chi tiết cho file Tổng hợp

  • Thread starter Thread starter lumata
  • Ngày gửi Ngày gửi
Liên hệ QC

lumata

Thành viên chính thức
Tham gia
6/4/15
Bài viết
88
Được thích
1
Nhờ mọi người giúp mình lấy dữ liệu từ các file con đưa vào từng sheet của file Tổng hợp mà không cần mở file con. Nhu cầu của mình như sau:
- Mình có 5 file "điểm danh thu tiền hàng tháng" của 5 lớp, mỗi file đều có sheet Thong Ke So Lieu và 1 file "Bảng Tổng Hợp Các Khoản Chi Toàn Trường - Năm học 2015-2016" có các sheet "THONG KE LOP MAM",... , "THONG KE LOP NT 2"
-
Giờ mình muốn lấy dữ liệu từ sheet Thong Ke So Lieu của cả 5 file điểm danh các lớp đưa vào các sheet Thong ke tương ứng của từng lớp trong file Tổng Hợp.
- Từ số liệu được đưa vào các sheet Thong Ke của từng lớp trên file tổng hợp, mình sẽ lấy dữ liệu vào các sheet tháng tương ứng T9,..,T8 (Cái này mình có thể tự làm)
Vì mình không rành VBA nên có cách nào làm thủ công không để lấy vùng dữ của sheet file này sang sheet file khác không? Nếu bắt buột phải dùng VBA thì mong mọi người hướng dẫn chi tiết giúp mình để mình có thể phát triển và áp dụng cho các nhu cầu sau của mình
ps: Mình có thể mở file Tổng Hợp mà không cẩn mở các file điểm danh con được không nhi?
Mình gửi file đính kèm. Mong mọi người giúp mình.
 

File đính kèm

Tên sheet bạn đặt dài quá. Không theo quy luật nên khó mà đưa vào vòng lặp(hoặc cho dễ phân biệt). Thôi thì chép các sub sau vào module. Bạn muốn tổng hợp vào lớp nào thì Alt+F8 chạy sub có tên tương ứng với lớp đó vậy.
Khi chạy code ở file tổng hợp, các file con không cần phải mở lên nha. Code chỉ lấy Value qua thôi

Note: Các file con và file tổng hợp để cùng 1 Folder (chứ không phải để riêng như trên file bạn đính kèm) nha!

Mã:
Sub LopMam()
Application.ScreenUpdating = False
Dim fName As String, Wb As Workbook, Sh As Worksheet
Sheet13.Range("A1:O1000").ClearContents
    fName = ThisWorkbook.Path & "\" & "LOP MAM - BANG DIEM DANH THU TIEN HANG THANG- NAM HOC 2015 -2016.xlsb"
        Set Wb = Application.Workbooks.Open(fName)
        Set Sh = Wb.Worksheets("THONG KE SO LIEU")
    Sheet13.Range("A1:O50").Value = Sh.Range("A1:O50").Value
        Wb.Close False
Application.ScreenUpdating = True
End Sub
Mã:
Sub LopChoi()
Application.ScreenUpdating = False
Dim fName As String, Wb As Workbook, Sh As Worksheet
Sheet14.Range("A1:O1000").ClearContents
    fName = ThisWorkbook.Path & "\" & "LOP CHOI - BANG DIEM DANH THU TIEN HANG THANG- NAM HOC 2015 -2016.xlsb"
        Set Wb = Application.Workbooks.Open(fName)
        Set Sh = Wb.Worksheets("THONG KE SO LIEU")
    Sheet14.Range("A1:O50").Value = Sh.Range("A1:O50").Value
        Wb.Close False
Application.ScreenUpdating = True
End Sub
Mã:
Sub LopLa()
Application.ScreenUpdating = False
Dim fName As String, Wb As Workbook, Sh As Worksheet
Sheet15.Range("A1:O1000").ClearContents
    fName = ThisWorkbook.Path & "\" & "LOP LA - BANG DIEM DANH THU TIEN HANG THANG- NAM HOC 2015 -2016.xlsb"
        Set Wb = Application.Workbooks.Open(fName)
        Set Sh = Wb.Worksheets("THONG KE SO LIEU")
    Sheet15.Range("A1:O50").Value = Sh.Range("A1:O50").Value
        Wb.Close False
Application.ScreenUpdating = True
End Sub
Mã:
Sub LopNT1()
Application.ScreenUpdating = False
Dim fName As String, Wb As Workbook, Sh As Worksheet
Sheet16.Range("A1:O1000").ClearContents
    fName = ThisWorkbook.Path & "\" & "LOP NHA TRE 1 - BANG DIEM DANH THU TIEN HANG THANG- NAM HOC 2015 -2016.xlsb"
        Set Wb = Application.Workbooks.Open(fName)
        Set Sh = Wb.Worksheets("THONG KE SO LIEU")
    Sheet16.Range("A1:O50").Value = Sh.Range("A1:O50").Value
        Wb.Close False
Application.ScreenUpdating = True
End Sub
Mã:
Sub LopNT2()
Application.ScreenUpdating = False
Dim fName As String, Wb As Workbook, Sh As Worksheet
Sheet17.Range("A1:O1000").ClearContents
    fName = ThisWorkbook.Path & "\" & "LOP NHA TRE 2 - BANG DIEM DANH THU TIEN HANG THANG- NAM HOC 2015 -2016.xlsb"
        Set Wb = Application.Workbooks.Open(fName)
        Set Sh = Wb.Worksheets("THONG KE SO LIEU")
    Sheet17.Range("A1:O50").Value = Sh.Range("A1:O50").Value
        Wb.Close False
Application.ScreenUpdating = True
End Sub

P/s: code kiểu này giống như dâng cơm tận miệng.......và bảo thôi m ăn lẹ đi (thấy nó chuối chuối sao ấy - thôi thà chắc ăn còn hơn vòng vo mà bị lỗi.)
Thực sự là khi hỏi bài này, mình có cảm giác là bạn sẽ lại giúp mình. Và quả thật là vậy
Và cũng thực sự một điều rằng đây là lần đầu tiên mình tập đưa code vào excel. Mình đã phải lên youtube để xem cách đưa code vào và mình đã làm theo được, file đã chạy ngon lành. Nhưng có một vấn đề là khi mình save và đóng file Tổng hợp lại, sau đó mở lên lại nhưng chạy code không được nữa. Mình vào xem thì bảng code của các sheet đã không còn. Không biết mình làm sai chỗ nào mà excel đã không lưu code của mình. Mong bạn chỉ giúp mình cách khắc phục.
Mình rất trân trọng và cảm ơn bạn đã giúp mình hết lòng
 
Sau khi đăng bài hỏi bạn cách khắc phục lỗi trên, mình đã tìm hiểu và đã khắc phục được, hóa ra là phải lưu bằng định dạng xlxb. Giờ đã chạy được ngon lành rồi. Cảm ơn bạn nhiều lắm
 
Bạn hpkhuong ơi cho mình hỏi xíu. Có một vấn đề mà giờ nhập liệu mình mới bị phát sinh. Đó là nếu có một trẻ nghỉ học thì mình sẽ xóa tên và cả hàng thông tin của học sinh đó ở sheet DS CHI TIET ==> thông tin của học sinh đó ở các sheet liên quan cũng sẽ phải xóa đi ==> sẽ xuất hiện dòng trống ở hầu hết các sheet ==> Số thứ tự sẽ nhảy không đúng và nếu không cẩn thận thì các dữ liệu liên quan đến điểm danh và tiền bạc của các trẻ sẽ bị xáo trộn.
- Mình đã thử làm thủ công xóa tên trẻ nghỉ ==> sau đó qua từng sheet liên quan để xóa dòng thông tin, dữ liệu điểm danh, thu tiền của trẻ đó ==> phải kéo lại số thứ tự cho đúng.
==> Nhưng có một vấn đề phát sinh: Nếu mình xóa mọi thông tin của trẻ đó (các khoản thu tiền, và đặc biệt là điểm danh có liên quan đến xuất ăn) thì sẽ bị mất số tiền đã thu hay xuất ăn của trẻ ==> từ đó bên thống kê sẽ bị lệch số liệu và sẽ không khớp với sổ sách mình đã in ra ==> khi trường kiểm tra lại thì dữ liệu tiền bạc các tháng cũ trên file sẽ bị lệch với báo cáo mình nộp hàng tháng

* Vậy mình có thể làm là nếu trẻ nghỉ học từ tháng nào thì mình chỉ cần nhập tháng nghỉ học của trẻ ở sheet DS CHI TIET, từ đó excel sẽ tự động:
- Ẩn tên trẻ đó ở các sheet, tự động sắp lại số thứ tự.(hoặc là chuyển mọi dữ liệu ở tất cả các sheet có liên quan đến trẻ đó xuống dưới cùng)
- Trẻ ngưng học tháng nào thì mọi dữ liệu điểm danh, tiền đã thu của trẻ đó chỉ bị ẩn đi (như vậy thì số liệu điểm danh, tiền thu hay suất ăn các tháng trẻ đã học vẫn khớp với bảng thống kê và giấy tờ sổ sách)
- Điểm danh, các khoản thu từ tháng trẻ nghỉ học trở đi sẽ được ngưng.
(Nếu bạn có phương án nào hay hơn thì chỉ giúp mình với)

* Một vấn đề nữa là giả sử nếu 2 tháng sau, trẻ đó xin đi học lại thì sẽ như thế nào. Thật sự mình nghĩ chưa ra cách xử lý trường hợp này.
(Mình gửi bạn file của một lớp để bạn xem)
ps: Mình copy ra 5 file điểm danh cho 5 lớp, không hiếu sao chỉ có file này dung lượng thấp chỉ có 329Kb, còn các file khác đều trên 3Mb (số liệu nhập vào gần như tương đương nhau)

Mong bạn giúp mình thêm lần này
 

File đính kèm

Lần chỉnh sửa cuối:
1. Vấn đề ở topic này đã được giải quyết. File #5 không liên quan chủ đề topic này (Nên dừng)
2. Vấn đề Phình file lên 3Mb thì tôi chịu, bạn làm cái gì trong đó sao tôi biết được.
3. Vấn đề bạn nêu ở trên (học trò nghỉ học, học lại) tôi đã biết từ đầu khi giúp bạn làm file. Nhưng tôi chỉ làm theo file bạn đang xây dựng........ Việc là của bạn nên tôi không vẻ ra thêm để làm cho bạn.

Nói túm lại, bạn chưa xây dựng được cái chuẩn thì code đi code lại mệt lắm,...........Nên tôi dừng ở đây.
Thực sự mà nói là file bạn hỗ trợ giúp mình là đã đạt được yêu cầu điểm danh, thu tiền với mình rồi, mình cảm thấy đã hoàn tất rồi nên bắt đầu áp dụng vào công việc. Mình cũng đã nghĩ đến vấn đề học sinh nghỉ học, lúc đó mình nghỉ đơn giản sẽ làm thủ công xóa dòng dữ liệu từng sheet của trẻ đó mà quên mất 1 điều là nếu xóa thì số liệu tổng sẽ bị sai lệch. Giờ phát sinh vấn đề này mà bỏ hết công sức và thành quả trước giờ thì mình thật sự mình rất buồn.
Mong bạn hãy giúp mình thêm một lần này nữa. Mình rất cần sự hướng dẫn và trợ giúp của bạn.
 
Web KT

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

Back
Top Bottom