Cách trích dữ liệu từ 1 sheet ra nhiều sheets

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
Chào các thành viên diễn đàn, em có 1 file excel và em muốn tạo thêm 1 số module thực hiện các công việc sau (em đã tạo đươc 2 module cần là mở file đang đóng và xóa hàng có giá trị bằng không, nhưng muốn sửa lại module thêm dữ liệu từ file đóng để copy và giữ nguyên định dạng và công thức cho sheet "Tong" và sheet "chitiet" )
1. trích ra "n" sheet mới, trong đó "n" là số các giá trị trong vùng K8:AI8. dữ liệu trong sheet mới sẽ copy cột A, B, C, E, I và một cột tương ứng trong vùng K8:AI8.
2. tự đồng điền công thức vào các vùng như đã có trong file mẫu.

em cảm ơn mọi người đã quan tâm và mong nhận được sự giúp đỡ của mọi người.
 

File đính kèm

Tống Văn Đệ

Thành viên thường trực
Tham gia ngày
27 Tháng mười 2007
Bài viết
246
Được thích
173
Điểm
695
Tuổi
64
Nơi ở
Tân Thành, BRVT
1. Tạo 1 sheet mục lục để link tới các sheet khác.
2. Có thể thay các sheet con chỉ bằng 1 sheet NCC: Vào sheet NCC --> click D6 --> click mũi tên bên phải chọn Ncc
 

File đính kèm

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
1. Tạo 1 sheet mục lục để link tới các sheet khác.
2. Có thể thay các sheet con chỉ bằng 1 sheet NCC: Vào sheet NCC --> click D6 --> click mũi tên bên phải chọn Ncc
Cảm ơn anh/chị/bạn đã giúp đỡ tôi. Nhưng cho tôi hỏi là :
Với cách 1: thì mình vẫn phải tạo cứng trước các sheet à, và dữ liệu có tự động trích ra từ sheet Tong ra không, code hoạt động như thế nào?
 
Lần chỉnh sửa cuối:

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
Cảm ơn anh/chị/bạn đã giúp đỡ tôi. Nhưng cho tôi hỏi là :
Với cách 1: thì mình vẫn phải tạo cứng trước các sheet à, và dữ liệu có tự động trích ra từ sheet Tong ra không, code hoạt động như thế nào?
Tôi muốn dùng vba copy giữ nguyên định dạng và công thức nguồn thì làm sao đuợc bạn, vì dữ liệu nguồn của tôi không cố định bao nhiêu hàng, do vậy tôi muốn dùng vba để kiểm tra ô cuối cùng có dữ liệu trong ô AG và điền công thức từ ô I7 đến ô AG cuối cùng.
 
Lần chỉnh sửa cuối:

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
Sub Import_from_ClosedWB()
Dim sPath As String
Dim sFil As String
Dim owb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
Dim myFile As String
Dim xLastRow As Long
Dim xLastcolumn As Long
Dim Rng As Long
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
myFile = Application.GetOpenFilename("Excel file (*.xls;*.xlsx),*.xls;*.xlsx", , "Select a excel file", , False)
Application.ScreenUpdating = False
sFil = Dir(myFile)
Do While sFil <> ""
Set owb = Workbooks.Open(myFile)
owb.Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
Selection.Copy
ThisWorkbook.Sheets("Tong").Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Delete
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
'owb.Close False
sFil = Dir
Loop
Application.ScreenUpdating = True
End Sub
Bài đã được tự động gộp:

Sub Import_from_ClosedWB()
Dim sPath As String
Dim sFil As String
Dim owb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
Dim myFile As String
Dim xLastRow As Long
Dim xLastcolumn As Long
Dim Rng As Long
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
myFile = Application.GetOpenFilename("Excel file (*.xls;*.xlsx),*.xls;*.xlsx", , "Select a excel file", , False)
Application.ScreenUpdating = False
sFil = Dir(myFile)
Do While sFil <> ""
Set owb = Workbooks.Open(myFile)
owb.Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
Selection.Copy
ThisWorkbook.Sheets("Tong").Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Delete
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
'owb.Close False
sFil = Dir
Loop
Application.ScreenUpdating = True
End Sub
Anh/chi xem giúp em sao lại không thực hiện được dòng lệnh Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Delete ạ
 

Tống Văn Đệ

Thành viên thường trực
Tham gia ngày
27 Tháng mười 2007
Bài viết
246
Được thích
173
Điểm
695
Tuổi
64
Nơi ở
Tân Thành, BRVT
Sub Import_from_ClosedWB()
Dim sPath As String
Dim sFil As String
Dim owb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
Dim myFile As String
Dim xLastRow As Long
Dim xLastcolumn As Long
Dim Rng As Long
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
myFile = Application.GetOpenFilename("Excel file (*.xls;*.xlsx),*.xls;*.xlsx", , "Select a excel file", , False)
Application.ScreenUpdating = False
sFil = Dir(myFile)
Do While sFil <> ""
Set owb = Workbooks.Open(myFile)
owb.Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Select
Selection.Copy
ThisWorkbook.Sheets("Tong").Activate
xLastRow = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Row
xLastcolumn = Application.ActiveSheet.Cells.SpecialCells(xlLastCell).Column
Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Delete
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
'owb.Close False
sFil = Dir
Loop
Application.ScreenUpdating = True
End Sub
Bài đã được tự động gộp:


Anh/chi xem giúp em sao lại không thực hiện được dòng lệnh Range(Cells(1, 1), Cells(xLastRow, xLastcolumn)).Delete ạ
Với VBA đều làm được tuốt ...có điều bạn phải kiên trì học hỏi...
Làm theo yêu cầu của bạn 1 lần thì dễ ... nhưng có thay đổi hoặc phát sinh thêm thì biết hỏi ai ...
Đừng tự làm khó mình bằng những thứ lằng ngằng, chi tiết dư thừa khó quản lý ... như tạo 25 sheet cho 25 ncc ..
Bằng vài công thức đơn giản , thủ thuật hide ... bạn tạo cho minh 1 file sáng sủa, ngắn gọn, chuyên nghiệp...
Chỉ 1 sheet Tong và 1 ô J5, bạn đã quản lý được 25 sheet kia mà không phải tới lui , lui tới...
Chúc bạn vui vẻ mạnh khỏe và thành đạt trong cuộc sống !
Nếu còn thắc mắc gì cứ vào GPE nhờ trợ giúp !
 

File đính kèm

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
Với VBA đều làm được tuốt ...có điều bạn phải kiên trì học hỏi...
Làm theo yêu cầu của bạn 1 lần thì dễ ... nhưng có thay đổi hoặc phát sinh thêm thì biết hỏi ai ...
Đừng tự làm khó mình bằng những thứ lằng ngằng, chi tiết dư thừa khó quản lý ... như tạo 25 sheet cho 25 ncc ..
Bằng vài công thức đơn giản , thủ thuật hide ... bạn tạo cho minh 1 file sáng sủa, ngắn gọn, chuyên nghiệp...
Chỉ 1 sheet Tong và 1 ô J5, bạn đã quản lý được 25 sheet kia mà không phải tới lui , lui tới...
Chúc bạn vui vẻ mạnh khỏe và thành đạt trong cuộc sống !
Nếu còn thắc mắc gì cứ vào GPE nhờ trợ giúp !
Cảm ơn anh/chị/bạn đã giúp đỡ.
Mà tôi xin giới thiệu cho tiện xưng hô ạ. Tôi tên Học, sn 1997, nam giới ạ. Còn anh/chị/bạn?
 

LEHOC

Thành viên chính thức
Tham gia ngày
11 Tháng một 2017
Bài viết
84
Được thích
0
Điểm
168
Cảm ơn anh/chị/bạn đã giúp đỡ.
Mà tôi xin giới thiệu cho tiện xưng hô ạ. Tôi tên Học, sn 1997, nam giới ạ. Còn anh/chị/bạn?
Làm theo mẫu file demo2 của anh khá là gọn gàng, nhưng em muốn tạo đây là file mẫu để sau này em cần làm việc thì chỉ cần chọn tới file khác (cấu trúc giống như file mẫu, nhưng số hàng không cố định) thì file mẫu sẽ copy sheet 1 bên file nguồn qua Sheets("Tong") bên file mẫu (nếu sau khi copy sang file mẫu bị thừa dữ liệu hàng thì loại bỏ) và làm việc như bình thường, nhưng hiện tại em làm theo phương pháp copy dữ liệu sang thì bị mất công thức bên Sheets("Tong") của file mẫu nên không thực hiện được công việc nữa ạ.
Anh xem giúp em có cách nào tối ưu hơn không ạ, em đính kèm file mẫu em đã tự tạo dựa trên file demo1 của anh, và 2 file dữ liệu nguồn để làm việc, anh xem giúp em với ạ.
Em cảm ơn anh!
 

File đính kèm

Tống Văn Đệ

Thành viên thường trực
Tham gia ngày
27 Tháng mười 2007
Bài viết
246
Được thích
173
Điểm
695
Tuổi
64
Nơi ở
Tân Thành, BRVT
Tôi tên ĐỆ, 63 t , sống BRVT.. gọi anh là được rồi ...
Nếu là tôi , tôi bố trí dữ liệu vào 1 sheet phát sinh thôi ( có thể lên đến cả triệu đồng...)
Từ sheet này ta có thể lọc, thống kê ..... hay làm báo cáo các kiểu đều được...
Thậm chí có thể tách thành từng nhiều file theo tiêu chí column để gởi cho từng ncc
 

File đính kèm

Top Bottom