Tổng hợp dữ liệu từ nhiều sheet

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,454
Giới tính
Nam
Dear all.

Mình có file excel gồm nhiều sheet, mỗi sheet có dữ liệu khác nhau nhưng chung format (mỗi sheet đều có 1,000 dòng), mình muốn tổng hợp dữ liệu từ tất cả các sheet sang sheet Sum (sau cho sheet Sum sẽ lấy hết 1,000 dòng của sheet K, rồi tới sheet I,…,giống như sheet Sum đang làm). Nhờ ACE giúp đỡ.

Thanks all.
 

File đính kèm

Dear all.

Mình có file excel gồm nhiều sheet, mỗi sheet có dữ liệu khác nhau nhưng chung format (mỗi sheet đều có 1,000 dòng), mình muốn tổng hợp dữ liệu từ tất cả các sheet sang sheet Sum (sau cho sheet Sum sẽ lấy hết 1,000 dòng của sheet K, rồi tới sheet I,…,giống như sheet Sum đang làm). Nhờ ACE giúp đỡ.

Thanks all.

Tặng bạn 1 Sub chạy thử.
PHP:
Public Sub GPE()
Dim Ws As Worksheet, sArr(), dArr(1 To 10000, 1 To 4), I As Long, J As Long, K As Long
For Each Ws In Worksheets
    If Ws.Name <> "Sum" Then
        sArr = Ws.Range(Ws.[A2], Ws.[A2].End(xlDown)).Resize(, 4).Value2
        For I = 1 To UBound(sArr, 1)
            K = K + 1
            For J = 1 To 4
                dArr(K, J) = sArr(I, J)
            Next J
        Next I
    End If
Next Ws
Sheets("Sum").[A2:D10000].ClearContents
Sheets("Sum").[A2].Resize(K, 4) = dArr
End Sub
 
Dear anh.
Trường hợp em có khoảng 50 sheet thì em cần sửa chỗ nào vậy anh, Code này mình chèn vào sheet hay Module vậy anh.
Thanks.

Tặng bạn 1 Sub chạy thử.
PHP:
Public Sub GPE()
Dim Ws As Worksheet, sArr(), dArr(1 To 10000, 1 To 4), I As Long, J As Long, K As Long
For Each Ws In Worksheets
    If Ws.Name <> "Sum" Then
        sArr = Ws.Range(Ws.[A2], Ws.[A2].End(xlDown)).Resize(, 4).Value2
        For I = 1 To UBound(sArr, 1)
            K = K + 1
            For J = 1 To 4
                dArr(K, J) = sArr(I, J)
            Next J
        Next I
    End If
Next Ws
Sheets("Sum").[A2:D10000].ClearContents
Sheets("Sum").[A2].Resize(K, 4) = dArr
End Sub
 
Dear anh.
Trường hợp em có khoảng 50 sheet thì em cần sửa chỗ nào vậy anh, Code này mình chèn vào sheet hay Module vậy anh.
Thanks.

Chèn vào Module, tạo 1 cái nút gì đó ở sheet "Sum" để Run Sub.
Bi nhiêu sheet cũng được nhưng phải chỉnh lại các con số 10.000 trong Sub thành con số phù hợp với dữ liệu có thể có.
Càng nhiều sheet, càng nhiều dữ liệu thì càng "Rùa".
 
Em biết gì về vba chết liền, em không biết tạo nút để run sub. anh hướng dẫn chi tiết giúp em được không.

Thanks.

Chèn vào Module, tạo 1 cái nút gì đó ở sheet "Sum" để Run Sub.
Bi nhiêu sheet cũng được nhưng phải chỉnh lại các con số 10.000 trong Sub thành con số phù hợp với dữ liệu có thể có.
Càng nhiều sheet, càng nhiều dữ liệu thì càng "Rùa".
 

File đính kèm

Đã làm như hướng dẫn rồi nhưng nó báo lỗi Run-time error "9". File em có 36 sheet, và mỗi sheet 910 dòng. Em sửa sub thành
Public Sub GPE()
Dim Ws As Worksheet, sArr(), dArr(1 To 910, 1 To 4), I As Long, J As Long, K As Long
For Each Ws In Worksheets
If Ws.Name <> "Sum" Then
sArr = Ws.Range(Ws.[A2], Ws.[A2].End(xlDown)).Resize(, 4).Value2
For I = 1 To UBound(sArr, 1)
K = K + 1
For J = 1 To 4
dArr(K, J) = sArr(I, J)
Next J
Next I
End If
Next Ws
Sheets("Sum").[A2:D910].ClearContents
Sheets("Sum").[A2].Resize(K, 4) = dArr
End Sub

Anh xem lại giúp em.
Thanks.

1. Bạn vẽ 1 cái Shapes - hình vuông tròn,méo gì tùy ý: Edit text đặt tên là "Click thử phát xem" --=0--=0--=0--=0--=0--=0
2. Click phải lên cái Shapes đó -> Chọn Assign Macro : chọn cái SUB bạn vừa tạo ở modul - Ok .

Xong click thử phát xem
 
Chắc phải làm giùm "tút tùn tụt" cho bạn thôi.
Híc!

Thế cứ nay sao lớp trẻ chúng em nó lười, bác cứ làm tút hết thế này, ngay bài trên hpkhuong hướng dẫn rồi, để họ tự làm thì mới nhớ, thậm chí đôi khi (có thể không đúng với bài này) cả code nữa, không code được thì công thức, cột tạm cũng là giải pháp khá tốt.
 
Lần chỉnh sửa cuối:

File đính kèm

  • Hai14-04-2015-12.25.40 PM.jpg
    Hai14-04-2015-12.25.40 PM.jpg
    19.2 KB · Đọc: 78
Lần chỉnh sửa cuối:
Đã làm như hướng dẫn rồi nhưng nó báo lỗi Run-time error "9". File em có 36 sheet, và mỗi sheet 910 dòng. Em sửa sub thành
Public Sub GPE()
Dim Ws As Worksheet, sArr(), dArr(1 To 910, 1 To 4), I As Long, J As Long, K As Long
For Each Ws In Worksheets
If Ws.Name <> "Sum" Then
sArr = Ws.Range(Ws.[A2], Ws.[A2].End(xlDown)).Resize(, 4).Value2
For I = 1 To UBound(sArr, 1)
K = K + 1
For J = 1 To 4
dArr(K, J) = sArr(I, J)
Next J
Next I
End If
Next Ws
Sheets("Sum").[A2:D910].ClearContents
Sheets("Sum").[A2].Resize(K, 4) = dArr
End Sub

Anh xem lại giúp em.
Thanks.

Chắc phải "Sao bé không khóc" quá.
- 36 sheet x 910 dòng = 32.760.
Tôi ghi sẵn "trừ hao" 60.000 ở bài #7. Bạn sửa lại thành 910 làm sao chạy? Nếu không chắc chính xác luôn luôn là 32.760 thì "trừ hao" cho nó 40.000 hay 1.048.576 luôn (nếu là 2007,2010...)
- Cái hình bạn gởi thì tra tự điển xem nó bảo cái gì, cứ OK thử xem sao.
 
Em đâu có biết, tưởng 10,000 là số dòng mỗi sheet, em sửa lại 60.000 dòng thì ok rồi, nhưng lỗi nó vẫn báo, báo thì báo miễn ra dữ liệu đúng là ok. thansk sư huynh nhiều.

Chắc phải "Sao bé không khóc" quá.
- 36 sheet x 910 dòng = 32.760.
Tôi ghi sẵn "trừ hao" 60.000 ở bài #7. Bạn sửa lại thành 910 làm sao chạy? Nếu không chắc chính xác luôn luôn là 32.760 thì "trừ hao" cho nó 40.000 hay 1.048.576 luôn (nếu là 2007,2010...)
- Cái hình bạn gởi thì tra tự điển xem nó bảo cái gì, cứ OK thử xem sao.
 
Nếu lịch sự thì bạn có thể viết cảm ơn, không thì bạn click vào nút "Cảm ơn" ở dưới mỗi bài trả lời cũng được. Bác Ba Tê đã trả lời cho bạn rất nhiều điều bạn cần và chưa biết mà. Thấy bạn là thành viên lâu rồi nên mình góp ý, không vui thì bỏ qua __--__
 
Nếu lịch sự thì bạn có thể viết cảm ơn, không thì bạn click vào nút "Cảm ơn" ở dưới mỗi bài trả lời cũng được. Bác Ba Tê đã trả lời cho bạn rất nhiều điều bạn cần và chưa biết mà. Thấy bạn là thành viên lâu rồi nên mình góp ý, không vui thì bỏ qua __--__

a ta viết

đủ cả tây tàu việt rồi đó bạn,

Nói thật chắc bác ba tê đam mê quá, cứ giúp tận răng thế này ... làm những người được giúp, cũng như thế hệ trẻ lười lúc đó kêu ai...
 
Nói thật chắc bác ba tê đam mê quá, cứ giúp tận răng thế này ... làm những người được giúp, cũng như thế hệ trẻ lười lúc đó kêu ai...
bạn nói đứng, nhưng cũng ko đúng đau bạn, đây là ứng dụng thưc tế ko còn là bài học nữa, nên bac BaTê giúp vậy là hợp lý, vì lớp trẻ thời nay đc học nhiều chứ, như lớp của chúng ta, tốt nghiệp trung hoc rồi còn chưa biết vi tính là gì, khi vào đại hoc, trường có mở lớp Internet, muốn đăng ký họ cũng bảo phải học qua lớp cơ bạn Windows, còn lớp trẻ thời nay thì ko cần bàn nữa, nên bác Batê giúp vậy cũng đúng thôi, rất cám ơn lòng nhiệt huyết của bác Batê

nhưng nếu đây chỉ là bài tập thì nên gửi ý thôi
 
bạn nói đứng, nhưng cũng ko đúng đau bạn, đây là ứng dụng thưc tế ko còn là bài học nữa, nên bac BaTê giúp vậy là hợp lý, vì lớp trẻ thời nay đc học nhiều chứ, như lớp của chúng ta, tốt nghiệp trung hoc rồi còn chưa biết vi tính là gì, khi vào đại hoc, trường có mở lớp Internet, muốn đăng ký họ cũng bảo phải học qua lớp cơ bạn Windows, còn lớp trẻ thời nay thì ko cần bàn nữa, nên bác Batê giúp vậy cũng đúng thôi, rất cám ơn lòng nhiệt huyết của bác Batê

nhưng nếu đây chỉ là bài tập thì nên gửi ý thôi

tôi cũng trẻ và lười đây nếu cứ được giúp tận răng mọi thứ

Ý tôi, là bạn đọc bài viết trang trước nhé, bài #9
http://www.giaiphapexcel.com/forum/...ợp-dữ-liệu-từ-nhiều-sheet&p=643213#post643213

Còn đúng hay không đúng khó xét, cho con cá cho cần câu hơn thì xét ra bàn dài dài
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom