Help cách tổng hợp dữ liệu vào một sheet

Liên hệ QC

dukhach

Thành viên mới
Tham gia
14/10/07
Bài viết
4
Được thích
5
Hi các bạn,

Mình là thành viên mới , có một vấn đề ở đây mình nhờ các cao thủ chỉ giúp :

(1) Mình có một cấu trúc dữ liệu cần giống nhau :
Ví dụ : STT / Tên / Địa chỉ / Ghi chú
(2) Mình chia cho nhiều người , nhập vào từng file / sheet khac nhau

(3) Bây giờ mình muốn tổng hợp lại thành 1 sheet duy nhất,
tổng hợp các sheet kia.
Minh không muốn copy & paste rất lâu.
Có ai có cao kiến thì chỉ giáo dùm nhé.

CÓ file thử luôn nè.... mong tin gấp đó**~**
 

File đính kèm

  • Test GPE.xls
    14 KB · Đọc: 229
Bạn cho hỏi: Thật ra file của bạn chỉ là ví dụ hay thực tế nó là như vậy? Ý tôi muốn biết về số lượng sheet đang có thực thế ấy, có đúng là 4 sheet ko?
Vì nếu như thực tế file của bạn khác với ví dụ này thì e rằng khi mọi người hướng dẩn xong bạn chưa chắc làm dc
Và việc tổng hợp là tổng hợp như thế nào? Là copy toàn bộ dử liệu hiện có trong các sheet rồi paste vào sheet SUM? Hay là thế nào?
ANH TUẤN
 
To: DuKhach
Bạn có thể nghiên cứu bài của Mod Tedaynui về tổng hợp các số liệu của các trường, cái này nên dùng VBA và quan trọng các file cùng format.
Sao mấy câu hỏi này mà lại hỏi vào phần bắt đầu.
Mod Tedaynui giúp bạn ấy nhé, còn không nghiên cứu bài của SoiBien trả lời cho bạn TuNguyen cũng như vậy.
 
Trời ,tối nay mới thấy có người trả lời, mình mới vào đây thui nên không dám qua các khu vực khác. Mình cũng có nghiên cứu các file trên diễn đàn nhưng chưa thấy giống nhu cầu mình cần.

@anhtuan1066 :
File của mình chỉ là ví dụ thui. Thực tế của nó là rất nhiều sheet.
Thực tế là nhiều file < do có nhiều user cùng nhập liệu >
Nhiệm vụ là copy toàn bộ dữ liệu của từng sheet & paste các sheet đó vào sheet SUM

@thunghi:
mình chưa biết dùng VBA nên mới hỏi như vậy. Các file / các sheet đều cùng dữ liệu / trường.

Cố gắng giúp mình nhé. Mong tin lắm lắm
 
Đợi mãi không thấy cao thủ nào làm, em làm tạm file này cho bác. Có thể mở rộng với nhiều sheet, nhiều dữ liệu. Trong phần chú thích em đã viết khá cụ thể.
Lâu không làm, tưởng là dễ không ngờ mất cả buổi.
Thân!
 

File đính kèm

  • Test GPE.xls
    34 KB · Đọc: 402
Bạn thử dùng code sau. Code này không giới hạn số sheet và dữ liệu. Yêu cầu trong tất cả các sheet ( trừ sheet sum) giữa tiêu đề và dữ liệu phải có 1 dòng trống (trong trường hợp này là dòng 2):
Option Explicit
Sub Tong_hop()
Dim sosheet As Integer, m As Integer, i As Integer, t As Integer
m = 0
Application.ScreenUpdating = False
sosheet = Sheets.Count
For i = 2 To sosheet
Sheets(i).Activate
Cells(3, 1).Select
Selection.CurrentRegion.Select
t = Selection.Rows.Count
Selection.Copy
Sheets("Sum").Select
Cells(3 + m, 1).Select
ActiveSheet.Paste
m = t + m
Next
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
 
VER 2.0.0 của code trên đây
Mã:
Option Explicit [b]
Sub Tong_hop()[/b]
 Dim SoSheet As Integer, iJ As Integer
 Application.ScreenUpdating = False:             SoSheet = Sheets.Count
