Results 1 to 10 of 18

Thread: 10$ For VBA Code Split Data To Multiple Workbook Based On Unique Values In A Column

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Member
    Join Date
    Dec 2012
    Posts
    43
    Rep Power
    0
    [CODE]file is uploaded here https://skydrive.live.com/redir?resid=D7C00A2BF29043E0!257



    for the spliting part code. i have found the following code from search and it somehow does not work. perhaps needs some

    Code:
    Sub SplitWorkbook(Optional colLetter As String, Optional SavePath As String)
    If colLetter = "" Then colLetter = "P"
    Dim lastValue As String
    Dim hasHeader As Boolean
    Dim wb As Workbook
    Dim c As Range
    Dim currentRow As Long
    hasHeader = True 'Indicate true or false depending on if sheet  has header row.
    
    If SavePath = "" Then SavePath = ThisWorkbook.Path
    'Sort the workbook.
    ThisWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range(colLetter & ":" & colLetter), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ThisWorkbook.Worksheets(1).Sort
        .SetRange Cells
        If hasHeader Then ' Was a header indicated?
            .Header = xlYes
        Else
            .Header = xlNo
        End If
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    For Each c In ThisWorkbook.Sheets(1).Range("P:P")
        If c.Value = "" Then Exit For
        If c.Row = 1 And hasHeader Then
        Else
            If lastValue <> c.Value Then
                If Not (wb Is Nothing) Then
                    wb.SaveAs SavePath & "\" & lastValue & ".xlsb"
                    wb.Close
                End If
                lastValue = c.Value
                currentRow = 1
                Set wb = Application.Workbooks.Add
            End If
            ThisWorkbook.Sheets(1).Rows(c.Row & ":" & c.Row).Copy
            wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Select
            wb.Sheets(1).Paste
    
        End If
    Next
    If Not (wb Is Nothing) Then
        wb.SaveAs SavePath & "\" & lastValue & ".xlsb"
        wb.Close
    End If
    End Sub

    https://www.youtube.com/channel/UCnxwq2aGJRbjOo_MO54oaHA
    https://eileenslounge.com/viewtopic.php?p=326972#p326972
    https://eileenslounge.com/viewtopic.php?p=326853#p326853
    https://eileenslounge.com/viewtopic.php?p=326446#p326446
    https://eileenslounge.com/viewtopic.php?f=27&t=41986
    https://eileenslounge.com/viewtopic.php?p=325610#p325610
    https://eileenslounge.com/viewtopic.php?p=325609#p325609
    https://eileenslounge.com/viewtopic.php?p=325605#p325605
    https://eileenslounge.com/viewtopic.php?p=325548#p325548
    https://eileenslounge.com/viewtopic.php?p=316441#p316441
    https://eileenslounge.com/viewtopic.php?p=324736#p324736
    https://eileenslounge.com/viewtopic.php?p=324990#p324990
    https://eileenslounge.com/viewtopic.php?f=27&t=41937&p=325485#p325485
    https://eileenslounge.com/viewtopic.php?p=325609#p325609
    https://eileenslounge.com/viewtopic.php?p=325610#p325610
    https://www.youtube.com/watch?v=3t8Mk4URi6g&lc=UgzoakhRXOsCaoRm_Nd4AaABAg. 8xzeMdC8IOGADdPM65i9PG
    https://www.youtube.com/watch?v=3t8Mk4URi6g&lc=UgzoakhRXOsCaoRm_Nd4AaABAg. 8xzeMdC8IOGADdPQHFk_zm
    http://www.eileenslounge.com/viewtopic.php?p=324457#p324457
    http://www.eileenslounge.com/viewtopic.php?p=324064#p324064
    http://www.eileenslounge.com/viewtopic.php?p=323960#p323960
    https://www.youtube.com/watch?v=7VwD9KuyMk4&lc=UgyZCnNfnZRfgwzDlQF4AaABAg
    https://www.youtube.com/watch?v=7VwD9KuyMk4&lc=UgyZCnNfnZRfgwzDlQF4AaABAg. ADd4m2zp_xDADd6Nnotj1C
    s://www.youtube.com/watch?v=7VwD9KuyMk4&lc=UgySdtXqcaA27wQLd1t4AaABAg
    http://www.eileenslounge.com/viewtopic.php?p=323959#p323959
    http://www.eileenslounge.com/viewtopic.php?f=30&t=41784
    http://www.eileenslounge.com/viewtopic.php?p=323966#p323966
    http://www.eileenslounge.com/viewtopic.php?p=323959#p323959
    http://www.eileenslounge.com/viewtopic.php?p=323960#p323960
    http://www.eileenslounge.com/viewtopic.php?p=323894#p323894
    http://www.eileenslounge.com/viewtopic.php?p=323843#p323843
    https://www.youtube.com/channel/UCnxwq2aGJRbjOo_MO54oaHA
    Last edited by DocAElstein; 05-25-2025 at 12:25 PM.

  2. #2
    Member
    Join Date
    Dec 2012
    Posts
    43
    Rep Power
    0
    i also worked out this code but it creates the workbooks but somehow some of the data is missing on those created workbooks

    Code:
    Sub DistributeRowsToNewWBS()
    Dim wbNew As Workbook
    Dim wsData As Worksheet
    Dim wsCrit As Worksheet
    Dim wsNew As Worksheet
    Dim rngCrit As Range
    Dim LastRow As Long
        
        Set wsData = Worksheets("Expenditure_Details") ' name of worksheet with the data
        Set wsCrit = Worksheets.Add
        
        LastRow = wsData.Range("A" & Rows.Count).End(xlUp).Row
        
        ' column H has the criteria
        wsData.Range("p1:p" & LastRow).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=wsCrit.Range("A1"), Unique:=True
        
        Set rngCrit = wsCrit.Range("A2")
        While rngCrit.Value <> ""
            Set wsNew = Worksheets.Add
            ' change E to reflect columns to copy
            wsData.Range("A1:bp" & LastRow).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCrit.Offset(-1).Resize(2), CopyToRange:=wsNew.Range("A1"), Unique:=True
            wsNew.Name = rngCrit
            wsNew.Copy
            Set wbNew = ActiveWorkbook
            ' saves new workbook in path of existing workbook
            wbNew.SaveAs ThisWorkbook.Path & "\" & rngCrit
            wbNew.Close SaveChanges:=True
            Application.DisplayAlerts = False
            wsNew.Delete
            rngCrit.EntireRow.Delete
            Set rngCrit = wsCrit.Range("A2")
        Wend
        
        wsCrit.Delete
        Application.DisplayAlerts = True
        
    End Sub

Similar Threads

  1. Replies: 10
    Last Post: 05-23-2013, 12:30 PM
  2. Replies: 4
    Last Post: 05-01-2013, 09:49 PM
  3. Replies: 2
    Last Post: 04-14-2013, 09:15 PM
  4. Replies: 2
    Last Post: 03-05-2013, 07:34 AM
  5. Group Pivot Data Based On Row Values In One Column
    By mrmmickle1 in forum Excel Help
    Replies: 10
    Last Post: 10-09-2012, 11:46 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •