How to copy sheet and rename based on cell value in Excel?
Normally, you can apply the Move or Copy feature to copy a worksheet, and then type a new name for the copy manually as you need. But, have you ever tried to rename the sheet based on a cell value after copying the worksheet? This article, I will talk about how to rename the worksheet based on cell value automatically when you make a copy.
Copy a worksheet and rename based on cell value with VBA code
The following VBA code can help you to copy a worksheet and rename it with a specific cell value automatically, please do as this:
1. Activate the worksheet that you want to copy, and then hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.
2. Click Insert > Module, and paste the following code in the Module Window.
VBA code: Copy a worksheet and rename with a cell value:
Dim ws As Worksheet
Set wh = Worksheets(ActiveSheet.Name)
If wh.Range("A1").Value <> "" Then
ActiveSheet.Name = wh.Range("A1").Value
3. And then press F5 key to run this code, and your current worksheet has been copied into current workbook after all the worksheets, and it is renamed with the cell value you specified, see screenshot:
Note: In the above code, the cell reference A1 is the cell value you want to rename for the new copied sheet, you can change it to your need.
Copy a worksheet multiple times and rename based on cell values with Kutools for Excel
The above code can only rename with one cell value, if you need to copy the sheet multiple times and rename them based on a list of cell values, Kutools for Excel’s Create Sequence Worksheet may help you to finish this task as quickly as you can.
Kutools for Excel: with more than 300 handy Excel add-ins, free to try with no limitation in 30 days.
Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
More than 300 powerful features. Supports Office/Excel
2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features
30-day free trial. 60-day money back guarantee.
Your code is what I have been looking for, however the cell contents that I wish to use to rename the sheet is a date.
For example, on the first sheet, cell A2 displays a date as Monday 3 April 2017.
What I would like to happen is when the next sheet is created by the macro would be to take the date from A2, add 7 to display, for example, "Monday 10 July, 2017" but rename the new sheet in the dd-mm-yy format, so "10-07-17".
Is this possible?
By the way, I have Kutools for Excel, but this spreasheet will be a blood pressure record for my dad who doesnt have Kutools.
The code below works great. My question is, is it possible to automatically open the new worksheet (based on A1) and delete the content from the previous sheet as it is being used as the template.
Sub Copyrenameworksheet() 'Updateby Extendoffice 20160704 Dim ws As Worksheet Set wh = Worksheets(ActiveSheet.Name) ActiveSheet.Copy After:=Worksheets(Sheets.Count) If wh.Range("A1").Value "" Then ActiveSheet.Name = wh.Range("A1").Value End If wh.Activate End Sub