Tip: Other languages are Google-Translated. You can visit the English version of this link.
Log in


How to copy one chart format to others in Excel?

Supposing there are multiple different types of charts in your worksheet, you have formatted one chart to your need, and now you want to apply this chart formatting to other charts. Of course, you can format others manually one by one, but this will waste much time, are there any quick or handy ways for you to copy one chart format to others in Excel?

Copy one chart format to other charts with Paste Special function

Copy one chart format to other charts with creating a template

Copy one chart format to other chart with VBA code

arrow blue right bubble Copy one chart format to other charts with Paste Special function

Please look at the following screenshot, the first chart has the formatting which you need, and now, you want to apply its formatting to other charts.


This Paste Special function can help you to copy one chart format to other charts with following steps:

1. Select the chart that you want to copy its format to others.

2. Then on the Home tab, click Copy, see screenshot:


3. And then select another chart that you want to reformat, then click Home > Paste > Paste Special, and in the popped out dialog, check Formats under Paste option. See screenshots:

doc-copy-chart-format3 -2 doc-copy-chart-format4

4. Then click OK, and the chart formatting has been applied to this chart, and then repeat this procedure for each chart you want to reformat. At last you will get the following results:


arrow blue right bubble Copy one chart format to other charts with creating a template

You can also save your formatted chart as a chart template, and then change other charts type to your template chart type.

1. Select your needed formatting chart, on the Design tab, click Save As Template, see screenshot:


2. In the Save Chart Template window, specify a name for your template chart, and then click Save. And it will be saved with the rest of the chart types, in a Templates folder, it can be chosen when you create a new chart.


3. After creating your template chart, then you can change other chart types to this template, select the chart which needed to be reformatting and right click, choose Change Chart Type from the context menu, see screenshot:


4. In the Change Chart Type dialog, click Templates from the left pane, and select your created chart template under My Templates option.


5. Then click OK to close this dialog, and the chart's formatting has been copied to this selected chart. See screenshot:


6. Then repeat the above step 3- step5 to copy the format to other charts one by one.

arrow blue right bubble Copy one chart format to other chart with VBA code

With above two methods, you must paste or change the chart's formatting one by one, if there are multiple charts need to be reformatted, the following VBA code can help you apply one chart format to others at once in the current worksheet.

1. Select the chart that you want to apply its format to other charts.

2. Hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications Window.

3. Click Insert > Module, and paste the following macro in the Module Window:

VBA code: Copy one chart format to other chart at once

Sub CopyChartFormats()
Dim Ws As Worksheet
Dim Cht As ChartObject
Dim xChart As Chart
Dim bTitle As Boolean
Dim bXTitle As Boolean
Dim bYTitle As Boolean
Dim sTitle As String
Dim sXTitle As String
Dim sYTitle As String
Dim iSource As Long
Dim iTarget As Long
Dim iTotal As Long
Dim iSeries As Long
Dim vSource As Variant
Dim vTarget As Variant
Application.ScreenUpdating = False
Set xChart = Application.ActiveChart
iSource = xChart.SeriesCollection.Count
Set Ws = Application.ActiveSheet
  For Each Cht In Ws.ChartObjects
    If Ws.Name = xChart.Parent.Parent.Name And _
        Cht.Name = xChart.Parent.Name Then
      With Cht.Chart
       iTarget = .SeriesCollection.Count
        bTitle = .HasTitle
        If bTitle Then
          sTitle = .ChartTitle.Characters.Text
        End If
        If .HasAxis(xlCategory) Then
          bXTitle = .Axes(xlCategory).HasTitle
          If bXTitle Then
            sXTitle = .Axes(xlCategory).AxisTitle.Characters.Text
          End If
        End If
        If .HasAxis(xlValue) Then
          bYTitle = .Axes(xlValue).HasTitle
          If bYTitle Then
            sYTitle = .Axes(xlValue).AxisTitle.Characters.Text
          End If
        End If
        .Paste Type:=xlFormats
        iTotal = .SeriesCollection.Count
        If iTotal = iSource + iTarget Then
          For iSeries = 1 To iTarget
            vSource = Split(.SeriesCollection(iSeries).Formula, ",")
            vTarget = Split(.SeriesCollection(iSeries + iSource).Formula, ",")
            vTarget(UBound(vTarget)) = vSource(UBound(vSource))
            .SeriesCollection(iSeries).Formula = Join(vTarget, ",")
          For iSeries = iTotal To iTarget + 1 Step -1
        End If
        If bXTitle Then
          .Axes(xlCategory).HasTitle = True
          .Axes(xlCategory).AxisTitle.Characters.Text = sXTitle
        End If
        If bYTitle Then
          .Axes(xlValue).HasTitle = True
          .Axes(xlValue).AxisTitle.Characters.Text = sYTitle
        End If
                If bTitle Then
          .HasTitle = True
          .ChartTitle.Characters.Text = sTitle
        End If
      End With
    End If
Application.ScreenUpdating = True
End Sub

4. Then press F5 key to run this code, and all other charts in current worksheet are applied with the formatting of the selected chart immediately.

Related articles:

How to add image as background into chart in Excel?

How to add arrows to line/column chart in Excel?

Recommended Productivity Tools

Ribbon of Excel (with Kutools for Excel installed)

300+ Advanced Features Increase Your Productivity by 71%, and Help You To Stand Out From Crowd!

Would you like to complete your daily work quickly and perfectly? Kutools For Excel brings 300+ cool and powerful advanced features (Combine workbooks, sum by color, split cell contents, convert date, and so on...) for 1500+ work scenarios, helps you solve 82% Excel problems.

  •  Deal with all complicated tasks in seconds, help to enhance your work ability, get success from the fierce competition, and never worry about being fired.
  •  Save a lot of work time, leave much time for you to love and care the family and enjoy a comfortable life now.
  •  Reduce thousands of keyboard and mouse clicks every day, relieve your tired eyes and hands, and give you a healthy body.
  •  Become an Excel expert in 3 minutes, and get admiring glance from your colleagues or friends.
  •  No longer need to remember any painful formulas and VBA codes, have a relaxing and pleasant mind, give you a thrill you've never had before.
  •  Spend only $39, but worth than $4000 training of others. Being used by 110,000 elites and 300+ well-known companies.
  •  60-day unlimited free trial. 60-day money back guarantee. Free upgrade and support for 2 years. Buy once, use forever.
  •  Change the way you work now, and give you a better life immediately!

Office Tab Brings Efficient And Handy Tabs to Office (include Excel), Just Like Chrome, Firefox, And New IE

  • Increases your productivity by 50% when viewing and editing multiple documents.
  • Reduce hundreds of mouse clicks for you every day, say goodbye to mouse hand.
  • Open and create documents in new tabs of same window, rather than in new windows.
  • Help you work faster and easily stand out from the crowd! One second to switch between dozens of open documents!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Ruta · 1 years ago
    Hello, Thank you for the code!
    However this line 20 makes a bug for me: iSource = xChart.SeriesCollection.Count
    I would appreciate your help!

    Thank you,
  • To post as a guest, your comment is unpublished.
    Melissa · 3 years ago
    hello. this works for me, to a degree. the format applies to my new chart just fine, but i also get the data from the first chart, that overrides my new chart data. more clearly, i have done chart 1 and love it! i also have chart 2, and don't love it. i want chart 2 to be formatted like chart 1. i click and copy chart 1. i click on chart 2, click paste>paste special>formats. now chart 2 has the appropriate format, but also has the data from chart 1. some chart 2 data remains, some has been replaced by chart 1 data. how do i only get format, not data?

    thank you!!