Copy dữ liệu từ các sheet nhanh nhất

Loan1989

Member
Hội viên mới
Giả sử mình có một fiel exel gồm 10 sheet.Các bạn có biết cách nảo để tạo một sheet gồm dữ liệu từ 10 sheet này mà không dùng lệnh copy từng sheet không"?
Thanks
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giả sử mình có một fiel exel gồm 10 sheet.Các bạn có biết cách nảo để tạo một sheet gồm dữ liệu từ 10 sheet này mà không dùng lệnh copy từng sheet không"?
Thanks

Nếu tất cả các sheet đều có cấu trúc tương tự nhau thì có thể dùng công cụ Consolidate để "gộp" dữ liệu các bảng lại. Vừa xem chi tiết được, vừa có thể xem số liệu tổng kết được.

Bạn có thể xem Help về cách sử dụng Consolidate.
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giả sử mình có một fiel exel gồm 10 sheet.Các bạn có biết cách nảo để tạo một sheet gồm dữ liệu từ 10 sheet này mà không dùng lệnh copy từng sheet không"?
Thanks
Không copy bằng tay thì dùng VBA vậy! Consolidate chưa chắc đã làm được đâu nếu dử liệu không phải dạng số
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Mình lại chẳng biết gì về VBA cả.Có bạn nào có đoạn code upload lên cho mình được không?
Thanks
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giả sử mình có một fiel exel gồm 10 sheet.Các bạn có biết cách nảo để tạo một sheet gồm dữ liệu từ 10 sheet này mà không dùng lệnh copy từng sheet không"?
Thanks

bạn dùng hàm indirect nhé, nó sẽ cho kết quả của các sheet về 1 sheet.
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giả sử mình có một fiel exel gồm 10 sheet.Các bạn có biết cách nảo để tạo một sheet gồm dữ liệu từ 10 sheet này mà không dùng lệnh copy từng sheet không"?
Thanks

Thay vì làm như thế thì ngay từ đầu bạn đừng gõ vào 10 sheet riêng biệt mà nên gõ chung vào 1 sheet.
Chỉ cần thêm 1 cột ghi số phân loại.
Về sau khi cần lấy số liệu của 1 sheet (theo ý ban đầu của bạn) thì chỉ cần dùng bộ lọc mà lấy ra.

Ví dụ thay vì lập sổ Nhật ký chung cho từng tháng trên từng sheet, hãy lập chung cho cả năm, và thêm cột "THÁNG" vào đó.

Bạn cảm thấy khó khăn?

Đó là vì Excel là phần mềm xử lý bảng tính chứ không phải là phần mềm quản lý cơ sở dữ liệu. Khó khăn là đương nhiên.
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Thay vì làm như thế thì ngay từ đầu bạn đừng gõ vào 10 sheet riêng biệt mà nên gõ chung vào 1 sheet.
Chỉ cần thêm 1 cột ghi số phân loại.
.

Cái này tôi đồng ý (vì tôi vẫn thường làm vậy), những giả sử dử liệu đang có của người ta là nhiều sheet thì sao
Tóm lại: Sang Giai pháp Excel mà hỏi, vì tôi có file nhưng chẳng biết gữi lên bằng cách nào...
Nói ngắn gọn là:
- Dùng vòng lập quét qua các sheet (với đ/k bỏ qua sheet cần tổng hợp)
- Copy và paste nối đuôi vào sheet cần tổng hợp
Cực kỳ đơn giản (bạn có thể record macro rồi chỉnh sửa lại code)
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Trong trường hợp đó thì việc xác định các sheet cần thiết cũng cần có quy tắc nhất định.

Ví dụ các sheet được đặt tên là "NKC-T01", "NKC-T02" ... thì mới có thể dựa theo quy tắc đặt tên đó là tính toán tên sheet cần thiết.

Vậy, thực ra thao tác chọn vùng rồi nhấn Ctrl+C rồi sang sheet tổng hợp, đặt con trỏ ở cột A, nhấn ctrl+mũi tên xuống, xuống dòng trống kế tiếp và cuối cùng nhấn ctrl+V, tuy kể ra thì dài nhưng làm thì rất nhanh, chỉ vài cú click và cài cú gõ là xong.
Đó là cách chung nhất, hiệu quả nhất.

