VBA Macro used in the Microsoft Office Excel Application

Excel Create Worksheet per Filter Value | VBA Macro #16

Share on facebook
Share on twitter
Share on linkedin
This is an Excel macro that will filter a column and create a new worksheet for each unique value found. By default, the active column selected will be filtered. If the active column selected is blank an InputBox will ask for the column number to filter. (Example: A=1, B=2, C=3, etc.) Once a column has been identified the duplicate values will be removed and what remains will be used to determine how many worksheets to create. The Excel Create Worksheet per Filter Value macro will then pull in the relevant information into each worksheet. This macro is an efficient way to view your data in separate worksheets. You could filter and checkmark one option at a time but this is labor some, especially if you want to analyze each value independently. It takes even more time to copy and paste information into its own worksheet. Using VBA, you can eliminate the manual work and complete all these actions at once!

See it in Action!

Watch this video to see this macro in action.

The Code

Here is the code for this macro. Make sure the following References are setup before running it: Visual Basic For Applications, Microsoft Excel 16.0 Object Library, OLE Automation, Microsoft Office 16.0 Object Library
'Leverage & Lean "Less Clicks, More Results"
Sub CreateWorksheetFilterValue()
' Means variable is in use
Dim ActiveColumn As Integer '
Dim ActiveWorksheetName As String '
Dim Counter As Integer '
Dim DupLastColumnLetter As String '
Dim DupLastRow As Integer '
Dim LastColumnLetter As String '
Dim LastColumnNumber As Integer '
Dim LastRow As Integer '
Dim WorksheetName As String '
Dim WS As Worksheet '

On Error GoTo LeverageLean

ActiveWorksheetName = ActiveSheet.Name 'What is the Active Sheet's Name
LastColumnNumber = Cells(1, Columns.Count).End(xlToLeft).Column 'Identify Last Column Number
LastColumnLetter = Replace(Cells(1, LastColumnNumber).Address(True, False), "$1", "") 'Identify Last Column Letter
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Identify Last Row on worksheet

ActiveColumn = ActiveCell.Column 'What is the Active Column to filter

If ActiveColumn > LastColumnNumber Then
ActiveColumn = InputBox("What column do you want to filter?" & vbNewLine & vbNewLine & "Please use a number A=1, B=2, C=3, etc.") 'Pick a column with data in it
ElseIf ActiveColumn > LastColumnNumber Then
Exit Sub
End If

'Copy Column information and remove duplicates
Columns(ActiveColumn).Select
Selection.Copy
Columns(LastColumnNumber + 2).Select
ActiveSheet.Paste
DupLastColumnLetter = Replace(Cells(1, LastColumnNumber + 2).Address(True, False), "$1", "") 'Identify Column Letter in Duplicate Column
ActiveSheet.Range(DupLastColumnLetter & "1:" & DupLastColumnLetter & LastRow).RemoveDuplicates Columns:=1, Header:=xlYes
DupLastRow = Cells(Rows.Count, LastColumnNumber + 2).End(xlUp).Row 'Identify Last Row Number in Duplicate Column

'If there are more then 50 values Exit the Sub
If DupLastRow > 50 Then
Columns(LastColumnNumber + 2).Delete
Range("A1").Select
MsgBox "Exited because " & DupLastRow & " tabs were going to be created."
Exit Sub
End If

Counter = 2 'Assuming there is a header row

'Loop through each duplicate value copy and paste information to appropriate worksheet
Do Until Counter > DupLastRow
Sheets(ActiveWorksheetName).Select
WorksheetName = Cells(Counter, LastColumnNumber + 2).Value
ActiveSheet.Range("$A$1:$" & LastColumnLetter & "$" & LastRow).AutoFilter Field:=ActiveColumn, Criteria1:=WorksheetName
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Set WS = Sheets.Add(After:=Sheets(Sheets.Count))
WS.Name = WorksheetName 'Use the duplicate value as a tab name
Range("A1").Select
ActiveSheet.Paste
Counter = Counter + 1
Loop

'Clear the filter and delete the duplicates column
Sheets(ActiveWorksheetName).Select
ActiveSheet.AutoFilterMode = False
Range("A1").Select
Columns(LastColumnNumber + 2).Delete

MsgBox ("A Worksheet has been created for each Filter Value!")

Exit Sub

LeverageLean:
MsgBox ("Looks like " & Err.Number & " - " & Err.Description & vbNewLine & vbNewLine & "Don't hesitate to email me: brentschneider@leveragelean.com")

End Sub
'Stay Awesome

Macro Monday

Here is the Macro Monday video this macro was featured in. Watch this video to learn how to get the most out of this macro and start using it today!

Customization