For iJ = 2 To SoSheet
    Sheets(iJ).Activate:             Cells(2, 1).Select
    Selection.CurrentRegion.Select
    Selection.Copy Destination:=Sheets("Sum").Range("A" _
        & Sheets("Sum").Range("A65432").End(xlUp).Row + 1)
Next
Cells(1, 1).Select:                     Application.ScreenUpdating = True
[b]End Sub[/b]
 
-Cám ơn bác. VER 2.0.0 quả là gọn nhẹ và chuyên nghiệp.
Sheets(iJ).Activate: Cells(2, 1).Select
Dòng 2 phải chừa trống nếu không dòng tiêu đề sẽ bị copy luôn.
-Nên thêm: Sheets("Sum").Activate ở cuối để kích hoạt sheet này.
-VER 2.0.0 này chạy tốt nhưng cần đề phòng là ta gán vào 1 button, nếu lỡ bấm button 2 lần, nó sẽ copy 2 lần dữ liệu.
 
VER 3.0.0
Code:
Option Explicit
Sub Tong_hop()
Dim SoSheet As Integer, iJ As Integer
Application.ScreenUpdating = False
Sheets("Sum").Range("A2:F" & Sheets("Sum").Range("A65432").End(xlUp).Row).ClearContents
SoSheet = Sheets.Count
For iJ = 2 To SoSheet
.......Sheets(iJ).Activate: Cells(3, 1).Select 'dòng 2 để trống
.......Selection.CurrentRegion.Select
.......Selection.Copy Destination:=Sheets("Sum").Range("A" _
.........& Sheets("Sum").Range("A65432").End(xlUp).Row + 1)
Next
Sheets("Sum").Activate
Cells(1,1).Select
Application.ScreenUpdating = True
End Sub
 
Nhưng dukhach muốn là các sheet trên nằm trên từng file khác nhau trong cùng thư mục và cùng nằm trên sheet1 thì phải làm thế nào. Xin Thầy Voda làm tiếp luôn. Phải có động tác mở từng file nữa.
Cám ơn Thầy và Bác Sa.
 
