Tông hợp dữ liệu từ nhiều sheet vào 1 sheet ? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Xin chào tất cả các bạn,
Oanh Thơ đang vướng mắc một vấn đề cụ thể xin được nêu trong file đính kèm.

Phiền các bạn xem file và dành chút thời gian xem và giúp đỡ cho Oanh Thơ với ạ.
Trân trọng cảm ơn.

 

File đính kèm

Xin chào tất cả các bạn,
Oanh Thơ đang vướng mắc một vấn đề cụ thể xin được nêu trong file đính kèm.

Phiền các bạn xem file và dành chút thời gian xem và giúp đỡ cho Oanh Thơ với ạ.
Trân trọng cảm ơn.

Bạn sử dụng code này nhé:
[GPECODE=vb]Sub CopyDL()
Dim i As Long
Sheets("Tonghop").Move Before:=Sheets(1)
For i = 2 To 10
Sheets("Tonghop").Cells((i - 2) * 9 + 5, 4).Resize(9, 7).Value = Sheets(i).[D5:J13].Value
Next
End Sub[/GPECODE]
 
Upvote 0
Bạn sử dụng code này nhé:
[GPECODE=vb]Sub CopyDL()
Dim i As Long
Sheets("Tonghop").Move Before:=Sheets(1)
For i = 2 To 10
Sheets("Tonghop").Cells((i - 2) * 9 + 5, 4).Resize(9, 7).Value = Sheets(i).[D5:J13].Value
Next
End Sub[/GPECODE]

Xin cảm ơn bạn nghiaphuc nhiều nhé,
Có những chỗ Oanh Thơ không hiểu , bạn có thể giải thích thêm ý nghĩa của những con số màu đỏ bên dưới được không ạ được không ạ?
Sheets("Tonghop").Cells((i - 2) * 9 + 5, 4).Resize(9, 7).Value = Sheets(i).[D5:J13].Value
 
Upvote 0
Xin cảm ơn bạn nghiaphuc nhiều nhé,
Có những chỗ Oanh Thơ không hiểu , bạn có thể giải thích thêm ý nghĩa của những con số màu đỏ bên dưới được không ạ được không ạ?
Sheets("Tonghop").Cells((i - 2) * 9 + 5, 4).Resize(9, 7).Value = Sheets(i).[D5:J13].Value
Cái chỗ Resize(9, 7) thì dễ hiểu mà, chỉ là điều chỉnh thành 1 vùng có 9 hàng, 7 cột thôi. Còn mấy chỗ phía trước thì nó sẽ xác định ô đầu tiên (góc trên bên trái) của vùng dữ liệu đích, (i - 2) * 9 + 5 là chỉ số hàng và 4 là chỉ số cột (số 4 tương ứng với cột D).

Ví dụ cụ thể: Bắt đầu với i=2, ta có: (i-2)*9+5 = 5, vậy Cells((i - 2) * 9 + 5, 4) chính là ô D5
Tương tự, i=3 thì ta được ô đầu tiên là ô D14, i=4 thì ô đầu là ô D23,...
 
Lần chỉnh sửa cuối:
Upvote 0
Cái chỗ Resize(9, 7) thì dễ hiểu mà, chỉ là điều chỉnh thành 1 vùng có 9 hàng, 7 cột thôi. Còn mấy chỗ phía trước thì nó sẽ xác định ô đầu tiên (góc trên bên trái) của vùng dữ liệu đích, (i - 2) * 9 + 5 là chỉ số hàng và 4 là chỉ số cột (số 4 tương ứng với cột D).

Ví dụ cụ thể: Bắt đầu với i=2, ta có:
(i-2)*9+5 = 5, vậy Cells((i - 2) * 9 + 5, 4) chính là ô D5
Tương tự, i=3 thì ta được ô đầu tiên là ô D14, i=3 thì ô đầu là ô D23,...

Cảm ơn rất bạn nhiều,được bạn giải thích Oanh Thơ hiểu rồi!
Bạn rất thông minh :-=
 
Upvote 0
Cảm ơn rất bạn nhiều,được bạn giải thích Oanh Thơ hiểu rồi!
Bạn rất thông minh :-=
Nói thêm một chút, nếu file của bạn có nhiều sheet con hơn nữa và các sheet con đều có cấu trúc giống nhau như vậy thì trong code trên chỉ cần sửa số 10 ở dòng thứ 4 thành Sheets.Count là được.
 
Upvote 0
nghiaphuc và các bạn cho Oanh Thơ hỏi thêm:
Trong trường hợp Oanh Thơ muốn lấy giá trị lớn hơn không ở các sheet1 đến sheet 9 vào sheet tổng hợp thì code phải sửa thể nào ạ.
Cụ thể mẫu như file đính kèm.
Xin cảm ơn rất nhiều.
 

File đính kèm

Upvote 0
nghiaphuc và các bạn cho Oanh Thơ hỏi thêm:
Trong trường hợp Oanh Thơ muốn lấy giá trị lớn hơn không ở các sheet1 đến sheet 9 vào sheet tổng hợp thì code phải sửa thể nào ạ.
Cụ thể mẫu như file đính kèm.
Xin cảm ơn rất nhiều.
Trên Sheet2 và Sheet6 có 2 dòng chứa số 0, 2 dòng này không copy qua à bạn? Điều kiện để copy qua (trên thực tế) là gì?
 
Upvote 0
Nói thêm một chút, nếu file của bạn có nhiều sheet con hơn nữa và các sheet con đều có cấu trúc giống nhau như vậy thì trong code trên chỉ cần sửa số 10 ở dòng thứ 4 thành Sheets.Count là được.

Vâng đúng là file thực có rất nhiều sheet bạn ạ,có file tận hơn 200 sheet liền :-=.
OK bạn, vướng mắc ở đâu Oanh Thơ sẽ gửi lên đây để nhờ bạn và mọi người hỗ trợ cho Oanh Thơ ạ.
Cảm ơn bạn nhiều!
 
Upvote 0
Vâng, số 0 loại bỏ nghiaphuc ah,
Chỉ lấy giá trị > 0.
Bạn xem giúp Oanh Thơ với.

Xin cảm ơn.
Thêm một chút mắm muối cho món ăn lúc nãy:
[GPECODE=vb]Sub CopyDL()
Dim i As Long
Sheets("Tonghop").Move Before:=Sheets(1) ' Chuyển sheet Tonghop lên đầu
Sheets("Tonghop").Activate 'Chọn sheet Tonghop
For i = 2 To Sheets.Count
Cells((i - 2) * 9 + 5, 4).Resize(9, 8).Value = Sheets(i).[C5:J13].Value 'Đưa giá trị từ sheet con qua
Next
[D4:L4] = [COLUMN(1:9)] 'Gán tiêu đề cho vùng dữ liệu đích
i = 9 * (Sheets.Count - 1) 'Xác định số dòng dữ liệu
[L5].Resize(i).FormulaR1C1 = "=COUNTIF(RC[-7]:RC[-1],"">0"")" 'Gán công thức để lọc
[D4].CurrentRegion.AutoFilter 9, "0" 'Lọc những dòng không chứa dữ liệu
[L5].Resize(i + 1).SpecialCells(12).EntireRow.Delete 'Xóa kết quả lọc
ActiveSheet.AutoFilterMode = False 'Bỏ chế độ lọc
Union([D4:L4], [L5].Resize(i)).Clear 'Xóa tiêu đề và cột chứa công thức
[D5].CurrentRegion.Borders.LineStyle = 1 'Kẻ khung cho vùng kết quả
End Sub[/GPECODE]
Trong file, bạn nhấn nút lệnh tại ô A1 hoặc nhấn tổ hợp phím Ctrl+Shift+C để chạy code.
 

File đính kèm

Upvote 0
Thêm một chút mắm muối cho món ăn lúc nãy:
[GPECODE=vb]Sub CopyDL()
Dim i As Long
Sheets("Tonghop").Move Before:=Sheets(1) ' Chuyển sheet Tonghop lên đầu
Sheets("Tonghop").Activate 'Chọn sheet Tonghop
For i = 2 To Sheets.Count
Cells((i - 2) * 9 + 5, 4).Resize(9, 8).Value = Sheets(i).[C5:J13].Value 'Đưa giá trị từ sheet con qua
Next
[D4:L4] = [COLUMN(1:9)] 'Gán tiêu đề cho vùng dữ liệu đích
i = 9 * (Sheets.Count - 1) 'Xác định số dòng dữ liệu
[L5].Resize(i).FormulaR1C1 = "=COUNTIF(RC[-7]:RC[-1],"">0"")" 'Gán công thức để lọc
[D4].CurrentRegion.AutoFilter 9, "0" 'Lọc những dòng không chứa dữ liệu
[L5].Resize(i + 1).SpecialCells(12).EntireRow.Delete 'Xóa kết quả lọc
ActiveSheet.AutoFilterMode = False 'Bỏ chế độ lọc
Union([D4:L4], [L5].Resize(i)).Clear 'Xóa tiêu đề và cột chứa công thức
[D5].CurrentRegion.Borders.LineStyle = 1 'Kẻ khung cho vùng kết quả
End Sub[/GPECODE]
Trong file, bạn nhấn nút lệnh tại ô A1 hoặc nhấn tổ hợp phím Ctrl+Shift+C để chạy code.

Xin cảm ơn nghiaphuc nhiều nhé,
Nhờ sự giúp đỡ và được bạn hướng dẫn chi tiết mà Oanh Thơ đã áp dụng được.
Một lần nữa xin cảm ơn bạn.
 
Upvote 0
Web KT

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

Back
Top Bottom