These lines of code can be customized to personalize this macro.
40. If DupLastRow > 50 Then – If the filtered column returns more than 50 values the macro will exit to ensure the Excel can handle the request. Update this number to reflect how you want this to behave.
47. Counter = 2 ‘Assuming there is a header row – If you are not working with a header row then you should change Counter = 1
67. ActiveSheet.AutoFilterMode = False – If you don’t want the filter to be removed from the first spreadsheet make this line a comment with ‘
69. Columns(LastColumnNumber + 2).Delete – If you don’t want the duplicates column to be deleted from the first spreadsheet make this line a comment with ‘
71. MsgBox (“A Worksheet has been created for each Filter Value!”) – If you don’t want this macro to finish with a MsgBox then make this line a comment with ‘
Subscribe
Notify of
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] Share on facebook Share on twitter Share on linkedin You have your data in Worksheets but you need separate Workbooks. The tedious way is to open a bunch of blank Workbooks. Then copy and paste information from each Worksheet and save each Workbook onto your computer. Good news is there is a better way with VBA! Turn Worksheets into Workbooks is an Excel macro that will take existing worksheets and save them as their own workbook.   By default, the path of the Active Workbook will be used so the new Workbooks are saved at the same location. (Customize:… Read more »

trackback

[…] This Excel Create Emails with Workbooks Attached macro can be used as the final action after using Creating a Worksheet per Filter Value and Turning Worksheets into Workbooks.  These macros used in this sequence provides an efficient […]

trackback

[…] Share on facebook Share on twitter Share on linkedin You have your data in Worksheets but you need separate Workbooks. The tedious way is to open a bunch of blank Workbooks. Then copy and paste information from each Worksheet and save each Workbook onto your computer. Good news is there is a better way with VBA! Save Worksheets as Workbooks is an Excel macro that will take existing worksheets and save them as their own workbook.   By default, the path of the Active Workbook will be used so the new Workbooks are saved at the same location. (Customize:… Read more »

trackback

[…] on linkedin This macro is the combination of 3 Excel macros:  Create Worksheet per Filter Value | VBA Macro #16, Save Worksheets as Workbooks | VBA Macro #18, and Create Emails with Workbooks Attached | VBA […]

Search for Excel Macros

Recent Macros

VBA Macro used in the Microsoft Office Outlook Application

Outlook Send Same Email to Different Recipients | VBA Macro #31

To BCC or to not BCC?  That is the question that comes to mind when emailing a variety of different recipients.  This is especially important if you are working with multiple clients.  You can BCC recipients so they can’t click reply all. Recipients won’t see who was emailed but that is actually the problem.  The value is knowing who was emailed so customers know if additional follow-up is needed.  Instead you can CC recipients but once someone hits Reply All the conversation can get out of control.  This can create a bigger problem if the email thread is across multiple parties. Sending separate emails creates more value for the customer but how do you do this efficiently and effectively? You could create new emails do a lot of copying and pasting but this isn’t a sustainable process. Good news is there is always a better way with VBA! Our new Outlook macro makes sending the same email to different recipients so easy!

VBA Macro used in the Microsoft Office Excel Application

Excel Find and Replace across Multiple Word Documents | VBA Macro #30

Say a company rebranded and changed locations.  How would you handle updating all the necessary internal documents with the new company name, address, phone number, and email address? This can be a massive undertaking for any company which is why we created the Excel Find and Replace across Multiple Word Documents macro! This is an Excel macro that will Find and Replace values in Multiple Word Documents. This Excel macro is a great way to maintain Word Documents that are routinely changing information.

VBA Macro used in the Microsoft Office Word Application

Word Create Outlook Email with Selected Text | VBA Macro #29

Have you ever been prompted to send a follow up email while working in Word?  Maybe you are reviewing a meeting agenda or reading a final draft for a new company policy. You can navigate to Outlook create a new email and copy paste the necessary text in.  This takes a bit of time and isn’t very efficient.  Instead try using our Word Macro Create Outlook Email with Selected Text!  This macro will generate an Outlook email directly out of Word pulling in any text you have selected into the Email Body.  This macro is a better way to generate a follow up email helping you get a quicker response. Instead of writing reminders on Post-it notes start using this macro Create Outlook Email with Selected Text today!

First time using VBA?

The Developer Tab is an additional section of the ribbon when activated allows you access to Visual Basic in Applications like Excel, Outlook, Word.
Setup Now
Once the Developer Tab is available you will have the capability to update your security to allow Macros to run in the current application.
Setup Now
A sub of code is a collection of objects and variables. For the code to successfully run a library of references needs to be set.
Setup Now

Looking for more?

Subscribe as an Insider to receive additional rights.

Contact Us

Looking to improve your computer processes?
Leverage & Lean is here to help!

Copyright © 2019 Leverage & Lean – Uptown Style WordPress theme by GoDaddy