Thêm:
Để chọn nguyên vùng data liên kế nhau bạn hãy nhấn chuột phải trên menu hoặc toolbar, rồi chọn Customize. Ở tab Commands, trong khung Categoires chọn Edit, trong khung Commands chọn Select current region (có hình vuông đen với 4 mũi tên chĩa ra 4 góc) rồi lôi nó bỏ vào thanh công cụ để dùng về sau.

-----------
Nếu bạn viết code thì nó đại khái như sau (Giả sử tên sheet không có quy tắc nào cả, phải chỉ ra chính xác tên từng sheet):
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 19/01/2009 by Duong Thai Binh
'
'
Dim sheet_TH As String
sheet_TH = "sheet-TH"

Sheets("Sheet1").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets(sheet_TH).Select
Range("A1").Select
ActiveSheet.Paste

Sheets("Sheet2").Select
Range("A1").Select
Selection.CurrentRegion.Select
Application.CutCopyMode = False
Selection.Copy
Sheets(sheet_TH).Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
ActiveSheet.Paste

Sheets("Sheet3").Select
Range("A1").Select
Selection.CurrentRegion.Select
Application.CutCopyMode = False
Selection.Copy
Sheets(sheet_TH).Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
ActiveSheet.Paste

' Ở trên là copy 3 sheet sang sheet tổng hợp, bạn hãy copy thêm ra thành 10 đoạn cho đủ 10 sheet.
' Nhớ sửa lại tên sheet cho đúng.

End Sub
Lưu ý code trên cần điều kiện:
- VÙng data nằm bắt đầu ở ô A1 trên tất cả các sheet.
- Tên các sheet là không có quy tắc gì cả thành ra cần phải sửa lại (gõ lại code ở trên) cho đúng với file của bạn.
- Nếu tên các sheet là có quy tắc thì bạn có thể dùng vòng lặp cho chương trình gọn hơn.

Tóm lại đoạn chương trình như vậy cũng có hơi là củ chuối, chẳng có ích lợi gì nhiều, trừ khi nó nằm trong 1 chương trình lớn.
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giã sử bạn muốn copy tất cả các sheet vào 1 sheet tên Main
Vậy ta làm như sau:

HTML:
Option Explicit
Private Sub Worksheet_Activate()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  Range("A1").CurrentRegion.ClearContents
  For Each Sh In Worksheets
    If Sh.Name <> "Main" Then
       Sh.Range("A1").CurrentRegion.Offset(1).Copy
       Range("A65536").End(xlUp).Offset(1).PasteSpecial 3
    End If
  Next Sh
  Application.CutCopyMode = False
End Sub
Cứ việc nhập liệu thoải mái, chỉ cần khi bạn chọn vào sheet Main là dử liệu sẽ được cập nhật
Code này code dử liệu, bỏ qua tiêu đề
 
Sửa lần cuối:
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Nếu khi bắt đầu chạy mà không biết chắc sheet nào đang là hiện thời (con trỏ đang nằm ở bất kỳ chỗ nào) thì đọan trên chỉ cần thêm 1 dòng:


Option Explicit
Private Sub Worksheet_Activate()
Dim Sh As Worksheet
Application.ScreenUpdating = False
sheets("Main").select
Range("A1").CurrentRegion.ClearContents
For Each Sh In Worksheets
If Sh.Name <> "Main" Then
Sh.Range("A1").CurrentRegion.Offset(1).Copy
Range("A65536").End(xlUp).Offset(1).PasteSpecial 3
End If
Next Sh
Application.CutCopyMode = False
End Sub
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Nếu khi bắt đầu chạy mà không biết chắc sheet nào đang là hiện thời (con trỏ đang nằm ở bất kỳ chỗ nào) thì đọan trên chỉ cần thêm 1 dòng:


Option Explicit
Private Sub Worksheet_Activate()
Dim Sh As Worksheet
Application.ScreenUpdating = False
sheets("Main").select
Range("A1").CurrentRegion.ClearContents
For Each Sh In Worksheets
If Sh.Name <> "Main" Then
Sh.Range("A1").CurrentRegion.Offset(1).Copy
Range("A65536").End(xlUp).Offset(1).PasteSpecial 3
End If
Next Sh
Application.CutCopyMode = False
End Sub
Không cần đoạn sheets("Main").select đâu anh ơi! Vì code này dùng sự kiện Worksheet_Activate, mà code thì cho vào sheet Main. Vậy đương nhiên code chỉ chạy được khi ta chọn vào sheet Main mà thôi
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Không cần đoạn sheets("Main").select đâu anh ơi! Vì code này dùng sự kiện Worksheet_Activate, mà code thì cho vào sheet Main. Vậy đương nhiên code chỉ chạy được khi ta chọn vào sheet Main mà thôi

