Tổng hợp dữ liệu từ nhiều sheet thành một sheet

  • Thread starter lexthien
  • Ngày gửi
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear lexthien,
-------------
Trong tập tin gửi kèm của mình có minh hoạ việc này, tiếc là nó bị lỗi, nay thấy vấn đề của bãn vẫn chưa được giải quyết, tôi xin đưa ra cách giải của tôi như thế này:
Private Sub CopyTo()
Dim lngRowCount As Long ' Biến đếm số dòng sau mỗi lần copy
Dim shCHITIET As Worksheet,shTONGHOP As Worksheet
Set shTONGHOP = Worksheets("TONGHOP")
shTONGHOP.Cells.ClearContents
lngRowCount = 9
For Each shCHITIET In ThisWorkbook.Worksheets
If Not shCHITIET Is shTONGHOP Then
shCHITIET.UsedRange.Copy
shTONGHOP.Range("A" & lngRowCount).PasteSpecial
lngRowCount = lngRowCount + shCHITIET.UsedRange.Rows.Count
End If
Next
End Sub

Bạn có thể điều chỉnh lngRowCount cho phù hợp với cấu trúc dữ liệu của bạn (có nên dữ lại tiêu đề của các shCHITIET hay không)
Chúc bạn thành công!
 
Khóa học Quản trị dòng tiền
L

lexthien

Trung cấp
14/10/05
77
1
8
TPHCM
Rất cảm ơn bạn Đào Việt Cường & Nguyên Bình đã giúp đỡ. Và cho hỏi một chút:
1/ Anh adam có đoạn code copy giá trị của 1 cell từ file đang đóng như sau:
Option Explicit
Sub thu1()
MsgBox ExecuteExcel4Macro("'E:\[datasource.xls]Sheet1'!R1C1")
End Sub
Sub thu2()
ActiveCell.Value = ExecuteExcel4Macro("'E:\[datasource.xls]Sheet1'!R1C1")
End Sub
Sub thu3()
Dim Pathfile As String
Pathfile = "'E:\[datasource.xls]Sheet1'!"
ActiveCell.Value = ExecuteExcel4Macro(Pathfile & "R1C1")
End Sub
như vậy có cách nào đổi đoạn code lại cho phép copy paste special values dữ liệu của 1 sheet trong 1 file đang đóng không?
2/ Nếu câu hỏi 1 làm được thì xin hỏi cho copy paste special values dữ liệu của 1 sheet trong nhiều file đang đóng vào cùng 1 file được không?
vd:
+ có 12 file, trong mỗi file có 10 sheet
+ lấy dữ liệu 1 sheet trong 12 file copy paste special values vào 1 file tổng hợp.
Xin các cao thủ giành ít thời gian giúp với.
 
Q

quochung2005

Trung cấp
20/10/05
99
0
16
42
DA NANG
sao file đào việt cường up file loan lên mà sao lại mở không được bạn có thể up lên lại dược kô để cho mọi người học hỏi, thân
 
M

mysterious_girl

Guest
quochung2005 nói:
sao file đào việt cường up file loan lên mà sao lại mở không được bạn có thể up lên lại dược kô để cho mọi người học hỏi, thân
Hì,bạn ơi anh ấy đang bị virut tấn công. Bạn đợi xem nhé. Hoặc bạn gửi mail cho ấy qua địa chỉ: daovietcuong_cpa@yahoo.com.
 
Q

quochung2005

