Xin giúp đỡ: Ghép dữ liệu từ nhiều file excel khác nhau thành 1 file

Liên hệ QC
Chào a ndu96081631 em ngày nào cũng phải coppy bằng tay dữ liệu từ 22 file hóa đơn vào 2 file tổng hợp( từ file KH1->KH12 coppy vào file HD1, từ KH13->KH22 coppy vào HD2, mỗi file vào 1 sheet tương ứng). Xin a giúp e chỉ mở 2 file tổng hợp thì dữ liệu tự động cập nhật vào được không ạ. e cảm ơn anh trước ạ!
 

File đính kèm

  • N1.rar
    482.2 KB · Đọc: 19
bạn ghoststock có thể tham khảo code bài 17 của Anh Bate áp dụng cho bài của bạn rất hay code VBA của anh Bate viết rất rõ ràng và dễ hiểu
, dễ sửa mà tốc độ rất nhanh + kèm theo danh sách file cần lấy nếu ko thích file nào thì có thể xoá bớt đi
Túm lại : Tuyệt vời....cảm ơn Anh Bate nhiều
 
hi a kieu manh, e đọc bài a Bate rồi mà vẫn không hiểu( e mù tịt, hix) nhờ a làm dùm e với được ko ạ? với e muốn mở file là nó tự tổng hợp chứ ko cần nhấn nút dc ko a? thanks a !
 
hi a kieu manh, e đọc bài a Bate rồi mà vẫn không hiểu( e mù tịt, hix) nhờ a làm dùm e với được ko ạ? với e muốn mở file là nó tự tổng hợp chứ ko cần nhấn nút dc ko a? thanks a !
 
hi a kieu manh, e đọc bài a Bate rồi mà vẫn không hiểu( e mù tịt, hix) nhờ a làm dùm e với được ko ạ? với e muốn mở file là nó tự tổng hợp chứ ko cần nhấn nút dc ko a? thanks a !

xin lỗi mình chưa coi file của bạn... cứ nghĩ file của bạn giông như mấy bài trước....mình vừa tải về coi ... thấy cụ thể ..bạn tìm gộp file nhé
trên GPE có rất nhiều sẽ đáng ứng theo bài của bạn
 
có cách nào mở file là nó tự gộp ko ạ? cái này cũng phải thao tác bằng tay a ơi. tại trong ngày dữ liệu thường xuyên thay đổi nên làm cách này cũng thao tác nhiều ạ
 
có cách nào mở file là nó tự gộp ko ạ? cái này cũng phải thao tác bằng tay a ơi. tại trong ngày dữ liệu thường xuyên thay đổi nên làm cách này cũng thao tác nhiều ạ
bạn nhờ tác giả bên link đó giúp đi là tốt nhất ....
 
e đã nhờ, nhưng có vẻ toppic bên đó lâu rồi ko hoạt động,+-+-+-+

chịu khó chờ nha có thể người ta đang bận hay đang nghiên cứu chăng... có cái 6 năm sau hỏi vẫn ok mà ... nếu tác giả đó vẫn còn tham gia GPE
 
Kính nhờ các anh hướng dẫn giúp
em có nhieu sheet (CSTD1, CSTD2.....- khoảng 100) giờ muốn tổng hợp thành 1 sheet "TH" từ các sheet "CSTD1....CSTD"n"
bữa giờ đọc các bài hướng dẫn và sửa VBA mà không thành công rất mong nhận được hướng dẫn
* do số lượng sheet nhiều nên em mún điều kiện tổng hợp là là nhiều lần mỗi lần 20 sheet được TH1 sau đó sẽ lấy HT1 và 20sheet tiếp theo...và làm cho đến khi hết (em trình bày vậy không biết các anh chị có hiểu ý không ) Nếu có cách gì hay hơn xin được hướng dẫn'
Em xin gửi tập tin mẫu
 

File đính kèm

  • nhap 2.xlsx
    36.7 KB · Đọc: 26
Kính nhờ các anh hướng dẫn giúp
em có nhieu sheet (CSTD1, CSTD2.....- khoảng 100) giờ muốn tổng hợp thành 1 sheet "TH" từ các sheet "CSTD1....CSTD"n"
bữa giờ đọc các bài hướng dẫn và sửa VBA mà không thành công rất mong nhận được hướng dẫn
* do số lượng sheet nhiều nên em mún điều kiện tổng hợp là là nhiều lần mỗi lần 20 sheet được TH1 sau đó sẽ lấy HT1 và 20sheet tiếp theo...và làm cho đến khi hết (em trình bày vậy không biết các anh chị có hiểu ý không ) Nếu có cách gì hay hơn xin được hướng dẫn'
Em xin gửi tập tin mẫu
Bạn dùng Code sau
Mã:
Sub TH()
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TH" Then
            Sh.Range("A6", Sh.Range("A65536").End(3)).Resize(, 8).Copy
            Sheets("TH").Range("A65536").End(3).Offset(1, 0).PasteSpecial
        End If
    Next
    Application.ScreenUpdating = True
End Sub
 
Bạn dùng Code sau
Mã:
Sub TH()
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TH" Then
            Sh.Range("A6", Sh.Range("A65536").End(3)).Resize(, 8).Copy
            Sheets("TH").Range("A65536").End(3).Offset(1, 0).PasteSpecial
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Dạ cảm ơn anh nhiều lắm em test thấy ổn. Để làm chính thức có gì sẽ thông tin sớm đến diễn đàn và tác giả
Em test thử thấy như sau:
1. Test theo hướng dẫn - thành công
2. Test thử khi đổi tên sheet khác nhau không phải là CSTD1, CSTD2 bằng CS, CSTD2 - vẩn thành công
3. Ra lệnh thử 3, 4, 5 (vẫn với 2 sheet trên) - vẫn thành công ..
Trước mắt vậy Xin cảm ơn bác tác giả.
P/s Nếu được nhờ anh dịch (giải thích) để hiểu rõ hơn về đạon mã này để nghiêm cứu có thể tự điều chỉnh khi có sự thay đổi . Cảm ơn
 
Dạ cảm ơn anh nhiều lắm em test thấy ổn. Để làm chính thức có gì sẽ thông tin sớm đến diễn đàn và tác giả
Em test thử thấy như sau:
1. Test theo hướng dẫn - thành công
2. Test thử khi đổi tên sheet khác nhau không phải là CSTD1, CSTD2 bằng CS, CSTD2 - vẩn thành công
3. Ra lệnh thử 3, 4, 5 (vẫn với 2 sheet trên) - vẫn thành công ..
Trước mắt vậy Xin cảm ơn bác tác giả.
P/s Nếu được nhờ anh dịch (giải thích) để hiểu rõ hơn về đạon mã này để nghiêm cứu có thể tự điều chỉnh khi có sự thay đổi . Cảm ơn
Mã:
Sub TH()
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TH" Then
            Sh.Range("A6", Sh.Range("A65536").End(3)).Resize(, 8).Copy '1
            Sheets("TH").Range("A65536").End(3).Offset(1, 0).PasteSpecial '2
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Thế này bạn nhé
Đầu tiên bạn dùng 1 vòng lặp
nếu tên sheet mà khác sheet "TH"
'1: ô A 6 là ô đầu tiên của những sheet khác TH bắt đầu có dữ liệu ,Resize(, 8).Copy. Sheet có 8 cột dùng phương thức copy (Copy đối tượng là Range nhé) rồi paste ( đối tượng là sheet)
'2: Sheets("TH").Range("A65536").End(3). Đoạn này có ý nghĩa là ô đầu tiên có dữ liệu ở sheet TH là A 5, A 5 offset(1,0) xuống 1 dòng sang 0 cột là A 6 rồi paste vào thôi nhé
 
Mã:
Sub TH()
    Dim Sh As Worksheet
    Application.ScreenUpdating = False
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "TH" Then
            Sh.Range("A6", Sh.Range("A65536").End(3)).Resize(, 8).Copy '1
            Sheets("TH").Range("A65536").End(3).Offset(1, 0).PasteSpecial '2
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Thế này bạn nhé
Đầu tiên bạn dùng 1 vòng lặp
nếu tên sheet mà khác sheet "TH"
'1: ô A 6 là ô đầu tiên của những sheet khác TH bắt đầu có dữ liệu ,Resize(, 8).Copy. Sheet có 8 cột dùng phương thức copy (Copy đối tượng là Range nhé) rồi paste ( đối tượng là sheet)
'2: Sheets("TH").Range("A65536").End(3). Đoạn này có ý nghĩa là ô đầu tiên có dữ liệu ở sheet TH là A 5, A 5 offset(1,0) xuống 1 dòng sang 0 cột là A 6 rồi paste vào thôi nhé

Các bác cho em hỏi theo code này thì khi chạy macros thì ô đầu tiên đặt dữ liệu là A2
Giờ muốn ô đặt dữ liệu là A10 vậy sẽ điều chỉnh câu lệnh như thế nào...em si nghiên cứu mà không làm được mong các bác hướng dẫn cảm ơn.
 
Web KT
Back
Top Bottom