Đây là code làm theo ý của dukhach:
-Các file cùng nằm trong 1 thư mục.
-Dữ liệu đều nằm trên sheet1 của các Workbooks.
-Dữ liệu tổng hợp vào sheet sum của file sum.xls.
Sub Tonghop()
Dim FolderName As String, wbName As String
Dim t As Integer, m As Integer
FolderName = "C:\Documents and Settings\Vo My Y\My Documents\"
wbName = Dir(FolderName & "\" & "*.xls")
Application.ScreenUpdating = False
While wbName <> ""
........If wbName <> "sum.xls" Then
........Workbooks.Open wbName
........Sheets(1).Activate: Cells(3, 1).Select 'dòng 2 để trống
........Selection.CurrentRegion.Select
........t = Selection.Rows.Count
........Selection.Copy
........Windows(wbName).Visible = False
........Windows("sum.xls").Activate
........Sheets("sum").Select
........Cells(3 + m, 1).Select
........ActiveSheet.Paste
........m = t + m
........Application.DisplayAlerts = False
........Workbooks(wbName).Close
........Cells(1, 1).Select
.....End If
........wbName = Dir
Wend
Application.ScreenUpdating = True
End Sub
 
SA_DQ đã viết:
Mã:
Option Explicit 
[B]Sub Tong_hop()[/B]
 Dim SoSheet As Integer, iJ As Integer
 Application.ScreenUpdating = False:             SoSheet = Sheets.Count
For iJ = 2 To SoSheet
    Sheets(iJ).Activate:             Cells(2, 1).Select
    Selection.CurrentRegion.Select
    Selection.Copy Destination:=Sheets("Sum").Range("A" _
        & Sheets("Sum").Range("A65432").End(xlUp).Row + 1)
Next
Cells(1, 1).Select:                     Application.ScreenUpdating = True
[B]End Sub[/B]

cảm ơn bác SA_DQ.Dọan code trên thật là hữu dụng, chỉ cần clik chuột một cái là tổng hợp xong.Tôi xin hỏi bác thêm một vấn đề nữa là " trên sheet tổng hợp (sheets"Sum") tôi có một list tên các sheet muốn tổng hợp. Vd như tôi chỉ muốn tổng hợp sheet 1,3,5 chẳng hạn thì phải làm sao?
mong các bạn giúp đỡ.Tks
 
trộn từ nhiều sheet ra 1 sheet

tôi có 1 mẫu phiếu nhập xuất tồn theo 2 cách
1 phiếu xuất kho theo hạn mức (đơn đặt hàng)
1 phiếu xuất kho cho các xưởng
cuối cùng ra 1 bảng kê tổng hợp của 2 phiếu trên
mong nhận được sự chỉ giúp
 
VER 3.0.0
Option Explicit
Sub Tong_hop()
Dim SoSheet As Integer, iJ As Integer
Application.ScreenUpdating = False
Sheets("Sum").Range("A2:F" & Sheets("Sum").Range("A65432").End(xlUp).Row).Clear Contents
SoSheet = Sheets.Count
For iJ = 2 To SoSheet
.......Sheets(iJ).Activate: Cells(3, 1).Select 'dòng 2 để trống
.......Selection.CurrentRegion.Select
.......Selection.Copy Destination:=Sheets("Sum").Range("A" _
.........& Sheets("Sum").Range("A65432").End(xlUp).Row + 1)
Next
Sheets("Sum").Activate
Cells(1,1).Select
Application.ScreenUpdating = True
End Sub Code:

Chào Bác Voda,
Nhưng nếu dữ liệu có 1 dòng trống (blank) thì việc tổng hợp sẽ bị thiếu những row phía dưới dòng trống này. Mong Bác chỉnh lại giúp. Cám ơn nhiều.
 
Nếu không copy, paste không biết có nhanh hơn không ta?
PHP:
Option Explicit
Sub Tong_hop()
  Dim Sh As Worksheet
  Sheets("Sum").Range("A1").CurrentRegion.Offset(1).Clear
  For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "Sum" Then
      With Sh.Range("A1").CurrentRegion.Offset(1)
       Sheets("Sum").[A65536].End(xlUp).Offset(1).Resize(.Rows.Count, .Columns.Count).Value = .Value
      End With
    End If
  Next Sh
End Sub
 

File đính kèm

  • TongHop_01.xls
    33 KB · Đọc: 489
Nguyên văn bởi quitv
Nhưng nếu dữ liệu có 1 dòng trống (blank) thì việc tổng hợp sẽ bị thiếu những row phía dưới dòng trống này
-Dùng CurrentRegion với điều kiện dữ liệu phải đều. Nếu bạn không muốn xóa dòng trống thì chỉnh code lại như sau:
Mã:
Sub Tong_hop()
Dim SoSheet As Integer, iJ As Integer, iRow As Long
Application.ScreenUpdating = False
Sheets("Sum").Range("A2:F" & Sheets("Sum").Range("A65432").End(xlUp).Row).Clear
SoSheet = Sheets.Count
     For iJ = 2 To SoSheet
           Sheets(iJ).Activate  'dòng 2 d? tr?ng
           iRow = Range("A65432").End(xlUp).Row
           Cells(3, 1).CurrentRegion.Resize(iRow - 2).Select
           Selection.Copy Destination:=Sheets("Sum").Range("A" _
                     & Sheets("Sum").Range("A65432").End(xlUp).Row + 1)
     Next
Sheets("Sum").Activate
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
-Đoạn code trên còn dài. Nếu muốn gọn dùng code của ndu.
-Với ndu:Mình nghĩ dùng copy-paste sẽ chậm hơn vì copy- paste giữ nguyên định dạng của dữ liệu, kể cả công thức.
 
Cho em hỏi nếu muốn chép dữ liệu từ hàng a7 trở đi vào sheet sum thì phải sửa code trên như thế nào
 
Bác ơi giúp em với!

Em có một bảng lương và phiếu lương! Bây giờ không biết làm thế nào để dữ liệu của bảng lương vào được phiếu lương! bác giúp em nhé bác nhé! Em xin chân thành cảm ơn!
 
Lần chỉnh sửa cuối:
Nhờ các bác thông thái giúp đỡ ạ. Em có 9 file như thế này. Format giống nhau. Nhờ các bác giúp ghép lại thành 1 sheet thôi được không ạ. Cám ơn các bác rất nhiều.View attachment GHEP FILE.zip
 
Web KT

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

Back
Top Bottom