Help cách tổng hợp dữ liệu vào một sheet (1 người xem)

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

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

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

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

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

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
 
Đâ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.

Cách của anh rất hay (đúng thứ em đang cần)
Nhưng nếu 1 file dư liệu nào đó có dòng trống thì file tổng hợp sẽ k lấy được những dòng phía sau dòng trống đó.Anh chỉnh code lại giúp em được không?
Thanks!
 
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 64472

Bạn tham khảo code trong File ở bài 23 của Topic sau.

http://www.giaiphapexcel.com/forum/...file-excel-vào-1-file-không-cần-mở-file/page3

Hoặc sử dụng File trên và sửa lại tiêu đề cột cho giống File của bạn.

Lưu ý:

Nếu sửa lại tiêu đề cột thì phải sửa tên tiêu đề trong code của nút Tổng hợp (Module1).
 
Sub TextBox1_Click()
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
Với đoạn code trên để gộp nhiều Sheet vào Sheet Sum nhưng không giữ được định dạng của những sheet kia, vậy muốn giữ nguyên định dạng thì làm thế nào? Cảm ơn!

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
[h=2]Tổng hợp các sheet của file excel qua mạng nội bộ[/h]em muốn tổng hợp các sheet của nhieu excel (sheet1 của worksheet1, sheet1 của worksheet2,...) qua mạng nội bộ hàng tháng, sau đó em sẽ tổng hợp lại thành 01 sheetsum từ nhiều sheet (sheet1, sheet2,...) đã tổng hợp)
cụ thể: mỗi bộ phận có 1 file excel gồm nhiều tháng (mỗi tháng là một sheet)
hàng tháng em sẽ tổng hợp tất các các sheet của tháng đó ở tất cả các bộ phận vào 01 file chung(file này gồm 01 sheet tổng hợp và sheet1 của tất cả các bộ phận) chỉ bằng 01 click vào nút tổng hợp.
đồng thời không cho xoá, chỉnh sửa sau khi em đã tổng hợp. ví dụ đến 5 giờ chiều ngày cuối tháng em sẽ tổng hợp, và sẽ khoa lại sau khi tổng hợp, khoa nào muốn chỉnh sửa thì liên hệ em mở ra cho chỉnh sửa.
anh chị giúp dùm em, em cảm ơn nhiều!!!
ví dụ:
 

File đính kèm

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
Nhờ Bác chỉnh giúp code ở file này em muốn chỉ định chỉ lấy dữ liệu của 2 sheet được chỉ tên (Ví dụ: chỉ lấy dữ liệu của sheet 1 và sheet2). Và nếu dữ liệu ở sheet 1 và sheet 2 giống nhau thì khi lấy sang sheet "Sum" chỉ lấy 1 dòng (Căn cứ vào 1 cột nào đó được chỉ định để so sánh dữ liệu giống nhau giữa sheet 1 hoặc 2)
 

File đính kèm

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

Back
Top Bottom