Skip to main content
Ramin Khavarzadeh DATA · ANALYSIS · PERSPECTIVE
Tools TOOL · BUSINESS

تحلیل رشد فروش

فروش دوره‌های پیاپی را وارد کنید تا رشد اسمی، رشد واقعی پس از تورم، نرخ رشد مرکب و روند را جدا از هم ببینید.

Did sales really grow, or did only prices rise?

  • چند عدد در فرم
  • روی سرور سایت
  • بدون هوش مصنوعی

Problem it solves

“Sales grew 27%” alone says little: if prices rose 20%, much of the growth is only inflation, not more customers. This tool separates nominal from real growth and, if you have sales quantity, shows how many toman of the sales change came from “price” and how many from “volume”.

With a product file it goes one level deeper: price and volume effects per product and, at aggregate level, "mix effect"—whether sales shifted toward more or less expensive products. The sum of all effects always equals total sales change exactly.

Inputs

Amount input unit

If you choose Rial, all amounts are divided by 10 before calculation and results are shown in Toman.

Input mode

“Two totals”: sales for two periods and, if you have them, quantities and an inflation index. “Product file”: product × period table for price, volume, and mix shares. Without JavaScript both sections are visible and only the selected one is calculated.

Sales for two periods

Net sales each period (after discount and returns), both with the same definition.

Older period. (to Toman)

The more recent period. (to Toman)

Count and price (optional)

With sales quantity for each period, growth is split into price and volume effects. If you lack quantity but have unit price, quantity is derived as sales ÷ price.

Units sold; leave blank if you do not have it.

If you also gave quantity, price is calculated as sales ÷ quantity and this figure is only compared with that. (to Toman)

(to Toman)

Show advanced settings (Inflation, period names, annualised growth)
Inflation (optional)

Enter price indexes for both periods from one source (for example CPI 100 and 141.2). The tool assumes no inflation rate on its own.

Index value, e.g. 100.

Index value from the same source, e.g. 141.2.

For example, "Consumer price index, Statistical Center, Esfand 1403 and Esfand 1404". Required when you enter indexes.

Period names and the gap between them (optional)

Names are only for result readability; the month gap yields annualised growth.

e.g. 1403 or spring.

e.g. 12 for two consecutive years or 1 for two consecutive months; for annualized growth.

Products file

A simple table: each row is one product in one period, with columns for product, period, quantity and price (or revenue). Column names in Persian or English, comma or semicolon delimiter, Persian digits accepted too. The file is not stored on the server and nothing from it is logged.

Choose a file or paste its contents here: first row is column names (product, period, quantity, price or revenue), each row one product in one period. Max 2 MB and 20,000 rows; nothing is stored on the server.

Download sample scenario (6 products, 2 periods, 10 rows; two products in only one period) Sample figures are made up and only show the format.

Column guide
ColumnAccepted namesRequired?Notes
Productمحصول، کالا، نام، product، item، skuYesProduct name or code; duplicate rows for one product in one period are summed.
Periodدوره، ماه، سال، period، month، yearYesThe whole file must have exactly two distinct values (e.g. 1403 and 1404); if numeric, the smaller is period 1, otherwise appearance order in the file.
Quantityتعداد، مقدار، quantity، qtyYesZero or greater; Persian digits and thousand separators are accepted.
Priceقیمت، priceOne of these twoPrice per unit; row revenue = quantity × price.
Revenueدرآمد، فروش، مبلغ، revenue، sales، amountOne of these twoRow total amount; if both columns are present, revenue takes precedence.
Price/volume decomposition method

Both methods reach the same sales change; only the split differs. If you have no reason to prefer one, keep symmetric.

Result

All amounts in toman.

  • +27.5% Nominal sales growth (۱۴۰۳ ← ۱۴۰۴)
  • +132,000,000 Toman sales change (480,000,000 ← 612,000,000)
  • +33,000,000 toman volume effect (quantity 1,600 ← 1,700, growth +6.3%)
  • +99,000,000 toman price effect (average price 300,000 ← 360,000, growth +20.0%)

روش تجزیه: متقارن (اثر تعامل نصف‌نصف بین قیمت و حجم).

This growth is nominal: inflation has not been subtracted unless you enter an index.

From period 1 sales to period 2, line by line

RowAmount (toman)% of change
فروش ۱۴۰۳ 480,000,000 —
فروش ۱۴۰۴ 612,000,000 —
Volume effect (quantity) +33,000,000 25.0%
Price effect +99,000,000 75.0%
Sales change +132,000,000 100.0%
Size and direction of each effect relative to the sales change; the list under the chart has the same figures Volume effect (quantity): +33,000,000Price effect: +99,000,000
  1. Volume effect (quantity) +33,000,000 25.0%
  2. Price effect +99,000,000 75.0%
