When it comes to charts, PowerPoint provides you with a cornucopia of options. I see it like walking into your local sandwich shop and staring down at long glass cabinets full of delicious ingredients. “Would you like bar, line or bubble to start? Care for a dusting of axis, titles or legends? Can I sway you for a gridline, or two? Would you like to make your chart a duo and include a dessert? We have doughnuts!” Anyone feeling hungry?

But have you ever walked out of the shop feeling smug, strolled back to the office, and taken your first bite only to realize they forgot to add your hot sauce?! Tragedy! The sandwich is fine, it’s serving its purpose, but it’s lost its spice! And you’ve lost your appetite…

Placing that analogy on the shelf for a second, one of best things about charts in PowerPoint is that they’re ‘live’. Made a mistake inputting your weekly sales revenue? Not a problem! Hit Edit Data, tweak the worksheet and then close it. As if by magic the chart updates, and if you catch it fast enough, your boss won’t even notice. The problem is that these live charts can look a little dull. They have no spice! In fact, I’ve battled for a long time trying to make PowerPoint live charts more appealing.

Non-live charts – charts made using PowerPoint shapes or images – are easier to jazz up. You can use fun shapes, dynamic animation, and bold images to get creative. However, they are much fiddlier to edit. If you want to update the data in your graphs and charts regularly, live charts are the best option!

And, after lurking in PowerPoint’s preset charts section for far too long, I believe I have the answer. It just takes a little ‘out of the box’ thinking! And luckily, using live charts doesn’t mean that your data has to be dull. So, let’s go get our chart ‘spice’ back.

As I have a sweet tooth, I’m going to demo this approach with a doughnut chart. Let’s say I surveyed 100 people about whether they like doughnuts, pizza and tacos and the results were:

Doughnuts            Yes: 20    No: 80
Pizza                       Yes: 60    No: 40
Tacos                      Yes: 80    No: 20

Of course, I need to present this data to the world! So, let’s head to PowerPoint, insert a live chart (Insert > Chart > Pie > Doughnut), and input the data.

Screenshot of PowerPoint doughnut chart using data in body of article.

I’m going to start by getting rid of the standard graph colors and automatically generated layout. To make changes, right click on the chart then select Format Chart Area. Under Series Options you can adjust the size of the doughnut hole and, under Fill & Line, you can edit the colors/gradients of each segment. Then you can arrive at something like this:

Screenshot of the same chart as previously but the colors have changed, some of the segments have smooth gradients and others are faded back making the chart easier to read.

Okay, it’s getting better! But I can still add plenty of creative spice. What if I told you that you could round the segment edges and include icons AND it would stay as a live chart? Let’s go!

To round the edge of the segments that start at 12 o’clock on your doughnut follow these steps:

  1. Right click on your chart and select Edit Data
  2. In the Excel sheet, add a row at the top and enter a value of 0.01 for each column. This row will allow us to round the segment, so I’ve called it ‘Start – Round’.
  3. The row for the ‘yes’ responses is the only one you’ll edit when updating your data so name it something helpful like ‘YES (edit me)’
  4. Where the ‘No’ response data is, we’re going to add a simple Excel formula in each cell which subtracts the sum of the previous two values from 100 to autogenerate the ‘No’ value. In the example below you can see the formula is =100-SUM(B2:B3).
  5. Close the Excel sheet.

Screenshot of excel spreadsheet with the doughnut chart data in. One of the 'No' cells is selected and the formula us shown in the in formula bar

Once you’ve created this additional segment, you can manipulate its formatting for a creative design that’s still editable.

First, select the 0.01 data label. Then, navigate to the Format tab, under Insert Shapes select Change Shape and select the oval.

Screenshot of the same PowerPoint doughnut chart as before but with three new data labels at the 12 o'clock position. Each data label reads 0.01

Your data label should now be an oval. Under Size, edit the height so it matches the height of the doughnut segments. You can find out the height of the segments by selecting a segment, going to Format and looking under Size. Then, edit the width of the oval so it matches, making the shape a circle.

