Close this search box.

ABC Inventory Analysis using Excel



ABC analysis is a popular technique to understand and categorize inventories. Imagine you are handling inventory at a plant that manufactures high-end super expensive cars. Each car requires several parts (4,693 to be exact) to assemble. Some of these parts are very costly (say few thousand dollars per part), while others are cheap (50 cents per part). So how do you make sure that your inventory tracking efforts are optimized so that you waste less time on 50 cent parts & spend more time on costly ones?

This is where ABC analysis helps.

We group the parts in to 3 classes.

  • Class A: High cost items. Very tight control & tracking.
  • Class B: Medium cost items. Tight control & moderate tracking.
  • Class C: Low cost items. No or little control & tracking.

Given a list of items (part numbers, unit costs & number of units needed for assembly), how do we automatically figure which class each item belongs to?

And how do we generate below ABC analysis chart from it?

ABC Analysis for inventory tracking & controls - Excel chart & template

That is what we are going to learn. So grab your inventory and follow along.
(related: ABC Analysis page on Wikipedia)

ABC Analysis using Excel – Step by step tutorial

1. Arrange the inventory data in Excel

Pull all the inventory (or parts) data in to Excel. Your data should have at least these columns.

  • Part Name
  • Unit cost
  • # of units (if this is blank, just type 1 in all rows)

Input data format - ABC Analysis for inventory tracking & control using Excel

Once the data is in Excel, turn it in to a table by pressing CTRL+T. Lets call our data as inventory. You can set the table name from Design tab.

(Related: Introduction to Excel Tables)

2. Calculate extra columns needed for ABC classification

Now comes the fun part. Crunching the inventory data with formulas. Yummy!

Total Cost: This is just a multiplication of unit cost & # of units columns

Rank: We need to figure out what rank each total cost is (in the total cost column). We can use RANK formula for this.

=RANK([@[Total Cost]],[Total Cost],0) will tell us the rank for each total cost.

Cumulative Units: Once we know the rank of each item, next we need to figure out how many total units are needed for items ranked less or equal.

For example, The number (#) of the third part (PT3959-waes) is 3. Cumulative units for this is 91. This means, 91 is the total number of units for first three ranked parts (parts # 8, 9, and 16).

The formula for this is, =SUMIFS(['# Units],[Rank],"<="&[@['#]])

Remember, [@[‘#]] refers to running numbers (1,2,3….4692,4693)

Cumulative Units %: This is a percentage of cumulative units in total. The formula is simply,

=[@[c Units]]/MAX([c Units])

[Related: using structural references in Excel – video]

Cumulative Cost & Cumulative Cost %:

These are similar calculations (instead of units, we calculate cost)

Explanation of these calculations:

See below animation to understand how the numbers are crunched.

Calculations for ABC Inventory analysis - Explained.

3. Create Inventory Distribution Chart

Select cumulative units & cumulative cost % columns and create an XY chart. Make sure cumulative units is on horizontal (X) axis and cumulative cost % is on vertical (Y) axis.

Our curve should look something like this.

ABC Analysis cure - step 1

4. Set up ABC classification thresholds

Now we need to decide what is the threshold for classes A,B & C.

For most situations, Class A tends to be top 10% of the items.

Class B would be next 20%

Class C would be the last 70%.

But these numbers may change depending on your industry, manufacturing settings.

Lets say, some where in our spreadsheet, user has defined the thresholds for the classes in a range like this:

ABC threshold values - Inventory tracking & controls using Excel

So $O$7:$O$9 contains the thresholds.

Next to this range, calculate additional numbers (for plotting A, B & C markers and boxes) like this:

Calculations for ABC class markers & boxes

Examine the download file for exact formulas.

5. Add the ABC items & % total cost columns to chart

Add the extra data to the chart (by right clicking on chart and going to select data box & clicking “Add” button).

Once the new series is added, make sure you format it as markers only so that we get something like this.

ABC inventory analysis chart - step 2

6. Add Error bars to the ABC markers to get boxes

Adding error bars  - ABC inventory analysis in ExcelThis step involves adding error bars to ABC marker series and customizing them.

In Excel 2013: Add error bars by clicking on the + button next to chart

In earlier versions: Do this from layout ribbon

Once error bars are added, customize them (select and press CTRL+1). Set error amount to Custom and select the calculated error values as shown below.

Custom error bar values in Excel - demo

Once added, format the error bars to show no cap and change line color to something pleasant.

Now we have boxes on the chart.

ABC inventory analysis chart - step 4 - with ABC boxes

7. Clean up the chart, add labels & titles

This is where get creative. After some clean up, we can arrive at something like this.

ABC inventory analysis uisng Excel - final chart

Download ABC Inventory Analysis Template Workbook

Click here to download ABC Inventory Analysis workbook. It contains sample data & chart. Examine the formulas & chart settings to learn more. Or if you are in a hurry, replace the sample data with your inventory details and get instant results.

Do you use ABC analysis for inventory tracking & control?

I will be honest. I have never worked as inventory controller in a super-car manufacturing plant. That said, I run a business and we do have inventory. Not physical but digital inventory. So I often use analysis like ABC or pareto to quickly figure out where I should focus my efforts.

What about you? Do you use techniques like ABC analysis to narrow down to a few items that matter most? How do you do it in Excel? Please share your tips & experiences using comments.

Add few more techniques to your inventory

Feeling low on your Excel skills inventory? Stock up with below goodies.



Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Excel School made me great at work.

– Brenda

Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

44 Responses to “ABC Inventory Analysis using Excel”

  1. Hui... says:

    This was also discussed at the E90E50fx site a while back:
    Which was actually started here at Chandoo.org by Jeffrey Weir in the post:
    There is a great discussion about the techniques in the comments of this last post

  2. dan l says:

    meh; I don't really ABC stuff I have on the shelf, instead abc is governed by value of usage or quantity of usage and application of that is what I use to look at the inventory which is more indicative of what's moving.

    Still though, cool chart, cool technique.

  3. Pedro Roenick says:

    Shouldn't the formula for Cumulative Units be
    =SUMIFS(['# Units],[Rank],"<="&[@[Rank]])
    instead of
    =SUMIFS(['# Units],[Rank],"<="&[@['#]])
    and similar correction should be made to Cumulative Cost formula?

    • Chandoo says:

      Either way the numbers in that array will be same (just shuffled). I am using running number as there is always a chance of duplicate rank.

      • Kevin says:

        @Pedo I could not either of those techniques to work. for Cumulative Units. any ideas what i am doing wrong?

      • Oscar says:

        Hi, if you put in the first row, a value of $0,00001 in Unit Cost and 1 in # Units, the clasification is A, and it must be C.

        the correct formula is for Cumulative Units is
        =SUMIFS(['# Units],[Rank],”<="&[@[Rank]])

        • Cappa says:

          =SUMIFS(['# Units],[Rank],"<="&[@['#]])

          how compute the normal excel formula instead of using table format

  4. tpmbrian says:

    You should also check out K-Curve, a more refined, and optimisable? technique

  5. Villalobos says:

    How would you do that if you should extend your chart with XYZ classification too?

    • dan l says:

      you wouldn't. It works because cost is the series and cost is how he's breaking out abc.

      stacked bars make more sense visually....

  6. The Stig says:

    I also cannot figure out the calculation for "c Units". If I add up the "# Units" for the first six parts I get 48. Not 36.

    What specific numbers are being added together to get 36?

    • Chandoo says:

      If you sum up units for parts that are ranked 1, 2, 3, 4, 5 and 6, you should get 39.

      • The Stig says:

        I'm sure it's right in front of my eyes but I'm still not seeing it. If I manually sum the "# Units" for part numbers ranked 1 - 6 I come up with 134. Am I looking at this incorrectly?

        #1 - PT3884-w202bfe - 39
        #2 - PT7622-w201efanw - 22
        #3 - PT1613-w202dbre - 30
        #4 - PT9966-wed - 10
        #5 - PT2019-w211esf - 25
        #6 - PT1387-w - 8

        • Prasad says:

          Hi Stig,

          It is cumulative units when sorted by ranks.

          the c units in rank 1 is 39, and c units by rank 2 is 39 + 22 = 61.

          The formula is referring to #,
          In first cell, it is 1 and compares in ranks column to see where are ranks less or equal to 1, and fetches units. = 39.
          In second cell, it is 2 and compares in ranks column to see where are ranks less or equal to 2, and fetches units, 39 and 22
          resulting 61.

          Prasad DN

          • The Stig says:

            Ok. Now I understand it. Wow!!! Like I said, it was right in front of my eyes and I didn't see it.

            Thank you Prasad.

          • Ron Wallace says:


            You are correct, but the description in the article is incorrect. It should be changed to indicate what you wrote.

            The article says "For example, Rank of first part (PT1387-w) is 6. Cumulative units for this is 39. This means, 39 is the total number of units for first 6 parts."

            It should say "For example, The number (#) of the third part (PT3959-waes) is 3. Cumulative units for this is 91. This means, 91 is the total number of units for first three ranked parts (parts # 8, 9, and 16)."

            This actually describes what the equation is doing. Chandoo probably had an intern write the descriptions which led to the erroneous explanation.

          • Chandoo says:

            Hi Ron,

            Thanks for the clarification. I wrote the article. I thought since we already used the word RANK in the sentence, the first 6 parts meant first 6 ranked parts. So deleted the 'ranked' part to make it concise. Obviously that confused many readers.

          • Le Thien Hoa says:

            I am not clear about the '[@['#]' in "c Units" column. For example, I found that the result it generates for 'PT1387-w' is 1 by using Evaluate Formula in excel. Could you please explain it in more detail?
            Thank you show much!

  7. Jeff Weir says:

    Nice one, Chandoo.

  8. Somendra Misra says:

    Hi Chandoo,

    Some days backmy Supply Chain Management team had asked me to do this analysis, so I developed the same, but with few differences as listed below:

    1. I took the %age classification of 70%,20%, 10% based on total amount and not on no. of items.
    2. I used VBA to find the ABC.
    3. I used a tolerance limit in %age, eg. 70.01 should be treated as A or 69.9 is A and after that if cumulative %age is jumping to 72% than stop at 69.9% for A.

    I cannot share the file now, but will soon share with sample data on your forum.


  9. Prasad says:

    Hi All,

    I do not use ABC analysis as I am not from inventory management. At the same time I do like to see if I can interpret this in my work.

    What I really could not understand is the conclusion part, I do get the point that A class we are spending XX amount, which is YY% of total cost, and ZZ number of units, but how am i going to take decision or manage with this info.

    Pls throw some more light on this.


    • The Stig says:

      I'll give it a try.

      ABC analysis, as it relates to inventory management, is all about "order of magnitude" and inventory constraints. Typically a manufacturer will have reorder points for raw or semi-finished materials that are used to assemble a finished good. The reorder points are based on a build forecast and other supply chain constraints such as freight time, parts availability, etc. There is a specific calculation for reorder points and forecasting that you can look up on google.

      The ABC analysis helps you understand what you need to be worried about. If a part is low quantity and high cost you don't have much room for error if something bad happens such as damage in transit. You can use the ABC chart to prioritize your sensitivities and create backup plans that allow you to meet production forecasts and maintain high quality finished goods. If a part if high quantity and low cost you will be less sensitive and spend less time planning for unforeseen circumstances.

  10. Toko Mesin says:

    quoting this statement "We group the parts in to 3 classes.

    Class A: High cost items. Very tight control & tracking.
    Class B: Medium cost items. Tight control & moderate tracking.
    Class C: Low cost items. No or little control & tracking.
    Given a list of items (part numbers, unit costs & number of units needed for assembly), how do we automatically figure which class each item belongs to?"

    I'm sure it could apply to our company

  11. Dany says:


    one question, I download the template, and observe that the sequesnce of inventory item list will impact the ABC classification, if some cheap or unimportant inventory items list more head than important items, the result of ABC maybe distort the actual situation.

    please correct me if I am wrong.


  12. Martin says:


    Changing fórmulas for legend text to
    O12 =TEXT(O7,"0.0%")&" total items ("&TEXT(P7,"#.##")&" items)"
    O13 = =TEXT(O8,"0.0%")&" total items ("&TEXT(P8-P7,"#.##")&" items)"
    O14 = =TEXT(O9,"0.0%")&" total items ("&TEXTO(P9-P8,"#.##")&" items)"

    will add interesting info with respect to how big % items (specified with above mentioned formulas) are responsible for how big % costs (already detailled).

    Br Martin

  13. AbdulQadeer says:

    I applied all formulas as given above on my data but curve doesn't looks smooth? Can anybody help?

  14. ram says:


    I wanted to thank you for this amazing, crystal-clear explanation!
    I have just noticed a typo in the screenshot of chapter 4 of "marke(t)rs" 😉

    Thanks again!

  15. MNK says:


    For the input range & calculations you've created a single table. (how do i know this? when i convert the table into a range the whole range gets converted) my question is how did you format part of the table separately.
    I know you didn't just select the cells & changed the color. coz' a unique feature of table is, when you copy & paste within the range the format want be changed.


  16. error? says:

    Just checking, for units (cumulative and %) how can it be the sum of those less than rank 6? From manually calculating that seems to be ranked 1.

    for example, for the first row you have rank 6 and 39, if we use your explanation that would mean that there are 39 units sold from rank 1-5. But if you were to look at the rows below, for example, rank 4, the "cumulative" units are 134. It wouldn't make sense for there to be 134 units for ranks 1-4 while ranks 1-6 would have fewer units at 39.

    I believe the correct explanation would be that the first row of cumulative would be the units for the first rank, 2nd row would be the cumulative sum of rank 1-2.

    Please correct me if i'm wrong.

    Really appreciate this, your excel skills are on a different level.

    • error? says:

      Also, the number of units in each level is incorrect, as the total number of units is 82,378 yet in the column of units next to C group (supposed to have 70% of 82,378) it shows 82,378.

  17. Arseny says:

    You have different sku used in inventory for different product, for example: diesel (gallons, tons) and office paper (packages, kg). You can't just add this unit in calculation and arrange according to their value. They're incomparable.

    Other then that -great.

  18. Jericko says:

    my graph looks like this, https://imgur.com/a/IMGQz

    is it normal? or something is wrong with it

  19. Jericko says:

    it seems like the formula for the the "class" is wrong. doesnt make sense on my calculations :/

  20. Charlotte says:

    When I calculate the % of total cost, it always ends up with 43% - 54% - 89%. I can't seem to find what's wrong. Shouldn't this always be 80% - 95% - 100%? What could've gone wrong?

  21. Matthew says:

    This is a nice technique but I was wondering if I wanted to use the data table for other calculations the line item does not line up with the ABC classification. Is my understanding correct that the graph ignores the relationship between a line item and its class and instead looks at cumulative totals/classification independently ?

  22. Henry León Rivera says:

    Profesor, saludos desde Perú.
    Me queda la interrogante de como hace los cálculos de las columnas "H" hasta la "L".

    Podría explicarlo en un tutorial de yotube?

    Muchas gracias!

  23. Cappa says:

    =SUMIFS(['# Units],[Rank],"<="&[@['#]])

    how formulate above normal excel instead of table

  24. Kingshuk says:

    How are you getting " % of total cost " as 80% for class A ?

Leave a Reply