tách sheet thành từng file Excel riêng biệt

Liên hệ QC

chungk54neu

Thành viên mới
Tham gia
3/6/19
Bài viết
45
Được thích
7
Chào mọi người, mọi người hướng dẫn em cách tách sheet thành từng file Excel riêng biệt dựa vào điều kiện có sẳn với ạ, làm thủ công với 1 file lớn thì lâu quá ạ.
Ví dụ ở đây em có 1 file, em phải cắt dựa vào mã NPP (dòng có mã NPP giống nhau cắt thành 1 file ạ)
cảm ơn tất cả mọi người!
 

File đính kèm

Thử code này
Chào mọi người, mọi người hướng dẫn em cách tách sheet thành từng file Excel riêng biệt dựa vào điều kiện có sẳn với ạ, làm thủ công với 1 file lớn thì lâu quá ạ.
Ví dụ ở đây em có 1 file, em phải cắt dựa vào mã NPP (dòng có mã NPP giống nhau cắt thành 1 file ạ)
cảm ơn tất cả mọi người!
Mã:
Sub Export()
  Dim dic As Object, rngSrc As Range, wkbNew As Workbook
  Dim aIDs, n As Long
  Dim sFolder As String, FileName As String, SheetName As String
  sFolder = ThisWorkbook.Path & "\Export_"    
  Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000")  
  aIDs = rngSrc.Offset(1).Columns("A:B").Value            
  Set dic = CreateObject("Scripting.Dictionary")
  Application.ScreenUpdating = False
  rngSrc.Range("IV1").Value = rngSrc.Range("A1").Value    
  For n = 1 To UBound(aIDs, 1)
    If Len(aIDs(n, 1)) * Len(aIDs(n, 2)) Then
      SheetName = aIDs(n, 1):  FileName = aIDs(n, 1)  
      If Not dic.Exists(SheetName) Then
        dic.Add SheetName, Empty
        Set wkbNew = Workbooks.Add(1)
        wkbNew.Sheets(1).Name = SheetName          
        rngSrc.Range("IV2").Value = "'=" & SheetName
        rngSrc.AdvancedFilter 2, rngSrc.Range("IV1:IV2"), wkbNew.Sheets(1).Range("A1")
        wkbNew.SaveAs sFolder & FileName, xlOpenXMLWorkbook      
        wkbNew.Close False
      End If
    End If
  Next
  Application.ScreenUpdating = True
  rngSrc.Range("IV1:IV2").ClearContents
  If dic.Count Then MsgBox "Ða luu " & dic.Count & " workbooks", , "THÔNG BÁO"
End Sub
 

File đính kèm

bạn ơi,dùng VBA ạ, bạn dạy mình với :(((
 
Thử code này

Mã:
Sub Export()
  Dim dic As Object, rngSrc As Range, wkbNew As Workbook
  Dim aIDs, n As Long
  Dim sFolder As String, FileName As String, SheetName As String
  sFolder = ThisWorkbook.Path & "\Export_"  
  Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000")
  aIDs = rngSrc.Offset(1).Columns("A:B").Value          
  Set dic = CreateObject("Scripting.Dictionary")
  Application.ScreenUpdating = False
  rngSrc.Range("IV1").Value = rngSrc.Range("A1").Value  
  For n = 1 To UBound(aIDs, 1)
    If Len(aIDs(n, 1)) * Len(aIDs(n, 2)) Then
      SheetName = aIDs(n, 1):  FileName = aIDs(n, 1)
      If Not dic.Exists(SheetName) Then
        dic.Add SheetName, Empty
        Set wkbNew = Workbooks.Add(1)
        wkbNew.Sheets(1).Name = SheetName        
        rngSrc.Range("IV2").Value = "'=" & SheetName
        rngSrc.AdvancedFilter 2, rngSrc.Range("IV1:IV2"), wkbNew.Sheets(1).Range("A1")
        wkbNew.SaveAs sFolder & FileName, xlOpenXMLWorkbook    
        wkbNew.Close False
      End If
    End If
  Next
  Application.ScreenUpdating = True
  rngSrc.Range("IV1:IV2").ClearContents
  If dic.Count Then MsgBox "Ða luu " & dic.Count & " workbooks", , "THÔNG BÁO"
End Sub
Thử code này

Mã:
Sub Export()
  Dim dic As Object, rngSrc As Range, wkbNew As Workbook
  Dim aIDs, n As Long
  Dim sFolder As String, FileName As String, SheetName As String
  sFolder = ThisWorkbook.Path & "\Export_"   
  Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000") 
  aIDs = rngSrc.Offset(1).Columns("A:B").Value           
  Set dic = CreateObject("Scripting.Dictionary")
  Application.ScreenUpdating = False
  rngSrc.Range("IV1").Value = rngSrc.Range("A1").Value   
  For n = 1 To UBound(aIDs, 1)
    If Len(aIDs(n, 1)) * Len(aIDs(n, 2)) Then
      SheetName = aIDs(n, 1):  FileName = aIDs(n, 1) 
      If Not dic.Exists(SheetName) Then
        dic.Add SheetName, Empty
        Set wkbNew = Workbooks.Add(1)
        wkbNew.Sheets(1).Name = SheetName         
        rngSrc.Range("IV2").Value = "'=" & SheetName
        rngSrc.AdvancedFilter 2, rngSrc.Range("IV1:IV2"), wkbNew.Sheets(1).Range("A1")
        wkbNew.SaveAs sFolder & FileName, xlOpenXMLWorkbook     
        wkbNew.Close False
      End If
    End If
  Next
  Application.ScreenUpdating = True
  rngSrc.Range("IV1:IV2").ClearContents
  If dic.Count Then MsgBox "Ða luu " & dic.Count & " workbooks", , "THÔNG BÁO"
End Sub
bạn ơi giúp mình với, mình đã chạy file bạn up lên, chỉ cắt được thành 28 file nhỏ, nếu cắt đủ file thì phải là 70 file, bạn xem lại code giúp mình với ạ, mình cảm ơn!
 
bạn ơi giúp mình với, mình đã chạy file bạn up lên, chỉ cắt được thành 28 file nhỏ, nếu cắt đủ file thì phải là 70 file, bạn xem lại code giúp mình với ạ, mình cảm ơn!
Mình để tách 9000 dòng thôi, nếu dữ liệu bạn nhiều hơn thì sữa chỗ này lại thành số dòng trong file bạn hoặc thành 65000 dòng
Mã:
Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000")
Bài đã được tự động gộp:

thì chuyển cả sheet thôi, đâu cần nội dung trong sheet là gì? mình làm mấy câu lệnh vlookup bảng dữ liệu tổng thôi à
Code đó đã dán gias tri và giữ format rồi mà bạn.
 
Mình để tách 9000 dòng thôi, nếu dữ liệu bạn nhiều hơn thì sữa chỗ này lại thành số dòng trong file bạn hoặc thành 65000 dòng
Mã:
Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000")
Bài đã được tự động gộp:


Code đó đã dán gias tri và giữ format rồi mà bạn.
Cảm ơn bạn!
 
Mình để tách 9000 dòng thôi, nếu dữ liệu bạn nhiều hơn thì sữa chỗ này lại thành số dòng trong file bạn hoặc thành 65000 dòng
Mã:
Set rngSrc = ThisWorkbook.Worksheets("Sheet8").Range("A1:AL9000")
Bài đã được tự động gộp:


Code đó đã dán gias tri và giữ format rồi mà bạn.
Code nào!?

mình muốn lưu ra file không có điều kiện nhà phân phối gì hết nha
 
Web KT

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

Back
Top Bottom