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

Thảo luận trong 'Excel căn bản' bắt đầu bởi Loan1989, 13/1/09.

  1. Loan1989

    Loan1989 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    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
     
  2. phatnq2002

    phatnq2002 Tích cực giảm cân... Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    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.
     
  3. atmt17

    atmt17 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    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ố
     
  4. Loan1989

    Loan1989 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  5. huyvh

    huyvh Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    bạn dùng hàm indirect nhé, nó sẽ cho kết quả của các sheet về 1 sheet.
     
  6. muontennguoi

    muontennguoi Member Thành viên BQT Super Moderators

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: 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.
    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.
     
  7. atmt17

    atmt17 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    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)
     
  8. muontennguoi

    muontennguoi Member Thành viên BQT Super Moderators

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: 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.
     
  9. atmt17

    atmt17 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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 đề
     
    Chỉnh sửa cuối: 20/1/09
  10. muontennguoi

    muontennguoi Member Thành viên BQT Super Moderators

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: 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
     
  11. atmt17

    atmt17 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  12. muontennguoi

    muontennguoi Member Thành viên BQT Super Moderators

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    Đồ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.
     
  13. atmt17

    atmt17 New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Copy dữ liệu từ các sheet nhanh nhất

    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...
     
  14. luantn

    luantn New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  15. minhhieubds

    minhhieubds New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  16. minhhieubds

    minhhieubds New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     

Chia sẻ trang này

XenForo Add-ons by Brivium ™ © 2012-2013 Brivium LLC.