How to Round A Price To End In 99 in Excel

Learn multiple Excel methods to round a price to end in 99 with step-by-step examples and practical applications.

excelformulaspreadsheettutorial
12 min read • Last updated: 7/2/2025

How to Round A Price To End In 99 in Excel

Why This Task Matters in Excel

In retail, psychological pricing is almost as important as product quality. Shoppers have been trained for decades to perceive a price that ends in 99 cents as a bargain, even when the difference is only one cent. That is why you see everything from shampoo to smartphones tagged at 4.99, 199.99, or 1 999.99. If you receive a list of supplier costs, create promotional prices, or need to standardise thousands of catalogue items, the ability to round any number so it ends in 99 is crucial.

Consider an e-commerce manager importing 8 000 new SKUs from a wholesaler. The supplier prices arrive with irregular decimals such as 17.43, 58.12, and 259.27. Before those products can go live on the website, the company’s pricing policy demands that every public price finishes in .99, and each must be at least as high as the cost price to maintain margin. Manually editing thousands of cells is not only time-consuming, it is error-prone and difficult to audit. A robust Excel technique solves that pain instantly.

Outside pure retail, the same skill benefits wholesalers that publish printed price books, service businesses that quote packaged bundles, or finance teams running “what-if” scenarios around promotional markdowns. Rounding to .99 is also frequently combined with tiered discounting, inventory valuation, or regional currency conversion workflows. Mastering a dependable, formula-based solution means you can integrate the logic into Power Query transformations, macros, dashboards, or even pass it to colleagues in Google Sheets with minimal tweaks. Failing to systemise this rounding leads to inconsistent prices, margin leakage, and brand damage when customers notice contradictory figures across channels.

Excel excels at this specific problem because it contains dedicated rounding functions (ROUNDDOWN, MROUND, CEILING, FLOOR) that can be chained with simple arithmetic to hit the exact .99 target. These functions are fast, stable, and readable, and they adapt well whether you are processing a handful of cells or hundreds of thousands. Learning the underlying logic builds your understanding of modulus arithmetic, enhances your formula vocabulary, and strengthens overall spreadsheet proficiency.

Best Excel Approach

The most reliable way to force any positive price to end in 99 cents while staying at or above the original value is a two-step tactic: round the number up to the next whole dollar and then subtract one cent. This preserves margin because it never returns a lower price than the starting cost.

=CEILING(A2,1) - 0.01

Explanation of pieces:

  • A2 — Original price (numeric).
  • CEILING(number, significance) — Rounds the number up to the nearest multiple of the significance. Using 1 as significance pushes any decimal value to the next whole dollar.
  • Subtract 0.01 — Moves the result down by exactly one cent, giving the classic .99 ending.

When to use this approach

  • You must guarantee the output is not below the input.
  • You work in a currency that uses 100 cents to the dollar (USD, CAD, AUD, EUR, etc.).
  • You need a single, readable formula usable in cell references, structured tables, dynamic arrays, or VBA.

If your goal is simply the closest 99-cent price (whether above or below), switch to MROUND:

=MROUND(A2,1) - 0.01

MROUND rounds to the nearest whole dollar. Half-way cases (e.g., 4.50) round to the even whole dollar according to Excel’s rules, then you subtract 0.01. Use this only when slight downward rounding is acceptable.

Parameters and Inputs

  • Price cell (required) — Numeric, positive, can include up to two decimal places. Non-numeric inputs return #VALUE.
  • Significance (implicit) — The CEILING or MROUND significance is fixed at 1 (one whole dollar). You can parameterise this through a separate cell if you ever change currency sub-units.
  • Currency format — Typically set to Accounting or Currency with two decimals. Without proper formatting, the result 34.99 may display as 34.990000.
  • Negative numbers — CEILING with positive significance still rounds negative inputs upward toward zero, which may not be what you expect. Validate or convert negatives before applying the formula.
  • Zero or blanks — CEILING(0,1) returns 0, minus 0.01 yields ‑0.01. Trap or ignore zeros with an IF wrapper.
  • Data validation — Consider Data > Data Validation rules that restrict entry to values greater than or equal to zero and with no more than two decimals to safeguard the formula.

Edge cases:

  • Extremely large values (millions) are fully supported.
  • Binary floating-point precision may show as 45.989999 in the raw value bar; formatting to two decimals covers this, or wrap the final result in ROUND(…,2).

Step-by-Step Examples

Example 1: Basic Scenario

Assume column A holds cost prices from a supplier.

Sample data:

  • A\2 = 17.43
  • A\3 = 34.00
  • A\4 = 99.99
  • A\5 = 102.05

Step-by-step:

  1. Enter the label “Rounded Price” in cell B1.
  2. In B2 type:
=CEILING(A2,1)-0.01
  1. Copy or autofill down to B5.
  2. Format column B as Currency with two decimals.

Expected results:

  • B\2 = 17.99
  • B\3 = 34.99 (rounded up, then minus 0.01)
  • B\4 = 99.98? No, CEILING(99.99,1) = 100, minus 0.01 = 99.99, so no change.
  • B\5 = 103.99

Why it works: CEILING always moves the number upwards to the next integer, securing your required margin. Subtracting one cent converts that integer into the familiar .99 pattern.

Variations:

  • If your policy is .95 instead of .99, just subtract 0.05.
  • To display the new price in a separate currency, multiply by an exchange rate in another cell before the CEILING step.

Troubleshooting tips:

  • If you see 17.989999, wrap with ROUND(B2,2) or change format.
  • If B3 unexpectedly shows 33.99, confirm you used CEILING, not ROUNDDOWN.

Example 2: Real-World Application

Scenario: A retailer imports 3 000 product costs in a sheet named [Supplier_Import]. The company policy: final selling price must (1) include a 40 percent markup, (2) always end in .99, and (3) be at or above 4.99.

Data layout in [Supplier_Import]:

  • Column A: SKU
  • Column B: Description
  • Column C: Cost USD

Steps:

  1. Add a new sheet named [Price_Calc].
  2. In [Price_Calc] cell A2 link to SKU with =Supplier_Import!A2. Copy across columns for Description and Cost.
  3. In column D label “Markup Price” and input:
=C2 * 1.4
  1. In column E label “Rounded Price” and input:
=MAX(4.99, CEILING(D2,1)-0.01)
  1. Fill down 3 000 rows.
  2. Apply a table (Ctrl+T) for structured references and clarity.
  3. Use Conditional Formatting to highlight any Rounded Price where Rounded Price less than Cost*1.4, verifying policy compliance.

Business impact: The buying team can now export this sheet directly to the e-commerce platform knowing every price respects the margin target, the minimum floor, and the .99 suffix. The logic adapts seamlessly when you refresh the Cost column with next month’s feed—no manual tweaks needed.

Integration:

  • Import into Power Query, perform transformation with the same formula language (M), or simply reference the finished table as a data source for Power Pivot.
  • Publish to Power BI; measures can reuse the rule to create real-time dashboards of margin vs. psychological price thresholds.

Performance notes: CEILING and arithmetic operations are lightweight even across tens of thousands of rows. Keeping formulas inside an Excel table ensures auto-fill without volatile functions.

Example 3: Advanced Technique

Edge case: Global organisation needs pricing across regions with different currency minor units. Japanese Yen has no subunit, Swiss Franc adds the “Rappen” (0.05 increments when cash), and Norwegian Krone uses 0.01. You want each currency to end in its own psychological value: .99 for USD, .95 for CHF, no change for JPY.

Data setup:

  • Column A: Base Price USD
  • Column B: Currency Code (USD, CHF, JPY)
  • Column C: FX Rate (USD → Local)

Advanced formula using MAP and LAMBDA (Excel 365 dynamic arrays):

=MAP(A2:A1000, B2:B1000, C2:C1000,
     LAMBDA(p, cur, fx,
        LET(
            local, p*fx,
            rounded,
              IF(cur="JPY",
                 local,                                   
                 IF(cur="CHF",
                    CEILING(local,0.05)-0.05,              
                    CEILING(local,1)-0.01                  
                 )
              ),
            rounded
        )
     )
)

Explanation:

  • MAP iterates row-by-row through three columns.
  • LET stores an intermediate local price in the destination currency.
  • Conditional branches set rounding logic depending on currency.
  • For CHF, cash transactions typically use 0.05 increments, so we round to the next 5 Rappen and subtract 0.05 to end in .95.
  • For JPY we leave the value untouched because there are no decimals in cash.

Error handling: Wrap the CEILING section in IFERROR to catch non-numeric FX rates.

Professional tips:

  • Convert the entire LAMBDA into a named function called ROUNDPSYCH and reuse it workbook-wide.
  • If performance slows with hundreds of thousands of rows, push the transformation to Power Query where native functions are highly optimised.

Tips and Best Practices

  1. Store the “desired ending” (0.01) in a named cell like [PsychologicalCent] so marketing can adjust campaigns without touching formulas.
  2. Use structured references in Excel Tables: =[@Cost]*1.4 keeps formulas self-documenting and resilient to column inserts.
  3. Wrap the final expression in ROUND( ,2) to eliminate floating-point artefacts before exporting to CSV.
  4. Create a validation column that flags any final price less than cost or minimum policy, using =IF(Rounded<Cost,"Check","OK").
  5. Document your rounding policy in a separate “Read Me” sheet so future team members understand why .99 is enforced.
  6. When combining with percentages or taxes, always apply the .99 rounding last to preserve accuracy.

Common Mistakes to Avoid

  1. Using ROUNDDOWN instead of CEILING — This drives the price below cost, eroding margin. If you plug 12.70 into =ROUNDDOWN(A2,0)+0.99, you get 12.99 which is less than 12.70? Actually higher, but 13.99 using CEILING would be standard. Check your policy before choosing.
  2. Forgetting to subtract the correct cent value — =CEILING(A2,1) alone yields a whole number (13.00). Always test a few sample rows.
  3. Hard-coding two decimal formatting and later switching to a currency with three decimal places (BHD, JOD). Store significance in a parameter cell instead.
  4. Applying the formula to negative returns, refunds, or credits — CEILING rounds toward zero, potentially creating positive numbers out of negatives. Guard with IF(A2 less than 0, A2, formula).
  5. Overlooking floating-point rounding differences— values like 19.989999 appear due to binary storage. Use ROUND( ,2) before reporting.

Alternative Methods

MethodFormulaProsConsBest when
CEILING – 0.01=CEILING(A2,1)-0.01Never drops below original, simple, fastRequires Excel 2007+Psychological pricing with margin protection
ROUNDDOWN + 0.99=ROUNDDOWN(A2,0)+0.99Similar to CEILING, intuitiveIf A2 already ends .99, bumps to previous dollar minus 0.01; can lower marginAcceptable for markdowns where slight decrease is fine
MROUND – 0.01=MROUND(A2,1)-0.01Nearest .99, symmetrical roundingMay round down below cost, unpredictable for .50 decimalsYou only need “nearest” 99 not “next highest”
TEXT join=TEXT(ROUNDDOWN(A2,0),"0")&".99"Forces textual .99 displayReturns text not number, breaks sums and pivot tablesYou publish prices as text or need leading zeros
Power Queryround to whole, subtract 0.01Handles millions of rows, repeatable ETLRequires data load, refresh cycleEnterprise data pipelines

Performance comparisons: Native worksheet formulas recalculate instantly for 100 000 rows (sub-second on modern hardware). Power Query requires refresh but may scale better into the millions.

Compatibility notes: CEILING.PRECISE exists only in newer Excel versions; stick with CEILING for maximum compatibility.

Migration: Replace CEILING with ROUNDUP in Google Sheets (=ROUNDUP(A2,0)-0.01).

FAQ

When should I use this approach?

Use CEILING minus one cent whenever you must hit a .99 price that is not lower than the original number. It fits retail mark-ups, price book generation, and automated imports.

Can this work across multiple sheets?

Yes. Reference prices on another sheet with =CEILING(Sheet2!A2,1)-0.01. If you are consolidating dozens of sheets, convert the formula into a named LAMBDA so every sheet uses =ROUND_IN_99(Sheet2!A2).

What are the limitations?

The method assumes a currency that subdivides into 100. For currencies without cents (JPY) or with 5-cent rounding (CHF cash), adjust the significance and subtraction value. CEILING fails on non-numeric cells, and negative numbers create confusing results unless trapped.

How do I handle errors?

Wrap the formula: =IFERROR( CEILING(A2,1)-0.01 , "" ). Add validation columns that test whether the rounded price is below cost or minimum price thresholds.

Does this work in older Excel versions?

CEILING exists back to Excel 2003, but CEILING requiring positive significance changed in 2010. If you are on Excel 2003 or earlier, substitute =ROUNDUP(A2,0)-0.01. CEILING.PRECISE is only in Excel 2010+.

What about performance with large datasets?

Worksheet formulas are lightning fast for up to hundreds of thousands of rows. For millions, migrate the logic to Power Query or SQL, or convert your workbook to a binary format (.xlsb) to reduce file size. Avoid volatile functions within the same sheet to keep recalc minimal.

Conclusion

Rounding prices so they end in 99 cents is a retail requirement that becomes effortless once you know how to combine CEILING (or ROUNDUP) with a simple subtraction. The technique safeguards margins, standardises catalogues, and seamlessly slots into broader Excel workflows such as tables, dynamic arrays, and Power Query. By mastering the approaches outlined here, you not only speed up routine merchandising tasks but also deepen your understanding of Excel’s rounding toolkit. Next, experiment with named LAMBDA functions or incorporate the logic into macros to automate even larger pricing operations. Happy rounding!

We use tracking cookies to understand how you use the product and help us improve it. Please accept cookies to help us improve.