Đồng ý.
Làm như thế thì không sợ mất dữ liệu khi tình cờ chạy code đó khi đang nằm ở sheet khác.
Nhưng sẽ khá phiền toái mỗi khi active thì nó sẽ làm lại số liệu.

Suy cho cùng thì viết code này chủ yếu là để học viết code mà thôi.
Thực tế hiếm có trường hợp bạn phải thực hiện thao tác copy data này mỗi ngày 10 lần.
Thông thường bạn sẽ chỉ phải copy 1 lần/năm.
Mỗi năm dành 2 phút để copy thủ công cũng không đáng ngại lắm.
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Suy cho cùng thì viết code này chủ yếu là để học viết code mà thôi.
Thực tế hiếm có trường hợp bạn phải thực hiện thao tác copy data này mỗi ngày 10 lần.
Thông thường bạn sẽ chỉ phải copy 1 lần/năm.
Mỗi năm dành 2 phút để copy thủ công cũng không đáng ngại lắm.
Cũng đồng ý với anh điều này luốn!
Nếu là tôi thì tôi sẽ không dùng sự kiện Worksheet_Active, vì nó tính toán hoài, mệt lắm
Tuy nhiên, có đôi lúc ta viết code cho người không rành về VBA thì lại khác, mọi thứ cứ như phải tự động toàn tập như mâm cơm đã được dọn sẳn
Ha... ha... ha...
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Bài hướng dẫn của anh rất hay, mình làm roi, nhưng nó chỉ copy tiêu đề giống nhau thôi, nội dung danh sách không copy qua sheet TongHop. Nhờ bạn hướng dẫn cách khắc phục, Thanks
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Các chuyên gia exel chỉ dẫn cho mình chuyện này tý.
Hiện tại mình có 10 sheet (từ 1 đến 10) trong 1 file exel mình muốn coppy 10 sheet này sang 1 sheet tổng hợp để theo dõi. Sau này mình cần chỉnh sửa 1 vị trí trong các sheet từ 1 đến 10 thì số liệu trong sheet tổng hợp sẽ thay đổi theo mà mình không cần chỉnh sửa trong sheet tổng hợp. Cảm ơn các ACE đã quan tâm và xin chỉ giúp.
Xin cảm ơn
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Các chuyên gia exel chỉ dẫn cho mình chuyện này tý.
Hiện tại mình có 10 sheet (từ 1 đến 10) trong 1 file exel mình muốn coppy 10 sheet này sang 1 sheet tổng hợp (sheet 11) để theo dõi. Sau này mình cần chỉnh sửa 1 vị trí trong các sheet từ 1 đến 10 thì số liệu trong sheet tổng hợp (sheet 11) sẽ thay đổi theo mà mình không cần chỉnh sửa trong sheet tổng hợp. Cảm ơn các ACE đã quan tâm và xin chỉ giúp. các bạn có thể gửi về địa chỉ email cho mình: minhhieubds@yahoo.com
Xin cảm ơn
 
Ðề: Copy dữ liệu từ các sheet nhanh nhất

Giã sử bạn muốn copy tất cả các sheet vào 1 sheet tên Main
Vậy ta làm như sau:

HTML:
Option Explicit
Private Sub Worksheet_Activate()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  Range("A1").CurrentRegion.ClearContents
  For Each Sh In Worksheets
    If Sh.Name <> "Main" Then
       Sh.Range("A1").CurrentRegion.Offset(1).Copy
       Range("A65536").End(xlUp).Offset(1).PasteSpecial 3
    End If
  Next Sh
  Application.CutCopyMode = False
End Sub
Cứ việc nhập liệu thoải mái, chỉ cần khi bạn chọn vào sheet Main là dử liệu sẽ được cập nhật
Code này code dử liệu, bỏ qua tiêu đề
làm sao để nó ko xóa thanh tiêu đề bạn
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top