Trung cấp
20/10/05
99
0
16
42
DA NANG
chào các bác!
trong diễn đàn có rất nhiều bạn đề cập đến nối nhiều sheet lại 1 sheet, bác nào là dân IT thì có thể giúp mọi người trong công việc nối n sheet thành 1 sheet, trong diễn đàn có bạn có 1 ý tưởng rất hay có nghĩa mình nhập 1 sheet là 1 chứng từ cùng loại , VD: phiếu nhập , PX, PT, PC ..., sau đó lập 1 sheet trung gian và chuyển tất cả các sheet nầy qua sheet trung gian và từ đó làm cho việc truy xuất dữ liêu được dễ dàng hơn, vậy có cao thủ nào có thể giúp các bạn trong trường hợp nói trên không ( phải dùng visual basic rùi)
thân
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Nếu biết VBA thì nối sheet không khó, nhưng vì cấu trúc các sheet trong file là khác nhau và các CSDL là rất khác nhau... Do đó, chỉ có thể tham khảo qua 1 vài ví dụ để tự coding cho mình.
Thật ra, nếu người có kinh nghiệm về Excel thì khi thiết lập file, họ đã tính đến chuyện tập trung dữ liệu thành 1 CSDL rồi, không phải vất vả nối các sheet lại.
Nếu muốn nhập liệu trên các nhật ký ở các sheet, sau đó tập hợp lại thành 1 sheet, chỉ có cách Copy - Paste - Sort thôi.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear all,
--------
Tôi tán thành với ý kiến của bác Adam. Nhưng trước khi để có một CSDL tối ưu đòi hỏi phải trải qua một quá trình "hấp thu" kinh nghiệm.
Do vậy viết một đoạn chương trình nhằm giải quyết yêu cầu tương tự như yêu cầu của lexthien đôi khi là cũng giúp cho việc sửa lại những sai lầm tốt hơn. Trong bài #18 của chủ đề này mình cố gắng đưa lên file minh họa công việc gộp dữ liệu mà mình đã làm giúp một người bạn. Và trong bài #21 là đoạn mã lệnh đơn giản áp dụng chung cho mọi trường hợp.
Theo đề nghị, để các bạn thấy cách thức làm việc cụ thể của thủ tục này, hôm nay mình xin đưa lên đây minh họa tập tin của bạn lexthien (đã sửa đổi số liệu đảm bảo an toàn số liệu cho bạn lexthien)
Xin nhấn mạnh rằng, thủ tục này chỉ nhằm chữa cháy hoặc khi mà công việc của các bạn là bắt buộc phải gộp từ nhiều bảng thành một. Giải pháp tối ưu nhất - theo mình - vẫn là CSDL tập trung sau đó sử dụng chức năng lọc để có báo cáo!
Chúc các bạn thành công!
 
Sửa lần cuối:
Q

quochung2005

Trung cấp
20/10/05
99
0
16
42
DA NANG
dữ liệu tối ưu

chào các bạn!
Mình đọc trên diễn đàn, các bạn hay đề cập đến việc nối các sheet lại thành 1 sheet. Ở đây không phải là các bạn không biết cách bố trí dữ liệu, nhưng khi nhập chung tất cả các dữ liệu vào 1 sheet thì làm cho nó chạy rất nặng nên ở đây đa số những người làm một sheet riêng lẽ và sau đó gộp lại thành 1 sheet để cho việc truy xuất dữ liệu rất dễ dàng.
VD1:
khi nhập 1 sheet duy nhất gọi là (NKC)
và tất các các chứng từ như PN, PX, PT,PC điều tổng hợp vào sheet("NKC")
và làm số hàng trong Sheet sẽ nhiều hơn dẫn đến chương trình chạy rất nặng
VD2: Nuế mình làm riêng lẽ từng sheet và sau đó gộp lại thành 1 sheet thì nó sẽ chạy nhẹ hơn
Như: Phiếu nhập là 1 sheet
Phiếu xuất là 1 sheet .....PT, PC
sheet( tổng hợp) để tổng hợp tất cả các sheet đó lại làm cho việc truy xuất dữ liệu nhanh hơn và hay hơn
không biết các bạn trên diễn đàn có đồng ý với I kô?
nuế có bác nào có thể dùng VBE để chuyển nhiều sheet thành 1 sheet ( Tổng hợp) thì giúp
 
W

workman

Guest
22/7/05
372
2
0
52
Ho Chi Minh
Với máy tính như hiện nay thì hình như không khác nhau lắm.

Riêng bản thân tôi không nghĩ là gộp nhiều sheet (dưới dạng database) lại chạy chậm hơn mở hàng chục sheet khác nhau (chưa kiểm chứng, chỉ là suy luận logic thôi, hì hì), mà phải là ngược lại mới đúng.
 
Q

quochung2005

Trung cấp
20/10/05
99
0
16
42
DA NANG
chào các anh chị
mình có file excel mình muốn gộp tất cả các sheet PN, PX, PT, PC lại thành 1 sheet mà mình không biết cách làm mong các bạn chỉ giúp mình, nếu copy theo PP thủ công thì ok những ở đây mình muốn tạo 1 lệnh viết bằng VBA để làm cho nó tiện mong các bạn giúp cho mình đính kèm file sau
 

Đính kèm

  • gop du lieu.rar
    6.3 KB · Lượt xem: 1,738
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
569
100
43
66
HCM city
Bạn dùng macro sau

Option Explicit
Sub TongHop()
Dim WSh As Worksheet

