If I need some charting inspiration, I always visit New York Times. Their interactive visualizations are some of the best you can find anywhere. Clear, beautifully crafted and powerful. Long time readers of Chandoo.org knew that I like to learn from visualizations in NY Times & redo them using Excel.
Today let me present you one such chart.
How the tax burden has changed over the years – Visual story by NY Times
First take a look at this story on New York times website. Go ahead and check it out, I will wait for you.
Back already. Good.
Now that you have seen a well presented story with the support of panel charts, let us learn how to re-create such charts using Excel.
Look at the tax burden Excel chart
Take a look at the excel implementation of this chart below. Read on to learn how to create this.
[click here to see larger version]
Recipe for creating this chart using Excel
We need below ingredients to make this chart using Excel
- Raw data
- One area chart and few lines on top
- Simple formulas
- One Slicer (to select an year)
- One large cup of coffee or whatever else that you gulp
So if you are ready, lets start cooking.
Step 0: Arrange data
This is a prerequisite for any charting exercise. Although we can work with data in any shape, for quick results, arrange your data in this format:

In the example file you will find data for overall tax burden for all 9 tax brackets in the years 1980-2010.
Step 1: Create an area chart from all the data
Simple, select tax bracket & tax percentage rows and create an area chart. This is how it should look.

Step 2: Insert 2 columns after every tax bracket in your source data
Very simple, just add 2 blank columns after every tax bracket to your source data. This will change your chart to,

Step 3: Adjust data settings so that blank cells are treated as gaps
Right click on the chart, go to Select Data > Hidden & Empty cells
Specify that all blank cells should be treated as gaps. See below.

Now, your chart should look like this:

Step 4: Add a line to the chart & format it
Although our chart looks almost like NY Times chart, we still need to show a line on top. For this,
- Go to your data, reselect all the tax burden %s and copy them.
- Come back to the chart, select it and paste. (more on this)
- Excel will add this new data as another series to chart
- Right on this new series, choose Change series chart type
- Select Line chart
- Format the chart so that it looks like below.

Step 5: Remove grid lines & fake them using additional series
Excel chart’s grid lines always show up behind the data. For our chart, we want them on top. So let just delete grid lines and fake them using additional lines on the chart.
For this,
- In your data, add 9 extra rows at bottom (why 9? because we want to show one grid line for every 5% and the maximum we have is around 45%)
- Fill first row with 0.05, second with 0.1, third with 0.15… ninth with 0.45
- Copy all these and paste them in the chart. You should have nine lines across the chart.
- Now, format each line so that it looks like a dull white line with dashes.
- When you are done, the final output should look like this:

Step 6: Remove horizontal axis (x-axis) labels & fake them too
Again, horizontal axis labels produced by Excel are useless for us. So we will create our own.
- First delete the existing axis.
- Then add a text box to the chart and place it where axis should be.
- Type the values 1980 few spaces 2010.
- Adjust the font size to 7pt.
- Now play with the text box until you are satisfied for one tax bracket.
- Then copy paste it 8 more times and adjust their positions.
Although we could automate this step, it felt un-necessary as the years are not going to change.
Our chart is almost ready
At this stage, our chart looks like below.

It is almost ready, but we need few more additions.
- We need to add labels to first & last point in each tax bracket.
- We need a mechanism so that user can select a particular year.
- When any year is selected, we need to show that year’s tax burden %.
Adding labels for first and last points
This is done by adding one more series of values. This new series (lets call it label-first-last) will have values for only 1980 & 2010. Everything else will be NA().
The formula I used to generate this series is,
=IF(OR(year=1980,year=2010),taxburden,NA())
Once this series is added, we just format it so that only markers are shown (no line) and then add data labels. Format the labels to show in 0% format. Adjust their size and position.
Also add arrow shaped boxes on top to label each tax bracket.

Enabling year selection thru Slicers
[This works only for Excel 2010 or above]
In a blank sheet type the years 1980 thru 2010. Select them and create a pivot.
Once the pivot is ready, insert a slicer for the years field.
For detailed steps on slicer creation see this illustration.

Figuring out which year is selected
Once the slicer is ready, we need to figure out if user made a selection thru slicer. To do this,
- Use a simple formula to check how many values are shown in the pivot table (ex: COUNTA(pivot!A:A) )
- If only one value is shown, then extract it by referring to first row item in pivot (=pivot!A4)
Adding labels for selected year
Once we know which year is selected, we can easily create one more series that has NA() for all values except selected year. The rest you know.
Final outcome – Tax burden over the years chart using Excel
Download this example & Play with it
Click here to download the tax burden chart. Play with it to learn more. Examine the formulas in “Data” sheet & scroll down on “Chart” sheet for step by step instructions.
Do you like this chart?
I really loved how NY Times has been able to tell a very good story by using multiple panel charts. These are great way to examine multidimensional data and understand what is going on.
What about you? Do you like this chart? Please share your thoughts and ideas using comments.
More such charting inspiration
If you are looking for some fresh charting inspiration & ideas, you are at the right place. Check out these examples to get started:
- Introduction to Panel Charts & How to make them in Excel
- Usain Bolt vs. Rest of runners – Interactive visualization in Excel
- Impact of Grammy award on sales – Grammy bump interactive chart
- Visualizing world education rankings – excel chart
- Facebook Privacy policies as a panel chart
- More charts & visualizations
Do you want to create powerful & insightful charts like these?
If you want to learn how to create these types of charts, consider enrolling in our Excel School program. Be warned, you will become unusually awesome in Excel by going thru our course 🙂













15 Responses to “Compare 2 Lists Visually and Highlight Matches”
Hi,
I solved this in a little different way.
We have 2 lists, one starts at A1 and other at B1, both are vertical arrays.
First thing is define 2 named ranges, list1 and list2:
list1 refers to "=OFFSET(Sheet1!$A$1;0;0;SUMPRODUCT(--(Sheet1!$A$1:$A$1000""));1)"
list2 refers to "=OFFSET(Sheet1!$A$1;0;0;SUMPRODUCT(--(Sheet1!$B$1:$B$1000""));1)"
this way lists will be dynamically sized when you had or remove elements (you can't have blanks and you can't have more than 1000 elements).
Then I use conditional formatting in column A when this formula is true:
"=NOT(ISERROR(MATCH(A1;list2;0)))"
and "=NOT(ISERROR(MATCH(B1;list1;0)))" to list2.
This way we eliminate the need for auxiliary columns or lists.
Hope you like my way! 😀
Nunes
Simple conditional formatting formula.
Assuming lists vertical lists starting in A1 & B1
To highlight just one column (assume B for example)
Conditional formatting>New Rule>by formula
=MATCH(B1,$A$1:$A$99,0)
Set the cell fill to what ever color you prefer & press OK
To highlight both columns repeat with this formula for cell in column A
=MATCH(A1,$B$1:$B$99,0)
This approach doesn't require named fields or addtl columns
glw
Say I had 1 list in A2:A20 and another in B2:B20.
To format all the items in column A that are repeated in column B I would use the following Conditional Formatting rule.
=IF(ISNA(VLOOKUP(A2,$B$2:$B$20,1,false)),true,false)
All the duplicates are highlighted. It us a very simple example of comparison.
I may be missing something here, but I usually highlight both my lists by holding ctrl eg A1:A20 E10:E40 then choose conditional formatting from the ribbon and then highlight duplicates, and this does it?
Lee, I was perplexed as well. I do the same thing you do with the conditional formating. A drag and click to highlight range and choose highlight duplicates does the trick for me.
I believe these methods are to check if an item from one list also appears in the other list. So if an item mentioned many times in one list if also mentioned in the other list or not.
The Conditional Formatting highlight duplicates feature will do this, but it will also highlight an item if it appears multiple times in the one column or list.
Hi, I would just like to know (if you are willing to share) which image editing program you use to make your image like above, like they are torn apart from bottom? I've been looking for long.
@i48998
Chandoo is on Holidays, but Chandoo uses Paint.Net
Paint.net is a free download available at http://www.paint.net/
.
I use CorelDraw/PhotoPaint
.
We both use the Snipping Tool (a freebe with Win Vista/10)
.
We both use Camtasia for doing screen captures to make animated GIFs where you see animation.
Here is how I would accomplish
(1) Define Names: List_1, List_2
(2) =ISNA(MATCH(D4,List_2,0))-1 (Conditional Format formula List_1)
(3) =ISNA(MATCH(D4,List_1,0))-1 (Conditional Format formula List_2)
ISNA will return 1 if NO Match and O if Match by adding a -1 will make: NO Match 0 and Match a -1 which is True
Hi all
this my first Post here
i think we can take Unique List for tow list to know what is not Duplicate By this Array formula
=IFERROR(INDEX($D$6:$D$33,SMALL(IF(ISERROR(MATCH($D$6:$D$33,$B$6:$B$33,0)),ROW($D$6:$D$33)-ROW($D$6)+1),ROWS($J$5:J5))),"")
and this one for Duplicate Value
=IFERROR(INDEX($D$6:$D$33,SMALL(IF(ISNUMBER(MATCH($D$6:$D$33,$B$6:$B$33,0)),ROW($D$6:$D$33)-ROW($D$6)+1),ROWS($J$5:J5))),"")
Don't forget to Enter This Formula by Pressing Ctrl+Shift+Enter
without wanting to ruthlessly self promote here, I do have an addin that does neatly compare two ranges, not just in columns, so you might want to check that out.
Having said that this is a pretty neat solution if you dont want to be going down the VBA or purchase route. I like it
however, could you not do something with the remove duplicates feature in Excel 2010 and then compare the resulting data set?
Hi, Chandoo! I've found yesterday your Excel website... What can I say? It's just awesome, Excellent. Being a developer for 30 years, more than 15 with Office products, and wow!, how many things I discovered in a couple of hours, and what pretty resolved.
I decided to take the long path of the newbies and read all your examples and write down by myself all of them, and when I arrived to this (the comparison of two lists) I think I've found a problem:
a) in "Step 4: Apply conditional formatting to Second List - Use the same logic, but this time the rule becomes =COUNTIF(count1s,$H6)" it should say "Step 4: Apply conditional formatting to Second List - Use the same logic, but this time the rule becomes =COUNTIF(count1s,$H6)>0", but this is a typing error that I believe all of us here might have discovered and corrected
b) the very problem: I wrote down two different lists, in different ranges, and with different number of elements, I specified the equivalent conditional formats, et non voilá!, I didn't get what expected. So I downloaded your example book, I checked range names, formulaes, conditional formats and all OK. So I copied -just values- from my book to yours, and I still couldn't achieve the goal.
I'm using Excel 2010 in spanish, I'm from Buenos Aires (Argentina), and my book is at your disposition whenever you considerate it appropiate.
Thanks in advance for your time, and again my congratulations for your work here.
Best regards.
SirJB7
Comparison of 2 lists visually with highlights
Author: SirJB7 / Date: 11-Dic-2011
Pros: no duplicated tables, no matrix formulaes, no named ranges, no VBA code, just conditional formatting
Cons: not found yet, comments and observations welcome
Features:
a) standard problem: highlights in orange/yellow elements existing in the other list
b) optimized problem: idem a) plus highlights in red/violet first occurrence of elements existing in the other list
Sheet contents:
a) conditional format, 1 rule per list (2 methods used)
A1:A20, first list
B1:B20, second list
a1) range A1:A20, condition =NO(ESERROR(BUSCARV(A1;B$1:B$20;1;FALSO))), format Orange ---> in english: =NOT(ISERROR(VLOOKUP(A1,B$1:B$20,1,FALSE)))
a2) range B1:B20, condition =CONTAR.SI(A$1:A$20;B1)>0, format Yellow ---> in english: =COUNTIF(A$1:A$20,B1)>0
b) conditional format, 2 rules per list (2 methods used)
D1:D20, first list
E1:E20, second list
b1) range E1:E20, condition 1 =Y(NO(ESERROR(BUSCARV(D1;E$1:E$20;1;FALSO)));COINCIDIR(D1;D$1:D$20;0)=FILA(D1)), format Red ---> in english: =AND(NOT(ISERROR(VLOOKUP(D1,E$1:E$20,1,FALSE))),MATCH(D1,D$1:D$20,0)=ROW(D1))
same range, condition 2 and format 2, same as a1)
b2) range E1:E20, condition =Y(CONTAR.SI(D$1:D$20;E1)>0;COINCIDIR(E1;E$1:E$20;0)=FILA(E1)), format Violet ---> in english: =AND(COUNTIF(D$1:D$20,E1)>0,MATCH(E1,E$1:E$20,0)=ROW(E1))
same range, condition 2 and format 2, same as a2)
Personally I like the a2) and b2) solutions, I think the formulaes are prettier.
I still don't know the rules of this website and forum, but it any precept is infringed I'm willing to share the workbook with the solution. If it breaks a rule, I apologize and promise that won't happen again.
Best regards for all!
Dear All i have a complicated situation...
1. I have two sheets of data Sheet1 and Sheet2 (from various sources) - Both of these contain data matching and Not matching as well..
2. Now for me i need to build an excel where in i need to get sheet 3 with values that are present in a column of Sheet 1.
What ever Sheet 1 doesn't have i dont want those rows from sheet 2 to be populated into Sheet3.
Can any one help me out.
Hi Team
The above example is to compare partial name from 2 different columns.
If I want to cross check it in a single column. I have both correct and partial correct/match entries in a column. Is there any way I can find both the entries in the column.
Regards