Assumptions of this calculation
  • Nominal growth = (period 2 sales − period 1 sales) ÷ period 1 sales.
  • Price per period = sales ÷ quantity in that period; that is the weighted-average price you actually received, not the list price.
  • Real growth is only calculated with an index you enter yourself: (1 + nominal growth) ÷ (1 + inflation between the two indices) − 1. The tool assumes no inflation rate of its own.
  • Amounts are rounded to two decimal places and the last decomposition line takes the rounding remainder so the sum of effects exactly matches the sales change.
Input sheets, results (with formulas that recalculate when inputs change), and method. The file is built and sent immediately and is not kept on the server.

Calculation method and assumptions

  • Nominal growth = (period 2 sales − period 1 sales) ÷ period 1 sales. When period 1 sales are zero, the percentage is undefined and only the absolute change is shown.
  • Real growth uses only an index you enter: inflation = index 2 ÷ index 1 − 1; real growth = (1 + nominal growth) ÷ (1 + inflation) − 1; period 2 sales at period 1 prices = sales 2 × index 1 ÷ index 2. The tool assumes no inflation rate on its own.
  • Price per period = sales ÷ quantity in that period — the weighted-average price you actually received, not the list price. If you lack quantity but have unit price, quantity = sales ÷ price. If you gave both and your price differs from sales ÷ quantity by more than 1%, you get a warning and the calculation uses sales ÷ quantity.
  • Symmetric method: volume effect = Δqty × (price 1 + price 2) ÷ 2 and price effect = Δprice × (qty 1 + qty 2) ÷ 2. The interaction term (Δprice × Δqty) is split evenly between the two effects — the Shapley split for two factors.
  • Laspeyres method: volume effect = Δquantity × price 1 (volume at old prices), price effect = Δprice × quantity 1 (price at old quantities), and interaction effect = Δprice × Δquantity on a separate line.
  • In both methods, effect totals exactly equal sales change: amounts round to two decimals and the last line absorbs rounding remainder.
  • Products file: the same decomposition runs for each product. A product present in only one period takes that period’s price for the other; so its entire change is a “volume effect” (from or to zero) and its price effect is zero. A product with revenue in a period but zero quantity is not decomposed and its change goes in the “interaction/remainder” column.
  • Mix effect (file only): total volume effect = (total count 2 − total count 1) × average price of all units (Laspeyres: period 1 average; symmetric: average of both periods). Mix effect = sum of product volume effects − total volume effect—the part of change not explained by each product's price and volume, from shifting sales between expensive and cheap products. Positive mix means sales shifted toward more expensive products. Total volume effect + mix effect + price effect (+ interaction) = total sales change.
  • Annualised growth (using month gap only) = (sales 2 ÷ sales 1)^(12 ÷ months) − 1; for comparing periods of different length.

Limitations and misuse

  • The two periods must be the same length and definition (both gross or both net of discount and returns); comparing a month with a quarter, or a holiday month with a normal month, makes growth misleading.
  • “Real growth” is only as good as the index you chose; CPI is not necessarily your product’s market inflation. Always keep index source and period beside the result.
  • "Price" in this tool is the weighted average of revenue ÷ quantity; if a product's size or pack mix changed, part of the "price effect" is really within-product mix. To see mix, split the products in the file.
  • The two decomposition methods give two different answers and neither is “more correct”; state the method in the report and do not switch between periods.
  • Sales growth is not profit growth: with cost inflation, sales may grow while profit shrinks. For profit per order, see the true order profit tool.
  • This tool is a calculator, not a forecast and not advice: no figure is pricing or investment advice.

راهنمای این ابزار

وقتی فروش تغییر کرده، ببینید چقدرش از تغییر قیمت آمده و چقدرش از تعداد فروش؛ و اگر شاخص قیمت بدهید، رشد پس از تورم چقدر است.

این عددها را چطور بخوانم؟
  • رشد اسمی: درصد تغییر فروش از دورهٔ اول به دوم، بدون کم‌کردن تورم.
  • رشد واقعی پس از تورم: همان رشد، پس از کنار گذاشتن افزایش قیمت‌ها طبق شاخصی که خودتان داده‌اید. اگر منفی است، فروش شما کمتر از آن شاخص بالا رفته.
  • اثر حجم: چند تومان از تغییر فروش به‌خاطر تغییر تعداد فروش است.
  • اثر قیمت: چند تومان از تغییر فروش به‌خاطر تغییر قیمت میانگین است. قیمت میانگین یعنی فروش تقسیم بر تعداد، نه قیمت روی برچسب.
  • اثر ترکیب (فقط با فایل محصول‌ها): مثبت یعنی فروش به سمت محصول‌های گران‌تر رفته، منفی یعنی به سمت ارزان‌ترها.
  • جمع اثرها همیشه برابر کل تغییر فروش است.
  • رشد سالانه‌شده: همین رشد، به نرخ یک سال؛ برای مقایسهٔ فاصله‌های متفاوت. فقط وقتی می‌آید که فاصلهٔ دو دوره را داده باشید.