Screenshot of the PowerPoint user interface. One 0.01 data point is selected and the Format ribbon is open. The 'Size' option is highlighted showing that the height and width of the 0.01 data point oval is 1cm.

Then edit the fill, outline, and font color of the circle to match the next segment so the circle blends in. You may need to reposition the oval, so it lines up with the segment. It should look something like this:

Screenshot of the same doughnut chart, with a rounded start to the first segment.

You can follow the same process on the next rings of your chart, creating a natural, modern design and breaking the mold of the default PowerPoint styling.

Once you’ve done this for all of the segments, you can add a fourth category on the third row of your chart (as before with the value ‘0.01’) to each segment and amend your ‘No’ formula to include the extra cell. This will add a new data point you can manipulate at the end of the ‘yes’ sections.

Screenshot of an excel spreadsheet. One of the No cells is highlighted and the formula in the formula bar is =100-(B2+B3+B4)

Let’s add an icon here to represent each food category. First, create the icon you’d like to pop at the end of each segment. I simply inserted a circle with a white fill and outline that matches the relevant segment. I then grabbed a doughnut icon from the PowerPoint icons (if you want something special, check out this blog post on creating custom icons), and popped it in the center of the circle then grouped the two objects. Once done, copy the group, select your new 0.01 data point, then right click and select Format Data Label > Fill & Line > Picture or texture fill > Clipboard. (Depending on your graph sizing you may have to resize the icons, to even the horizontal and vertical sizing and make it a true circle, and possibly reposition the icon into the correct place.)

Screenshot of the doughnut chart. One of the segments has a doughnut icon on the end of the segment.

Doing this to all three segments will allow you to transform a plain old sugar doughnut into a wonderous, icing covered, exotically flavored, sprinkled doughnut. And, as the changes have been made to data points in the chart, the icons will react to any data updates and allow the chart to remain ‘live’.

Screenshot comparing the first, standard PowerPoint doughnut chart and the customized one. The text reads without hot sauce/with hot sauce

This ‘out of the box’ thinking and theory can be applied to lots of different auto charts in PowerPoint to help you showcase your data in a more creative way. Create the best chart (or sandwich) you can, and show it off to all your friends. Just don’t forget the hot sauce!

Leave a comment
Written by

Lucy Wyatt

Managing design consultant

View Lucy Wyatt's profile

Related articles

Nov 2022

