Hello Hornet222,
This macro will either create a new sheet with the company's name or append that company's data to the existing sheet. The macro assumes the company's name is in column "C" and the first row on the main sheet contains the headers.
'Written: April 27, 2011
'Author: Leith Ross
'Summary: Copies data defined as a group to another worksheet in the workbook.
' A specified column or columns is used to generate the group name. If
' a worksheet exits with this name then data is appended. If no sheet by
' that name exists then a new sheet is created using this name.
'
'NOTES: The first row of the data, regardless of the physical worksheet row number,
' is assumed to contain headers. This header information is copied over to
' a worksheet if the first available row is empty.
Sub CopyDataGroupToSheet()
Dim DstWks As Worksheet
Dim Headers As Range
Dim NextRow As Range
Dim R As Long
Dim Rng As Range
Dim RngEnd As Range
Dim SrcWks As Worksheet
Dim WksName As String
'Assign the Source Worksheet variable.
Set SrcWks = Worksheets("Sheet1")
Set Headers = SrcWks.UsedRange.Rows(1)
Set Rng = Headers.Offset(1, 0)
Set RngEnd = SrcWks.Cells(Rows.Count, Rng.Column).End(xlUp)
Set Rng = SrcWks.Range(Rng, RngEnd)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For R = 1 To Rng.Rows.Count
'Assign the Destination Worksheet variable.
'Here the second column holds the destination worksheet name.
WksName = Rng.Cells(R, "C")
'Check if the worksheet exists or not. If not, add a new sheet with the headers.
If WksName <> SrcWks.Name Then
On Error Resume Next
Set DstWks = Worksheets(WksName)
If Err <> 0 Then
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = WksName
Set DstWks = ActiveSheet
Err.Clear
End If
On Error GoTo 0
'Add the headers if this is the first row and its empty.
Set NextRow = DstWks.Cells(Rows.Count, "A").End(xlUp)
If NextRow.Row = 1 And NextRow = "" Then
Headers.Copy NextRow
End If
'Copy the data to next free row on the worksheet.
Set NextRow = NextRow.Offset(1, 0)
Rng.Rows(R).Copy NextRow
End If
Next R
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Bookmarks