Sheets("TongHop").Cells.Clear
Sheets("TongHop").Range("A4:AA5") = Sheets("PN").Range("A4:AA5").Value
For Each WSh In ThisWorkbook.Worksheets
If WSh.Name <> "TongHop" Then
WSh.[A5].CurrentRegion.Offset(2).Copy Destination:= _
Sheets("TongHop").Range("A" & [B65500].End(xlUp).Row + 1)
End If
Next WSh
End Sub

Chú ý: Mình đã đổi tên sheets 'Bang tong hop' rồi
Có hai lý do:
* Tên Sheet không nên có khoảng trắng (chủ yếu)
* Ngắn gọn nhưng không mất đi lượng thông tin mà nó chuyển tải

Chúc vui & thành đạt!:friend:
 
Sửa lần cuối:
Q

quochung2005

Trung cấp
20/10/05
99
0
16
42
DA NANG
cho mình hỏi thêm một tí nữa mình muốn gộp dữ liệu thành 1 sheet tong hop minh chi quy dinh gộp bao nhiêu sheet thôi, giả sử mình có 12 sheets mà mình muốn gộp 4 sheet thôi,mong bạn giúp mình đang lam file kế toán mình rất cần cám ơn bạn
 
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Thì lúc đó dòng lệnh:
If WSh.Name <> "TongHop" Then
WSh.[A5].CurrentRegion.Offset(2).Copy Destination:= _
Sheets("TongHop").Range("A" & [B65500].End(xlUp).Row + 1)
End If
sẽ được được đổi thành
If WSh.Name = "T1" Or WSh.Name = "T2" Or WSh.Name = "T3" Or WSh.Name = "T4" Then
Sh.[A5].CurrentRegion.Offset(2).Copy Destination:= _
Sheets("TongHop").Range("A" & [B65500].End(xlUp).Row + 1)
End If

Ở đây, T(i) là các Sheet có tên tương ứng cần chép vô 'TongHop':error:
 
V

VanHao

Trung cấp
18/12/05
70
4
6
Go Vap
Vậy nếu như mình có đến 80 sheet thi làm thế nào ?
 
L

leeyoungsoi

Sơ cấp
7/9/10
6
0
0
HCM
Hi các bác,
Em đang gặp một vấn đề trong Excel là em muốn kết hợp dữ liệu từ 3 sheet khác nhau sang một sheet khác bằng công thức. Có bác nào biết cách xin chỉ giáo giúp. Mấy bác xem file Excel nhé (sheet kết quả là kết quả em mong muốn được như thế nhưng chỉ được dùng hàm trong Excel thôi nhé). Mong mấy bác giúp em cái này.
 

Đính kèm

  • kethopdulieu.xls
    20 KB · Lượt xem: 552
A

atmt17

Trung cấp
26/9/08
70
1
6
Đồng Nai
Hi các bác,
Em đang gặp một vấn đề trong Excel là em muốn kết hợp dữ liệu từ 3 sheet khác nhau sang một sheet khác bằng công thức. Có bác nào biết cách xin chỉ giáo giúp. Mấy bác xem file Excel nhé (sheet kết quả là kết quả em mong muốn được như thế nhưng chỉ được dùng hàm trong Excel thôi nhé). Mong mấy bác giúp em cái này.
Làm Excel từ đó đến giờ mới thấy có kiểu kết hợp kỳ cục thế này.
Làm chẳng phải là không được, nhưng mà... Hic... nó chẳng ra dáng Excel tí nào, cứ như là xử lý văn bản trong Word
 
L

leeyoungsoi

Sơ cấp
7/9/10
6
0
0
HCM
Thực ra thì nó cũng có lý do của nó đấy bác. Nếu bác làm được nhờ bác giúp em một phát. À bác đừng dùng Macro hay VBA gì nhé. Thanks bác.
 
B

BUIHOANGANH87

Trung cấp
18/4/07
57
0
6
37
LONG AN
Tớ đề nghị nhé, bác copy và paste cho gọn bác nhé
 
L

leeyoungsoi

Sơ cấp
7/9/10
6
0
0
HCM
Bác mà đề nghị như thế thì chết em :( . Chẳng qua là body sẽ là những field được lấy từ một hệ cơ sở dữ liệu. nên tờ mới đẩy nó ra một sheet như thế
 
L

leeyoungsoi

Sơ cấp
7/9/10
6
0
0
HCM
Thì đang xài phần mềm excel đó bác. Chỉ là connect vào database thông qua excel để báo cáo đó mà.
 

Xem nhiều

Webketoan Zalo OA