Sometimes we struggle to find things and get frustrated when they don’t appear, whether it’s locating your house keys, finding Wally in a sea of Wally impostors or hunting down the partner to that lone sock at the bottom of the washing basket. Or maybe it’s replacing fonts that PowerPoint says are present in your file, but you just can’t find and your childhood Wally searching skills are letting you down. Well, this post can help you with PowerPoint, but you’ll have to find the sock yourself, sorry!

  1. Image of Marina Marina says:

    Hi.
    Could use help with this. Thanks.

    Do you know how to swap objects on slides with the same core name?

    Like textbox1 textbox 2 textbox 3 to swap places randomly and photo1 photo2 photo3 photo4 to swap places randomly between each other, all on the same slide?

    Is there any tool with this functionality, or how to fix this macro so it targets shapes with similar names:

    Sub ShuffleShapesOne()
    Dim oSlide As Slide, oShape As Shape, iShapesCount As Integer

    Set oSlide = ActivePresentation.Slides(Application.ActiveWindow.View.Slide.SlideIndex)
    iShapesCount = oSlide.Shapes.Count

    Dim sMsg As String

    If iShapesCount < 2 Then
    sMsg = "To run the program, more than one shape are needed in the current slide!"
    MsgBox sMsg, vbInformation, "Procedure Canceled"
    Exit Sub
    End If
    Dim oShapesNum()
    ReDim oShapesNum(iShapesCount)

    Dim i As Integer
    Dim iLeft As Double, iTop As Double, iHeight As Double, iWidth As Double
    Dim oShapesArr() As Double
    ReDim oShapesArr(iShapesCount, 3)
    For i = 1 To iShapesCount
    oShapesNum(i) = i
    With oSlide.Shapes(i)
    oShapesArr(i, 0) = .Left
    oShapesArr(i, 1) = .Top
    oShapesArr(i, 2) = .Height
    oShapesArr(i, 3) = .Width
    End With
    Next i

    Dim oShuffledArr As Variant
    oShuffledArr = SuffleNoReplace(oShapesNum)
    Dim iNum As Integer
    For i = 1 To iShapesCount
    iNum = oShuffledArr(i)

    With oSlide.Shapes(i)

    iLeft = oShapesArr(iNum, 0)
    iTop = oShapesArr(iNum, 1)
    iHeight = oShapesArr(iNum, 2)
    iWidth = oShapesArr(iNum, 3)
    .Left = iLeft
    .Top = iTop
    .Height = iHeight
    .Width = iWidth

    End With
    Next i

    sMsg = "Shapes shuffled with success."
    MsgBox sMsg, vbInformation, "Procedure terminated"

    End Sub

    • Image of Jamie Garroch Jamie Garroch says:

      That’s definitively technically feasible Marina and we have a Custom Development service which we can offer to facilitate that for you. Where did that macro come from. We can see that there is a dependant function SuffleNoReplace that is missing. Here is the link to the custom development service: https://www.brightcarbon.com/services/powerpoint-automation/

      • Image of Marina Marina says:

        Here is the full code, first one shuffle all on one slide, second on all slides.

        I am trying to add an option to focus on objects with name + numerical value.

        The developer I know created these codes for me.

        SHUFFLE ALL ON ONE SLIDE

        Sub ShuffleShapesOne()
        Dim oSlide As Slide, oShape As Shape, iShapesCount As Integer

        Set oSlide = ActivePresentation.Slides(Application.ActiveWindow.View.Slide.SlideIndex)
        iShapesCount = oSlide.Shapes.Count

        Dim sMsg As String

        If iShapesCount < 2 Then
        sMsg = "To run the program, more than one shape are needed in the current slide!"
        MsgBox sMsg, vbInformation, "Procedure Canceled"
        Exit Sub
        End If
        Dim oShapesNum()
        ReDim oShapesNum(iShapesCount)

        Dim i As Integer
        Dim iLeft As Double, iTop As Double, iHeight As Double, iWidth As Double
        Dim oShapesArr() As Double
        ReDim oShapesArr(iShapesCount, 3)
        For i = 1 To iShapesCount
        oShapesNum(i) = i
        With oSlide.Shapes(i)
        oShapesArr(i, 0) = .Left
        oShapesArr(i, 1) = .Top
        oShapesArr(i, 2) = .Height
        oShapesArr(i, 3) = .Width
        End With
        Next i

        Dim oShuffledArr As Variant
        oShuffledArr = SuffleNoReplace(oShapesNum)
        Dim iNum As Integer
        For i = 1 To iShapesCount
        iNum = oShuffledArr(i)

        With oSlide.Shapes(i)

        iLeft = oShapesArr(iNum, 0)
        iTop = oShapesArr(iNum, 1)
        iHeight = oShapesArr(iNum, 2)
        iWidth = oShapesArr(iNum, 3)
        .Left = iLeft
        .Top = iTop
        .Height = iHeight
        .Width = iWidth

        End With
        Next i

        sMsg = "Shapes shuffled with success."
        MsgBox sMsg, vbInformation, "Procedure terminated"

        End Sub

        Function SuffleNoReplace(ByVal oArr As Variant) As Variant

        Dim iDim As Integer
        iDim = UBound(oArr)

        Randomize Timer

        'Dim i As Integer, aVal As Integer, ok As Boolean, bVal As Integer, tmp As Integer
        Dim i, aVal, ok As Boolean, bVal, tmp

        If iDim = 2 Then
        oArr(1) = 2
        oArr(2) = 1
        GoTo endFunc

        End If

        For i = 1 To iDim
        aVal = i 'sujet A
        ok = False
        While ok = False

        bVal = aVal
        While bVal = aVal
        bVal = Int(iDim * Rnd) + 1
        Wend

        If oArr(bVal) aVal And oArr(aVal) bVal Then
        tmp = oArr(aVal): oArr(aVal) = oArr(bVal): oArr(bVal) = tmp
        ok = True
        End If

        Wend

        Next

        endFunc:
        SuffleNoReplace = oArr
        ‘ For i = 1 To iDim
        ‘ Debug.Print oArr(i)
        ‘ Next

        End Function

        SHUFFLE ALL IN ALL PPT

        Sub ShuffleShapesAll()

        Dim oSlide As Slide, oShape As Shape, iShapesCount As Integer

        For kp = 1 To ActivePresentation.Slides.Count
        Set oSlide = ActivePresentation.Slides(kp)
        iShapesCount = oSlide.Shapes.Count

        Dim sMsg As String

        If iShapesCount < 2 Then
        sMsg = "To run the program, more than one shape are needed in the current slide!"
        MsgBox sMsg, vbInformation, "Procedure Canceled"
        Exit Sub
        End If
        Dim oShapesNum()
        ReDim oShapesNum(iShapesCount)

        Dim i As Integer
        Dim iLeft As Double, iTop As Double, iHeight As Double, iWidth As Double
        Dim oShapesArr() As Double
        ReDim oShapesArr(iShapesCount, 3)
        For i = 1 To iShapesCount
        oShapesNum(i) = i
        With oSlide.Shapes(i)
        oShapesArr(i, 0) = .Left
        oShapesArr(i, 1) = .Top
        oShapesArr(i, 2) = .Height
        oShapesArr(i, 3) = .Width
        End With
        Next i

        Dim oShuffledArr As Variant
        oShuffledArr = SuffleNoReplace(oShapesNum)
        Dim iNum As Integer
        For i = 1 To iShapesCount
        iNum = oShuffledArr(i)

        With oSlide.Shapes(i)

        iLeft = oShapesArr(iNum, 0)
        iTop = oShapesArr(iNum, 1)
        iHeight = oShapesArr(iNum, 2)
        iWidth = oShapesArr(iNum, 3)
        .Left = iLeft
        .Top = iTop
        .Height = iHeight
        .Width = iWidth

        End With
        Next i

        Next
        End Sub

        Function SuffleNoReplace(ByVal oArr As Variant) As Variant

        Dim iDim As Integer
        iDim = UBound(oArr)

        Randomize Timer

        'Dim i As Integer, aVal As Integer, ok As Boolean, bVal As Integer, tmp As Integer
        Dim i, aVal, ok As Boolean, bVal, tmp

        If iDim = 2 Then
        oArr(1) = 2
        oArr(2) = 1
        GoTo endFunc

        End If

        For i = 1 To iDim
        aVal = i 'sujet A
        ok = False
        While ok = False

        bVal = aVal
        While bVal = aVal
        bVal = Int(iDim * Rnd) + 1
        Wend

        If oArr(bVal) aVal And oArr(aVal) bVal Then
        tmp = oArr(aVal): oArr(aVal) = oArr(bVal): oArr(bVal) = tmp
        ok = True
        End If

        Wend

        Next

        endFunc:
        SuffleNoReplace = oArr
        ‘ For i = 1 To iDim
        ‘ Debug.Print oArr(i)
        ‘ Next

        End Function

Leave a Reply

Join the BrightCarbon mailing list for monthly invites and resources

Tell me more!

BrightCarbon staff are knowledgeable with excellent skills, and are unfailingly enthusiastic for each new presentation.

Sarah Appleton Brown Practice Plus Group