To calculate a percentage in Excel, divide the part by the total and format the cell as a percentage: =B2/C2 with the Percent format applied. To calculate percent change between two values, subtract the old from the new and divide by the old: =(C2-B2)/B2. Both give a decimal that Excel displays as a percentage once the format is on, so you never multiply by 100 yourself.
That last point is where most percentage problems in Excel start. Excel treats percentages as decimals internally: the value 0.25 is 25%, and the Percent format only changes how it looks. Multiply by 100 as well and you get 2500%. Nothing warns you.
How do I calculate a percentage of a total in Excel?
Divide the part by the whole. If B2 holds one category's spend and C2 holds total spend:
=B2/C2
Then hit Ctrl+Shift+% or click the % button on the Home tab. A result of 0.184 displays as 18%. Add decimal places with the Increase Decimal button if 18.4% matters.
When every row divides by the same total cell, lock it so the reference does not drift as you fill down:
=B2/$C$14
The dollar signs pin C14 in place. Without them, row 3's formula reads C15, row 4's reads C16, and you get a column of #DIV/0! or nonsense the moment you copy down. This is the single most common reason a percentage column comes out wrong, and there is more on locking a cell with absolute references if the $ notation is new to you.
How do I calculate percent change in Excel?
New minus old, divided by old:
=(C2-B2)/B2
With B2 as last month at 4,000 and C2 as this month at 5,000, that returns 0.25, displayed as 25%. If this month were 3,000 you would get -0.25, or -25%. The same formula handles increase and decrease, and the sign tells you which.
| You want | Formula | Note |
|---|---|---|
| Percent change, old to new | =(C2-B2)/B2 | Divide by the OLD value, always |
| Percent of a total | =B2/$C$14 | Lock the total cell |
| Increase a number by a percent | =B2*(1+15%) | Or =B2*1.15 |
| Decrease a number by a percent | =B2*(1-15%) | Or =B2*0.85 |
| Percent difference (no old or new) | =ABS(C2-B2)/AVERAGE(B2:C2) | Symmetric, order does not matter |
| Find the original before an increase | =C2/(1+15%) | Not C2*0.85, which is a different number |
That last row catches people out constantly. If a price rose 15% to $115, the original was 115/1.15 = $100, not 115 x 0.85 = $97.75. Increasing by 15% and then decreasing by 15% does not return you to where you started, because the second percentage applies to a bigger base.
Why does my percentage show as 1000%?
Because the cell already held a whole number when you applied the Percent format. Excel's rule: applying the Percent format to a number multiplies it by 100. Type 10, format it as a percent, and you get 1000%.
Excel does this because it assumes anything already in a cell is a value, not a percentage, so it converts. Type 10% directly into an empty cell and Excel stores 0.1 and shows 10%, which is what you wanted. Same keystrokes, different order, different result.
There is a wrinkle: on a cell that is empty or holds a number less than 1, Excel does not multiply by 100 when you apply the format, on the assumption that 0.25 is already a decimal percentage. So the misbehavior only hits whole numbers, which is exactly when it is most confusing.
The fix, if a column is already showing 1000% when it should say 10%: divide by 100 once. Put 100 in a spare cell, copy it, select the broken column, Paste Special, tick Divide, OK. Then delete the spare cell. One pass and the column is right.
Why does my percentage formula return #DIV/0!?
The old value is zero or blank. A percent change from nothing is not a defined number, so Excel refuses, correctly.
This shows up all the time on the first row of a report or on any category that had no activity last period. Handle it rather than hide it:
=IF(B2=0, "No prior", (C2-B2)/B2)
That says what the blank actually means. Wrapping it in IFERROR to return an empty string works too and looks cleaner, but a reader cannot tell the difference between "no prior period" and "zero change" if both render as blank. On anything going to someone else, spell it out.
Why is my percentage returning zero or #VALUE!?
Because the numbers are text. This is the default state of a column that came out of a PDF, and it is worth checking before you debug the formula.
The tell is alignment. Excel right-aligns real numbers and left-aligns text, so an amount column hugging the left edge of its cells is text no matter how much it looks like money. =ISNUMBER(B2) returns FALSE and confirms it. A percentage formula on text values returns #VALUE!, or worse, returns 0 and looks like a real answer.
The other version of this is the stray character. A value that arrived as "1,250 " with a trailing space, or with a non-breaking space where a normal one should be, is text even though it looks numeric. Converting text to numbers and clearing the invisible characters are the two fixes, and doing both takes about a minute on a whole column.
Fix this before you build any percentages on the data. A percentage column built on text values will either error, which you will notice, or silently return zeros, which you might not.
How do I calculate a running percentage of total?
Use SUM with a half-locked range so the range grows as you fill down:
=SUM($B$2:B2)/SUM($B$2:$B$500)
The first SUM starts at B2 and stretches to the current row, because only the start of the range is locked. The second is fully locked, so it always covers the whole column. Format as a percent and you have a cumulative share column, which is what you want for a Pareto view of where the spend actually goes.
Sort the data descending by amount first, or the running total means nothing.
Calculating percentages on data from a PDF report
The order that saves time: get the rows out cleanly, fix the number types, then calculate. Our PDF to Excel converter keeps the columns aligned so the amounts land in one column rather than smeared across three, which is the difference between a percentage column that works and an afternoon of repair.
Then check ISNUMBER on the amount column before writing a single formula. Then build the percentages. Doing it in that order means the first number you see is the right one.
For a category share breakdown, a pivot table will do the percentage for you without any formula at all: drop the amount into Values twice, then right-click the second one, Show Values As, % of Grand Total. That is faster than a formula column when you just want to see the split, and it recalculates when the data changes. If the underlying documents are receipts rather than reports, software that reads receipts and categorizes every expense hands you the category column already built, which is the part the percentages depend on.
How do I show a percentage without decimals?
Click Decrease Decimal on the Home tab until they are gone, or press Ctrl+Shift+%, which applies the Percent format with zero decimal places. The underlying value keeps its full precision either way. 0.1847 displayed as 18% is still 0.1847 to every formula that references it.
That matters when percentages are summed. Twelve rows each displaying 8% can add up to a displayed 97% or 99%, because you are seeing rounded numbers add to an unrounded total. Nothing is broken. If the column must sum to exactly 100% on screen, use ROUND in the formula itself, =ROUND(B2/$C$14, 2), so the stored value matches what is shown. Then the arithmetic and the display agree, which is the only way to stop someone asking why the column adds to 99.
The short version
Part divided by whole, then apply the Percent format. Never multiply by 100 yourself. Percent change is (new minus old) divided by old, always dividing by the old value. Lock the total cell with $ before filling down. If the result is 1000%, the number was already there when you formatted it, so divide by 100 with Paste Special. And if a percentage returns zero on data from a PDF, the amounts are text, not numbers.
Last updated July 2026.