با این نتیجه چه چیزی را بررسی کنم؟
  1. ببینید دو دوره هم‌طول و هم‌تعریف‌اند؛ مقایسهٔ ماهی که تعطیلی یا حراج داشته با ماه معمولی گمراه‌کننده است.
  2. اگر بیشترِ رشد از قیمت آمده، تعداد فروش و تعداد مشتری را جدا بررسی کنید.
  3. اگر اثر حجم منفی است، با «فایل محصول‌ها» ببینید کدام محصول‌ها کمتر فروخته‌اند.
  4. رشد فروش، رشد سود نیست؛ سود هر سفارش را با ابزار «سود واقعی سفارش» ببینید.
این ابزار برای چه کسی است و چه داده‌ای می‌خواهد؟
  • صاحب کسب‌وکاری که می‌خواهد بداند رشد فروشش واقعی است یا فقط اثر بالا رفتن قیمت‌ها.
  • کسی که فروش دو دورهٔ هم‌طول را دارد: دو ماه، دو فصل یا دو سال.
  • برای دیدن روند چند دوره یا پیش‌بینی فروش مناسب نیست؛ این ابزار فقط دو دوره را با هم مقایسه می‌کند.
  • جمع فروش هر دوره: از گزارش فروش نرم‌افزار حسابداری یا پنل فروشگاه. هر دو دوره با یک تعریف؛ مثلاً هر دو پس از تخفیف و مرجوعی.
  • تعداد فروش هر دوره (اختیاری): از همان گزارش. بدون آن، سهم قیمت و سهم تعداد از هم جدا نمی‌شود.
  • شاخص قیمت (اختیاری): عدد شاخص هر دو دوره را از یک منبع رسمی بردارید و نام منبع را بنویسید. ابزار هیچ نرخ تورمی از خودش ندارد.
  • برای تحلیل محصول به محصول: یک فایل CSV که هر سطرش یک محصول در یک دوره است، با ستون‌های محصول، دوره، تعداد و قیمت یا درآمد. از اکسل می‌توانید با قالب CSV ذخیره کنید.
هر ورودی یعنی چه؟
Input mode
«دو عدد کل» برای وقتی که فقط جمع فروش دو دوره را دارید؛ «فایل محصول‌ها» برای وقتی که فروش هر محصول را جدا دارید.
Price/volume decomposition method
روش تقسیم تغییر فروش بین قیمت و تعداد. هر دو روش به یک جمع می‌رسند و فقط سهم‌ها فرق می‌کند؛ اگر دلیلی برای انتخاب ندارید «متقارن» را نگه دارید.
Period 1 sales
جمع فروش دورهٔ قدیمی‌تر.
Period 2 sales
جمع فروش دورهٔ جدیدتر.
Period 1 sales quantity
تعداد واحد فروخته‌شده در دورهٔ قدیمی‌تر. اگر ندارید خالی بگذارید.
Period 2 sales quantity
تعداد واحد فروخته‌شده در دورهٔ جدیدتر.
Unit price for period 1 (optional)
قیمت هر واحد در دورهٔ قدیمی‌تر. فقط وقتی تعداد را ندارید به کار می‌آید: تعداد از فروش تقسیم بر قیمت به دست می‌آید.
Period 2 price per unit (optional)
قیمت هر واحد در دورهٔ جدیدتر؛ فقط وقتی تعداد را ندارید به کار می‌آید.
Price index period 1
عدد شاخص قیمت در دورهٔ قدیمی‌تر، از منبعی که خودتان انتخاب کرده‌اید.
Price index for period 2
عدد شاخص قیمت در دورهٔ جدیدتر، از همان منبع.
Index source and period
نام منبع و تاریخ شاخص. وقتی شاخص وارد می‌کنید، نوشتن آن لازم است.
Period 1 name
نامی که در نتیجه برای دورهٔ قدیمی‌تر نوشته می‌شود.
Period 2 name
نامی که در نتیجه برای دورهٔ جدیدتر نوشته می‌شود.
Gap between the two periods in months
فاصلهٔ دو دوره به ماه، مثلاً ۱۲ برای دو سال پشت‌سرهم. با آن، رشد سالانه‌شده حساب می‌شود.
CSV file contents
محتوای فایل محصول‌ها. سطر اول نام ستون‌هاست و فایل باید دقیقاً دو دوره داشته باشد.
از این نتیجه چه چیزی را نمی‌توان فهمید؟
  • نمی‌گوید چرا فروش تغییر کرده؛ فقط تغییر را بین قیمت، تعداد و ترکیب محصول‌ها تقسیم می‌کند.
  • دربارهٔ سود چیزی نمی‌گوید.
  • آینده را پیش‌بینی نمی‌کند و روند چند دوره را نشان نمی‌دهد.
  • رشد واقعی فقط به اندازهٔ شاخصی که انتخاب کرده‌اید درست است؛ تغییر قیمت در بازار محصول شما ممکن است با شاخص کل فرق داشته باشد.
  • دو روش تجزیه دو سهم‌بندی متفاوت می‌دهند و هیچ‌کدام درست‌تر از دیگری نیست.

RESOURCES قالب داشبورد بازاریابی و فروش

Formula version and date

VERSION Formula version 1.0 · Last changed: 19 September 2026