Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

CSV Calculated Column (Formulas)

Spreadsheet formulas for whole CSV and Excel files, right in your browser.

Free preview, no sign-upIncluded in your pass Pro tool Pro pass: ₹179 / $5.99 for 30 days On this device: nothing is sent
+3 +1 more details No uploadWorks offline once opened Data

Free preview: the counts and the first rows of the table with your new columns (up to 10; a single row is shown with its new values hidden). Locked until you unlock it: download and copy.

Pro pass ₹179 for 30 days or ₹79 for 1 week, one‑time. Pro pass $5.99 for 30 days or $2.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the counts and the first rows of the table with your new columns (up to 10; a single row is shown with its new values hidden).
  • Locked until you unlock it: download and copy.
  • Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

1. Table

Open a CSV or Excel file, or paste rows copied from a spreadsheet (with the header row).

Or paste the table (from Excel, Google Sheets or a CSV)

Next steps Done. What next?

Start over

A Pro pass unlocks the full result. See passes

All data & spreadsheet tools

About the CSV Calculated Column (Formulas)

Add new columns to a CSV or Excel file with the formulas you know from spreadsheets — [Price] * [Qty], IF([Amount] > 1000, "Large", "Small"), DATEDIFF([Ordered], [Delivered]) — and apply them to every row at once, even in files with hundreds of thousands of rows that are slow or impossible to open in a spreadsheet. Over 100 functions cover arithmetic, logic, text, dates, whole-column totals (SUM([Amount])), group totals (SUMIF, COUNTIFS), lookups inside the table (XLOOKUP), ranks, running totals, percent of total, and the previous or next row.

Type a formula and the first rows update as you type, with a clear message pointing at any mistake. Then press Apply to work out every row and, with a pass, download a CSV or an Excel file (where new numbers and dates are real numbers and dates) or copy the result into a spreadsheet. The formulas are worked out by this page in your browser, by a formula engine that never runs your text as code; the file is never uploaded.

Without a pass, the free preview shows the first rows with your new columns; the CSV and Excel files and the copy unlock with a Pro pass.

How to use it

  1. Open a CSV or Excel file, or paste rows copied from a spreadsheet with the header row. (No file at hand? Press Try it with an example sales table.)
  2. Name the new column and type its formula. Use Insert a column… to add a column name, or search the Functions list and press Insert. Column names go in brackets: [Unit price].
  3. Watch the preview of the first rows: a formula with a mistake shows what is wrong and marks the place. Add more columns with Add a column — each one can use the columns before it.
  4. Choose where the new columns go, how many decimals to show and how errors are written, then press Apply to all rows and — with a pass, or after unlocking this result — download the CSV or Excel file, or copy it. Save the formulas under Save or reuse formulas to run them again on the next file.

Examples

Line totals, tax and a running total
Input
Total = [Price] * [Qty]
Tax = ROUND([Total] * 0.18, 2)
Running total = RUNNING_SUM([Total])
Result
Price 120.50, Qty 3 → Total 361.50, Tax 65.07; the running total adds each row’s Total to the rows above it.
Share of the whole and of each group
Input
Share % = ROUND(PERCENT_OF_TOTAL([Sales]), 1)
Share of region = [Sales] / SUMIF([Region], [@Region], [Sales])
Result
Sales of 250 out of 1,000 → 25 (%); out of a region total of 500 → 0.5.
Dates: days to pay, due dates, weekdays
Input
Days to pay = DATEDIFF([Invoice date], [Paid on])
Due = EDATE([Invoice date], 1)
Day = TEXT([Invoice date], "dddd")
Result
2026-01-09 → 2026-02-15 gives 37 days; due 2026-02-09; Friday.
Cleaning text and flagging duplicates
Input
Name = PROPER(TRIM([Name]))
Domain = TEXTAFTER([Email], "@")
Duplicate = COUNTIF([Email], [@Email]) > 1
Result
"  asha RAO " → "Asha Rao"; asha@example.com → example.com; TRUE for every e-mail that appears more than once.

Common uses

  • Adding totals, taxes, margins and discounts to an exported order or invoice list.
  • Working out ages, days to pay, overdue flags and due dates from date columns.
  • Ranking sales people or products, and showing each one’s share of the total or of its region.
  • Cleaning and combining text columns (names, codes, e-mails) before an import.
  • Running totals and changes from the previous row in bank statements, meter readings or stock lists.

Writing formulas

  • Columns: [Price] is this row’s Price. Names are matched without regard to case or extra spaces; a name with ] in it is written with ]].
  • Text goes in double quotes: "North"; a quote inside text is doubled: "6"" pipe". Numbers use a decimal point in formulas: 0.18.
  • Operators, from loosest to tightest: comparisons = <> < > <= >=, then & (joins text), + -, * /, ^ (power), % after a number (18% is 0.18), and a minus sign before a value — so -2^2 is 4, and 2^3^2 is 64, as in spreadsheets.
  • Arguments are separated by commas or semicolons: ROUND([Amount], 2) and ROUND([Amount]; 2) are the same. A leading = is optional.
  • A formula can use the file’s columns and the new columns above it. A new column named like an existing one replaces it: its formula reads the old values, later formulas the new ones.

A whole column or this row

Inside functions that work on ranges — SUM, AVERAGE, MIN, MAX, COUNT, MEDIAN, STDEV, LARGE, RANK, COUNTIF, SUMIF, XLOOKUP and the like — a column in brackets means the whole column, as SUM(B:B) does in a spreadsheet: [Amount] / SUM([Amount]) is each row’s share. Everywhere else it means this row’s value. [@Amount] always means this row, so SUM([@Q1], [@Q2], [@Q3]) adds three cells of the row while SUM([Q1], [Q2]) adds two whole columns (the page warns when a formula gives every row the same result).

Row functions

These look beyond the current row: ROW() (1 for the first data row) and ROWS(); PREV(value, n, default) and NEXT(…) (also called LAG and LEAD) for the value n rows above or below; RUNNING_SUM, RUNNING_COUNT, RUNNING_AVERAGE, RUNNING_MIN and RUNNING_MAX from the first row down to this one; PERCENT_OF_TOTAL(value), this row’s share in percent; and RANK(number, column, order) — 1 for the largest (or, with order 1, the smallest), ties sharing a rank as in RANK.EQ. RANK([Sales]) ranks each row’s Sales. They follow the order of the rows in the file.

How values are read

CSV cells are text, so each cell is read the way a spreadsheet reads it when it opens the file: 1,234.50, $1,200, (300) (a negative), 12.5% and 1.2E3 are numbers; with decimal comma chosen, 1.234,50 is. Dates such as 2026-03-15, 15/03/2026 (or 03/15/2026 with month first), 15.03.2026, 15 Mar 2026 and March 15, 2026, with or without a time, are dates (two-digit years 00–69 are 2000–2069, 70–99 are 1970–1999); a time zone such as Z or +05:30 is converted to UTC. An empty cell counts as 0 in arithmetic and as "" in text. Text functions get the cell exactly as written, so LEFT([Code], 2) of 007 is 00.

Dates are numbered as in spreadsheets (days since 30 December 1899, the time of day as the fraction): a date plus a number is a date, one date minus another is a number of days, and one time minus another is a duration such as 08:30 (multiply it by 24 for hours, or show it with TEXT(…, "[h]:mm")). Whole numbers of 16 or more digits, such as card and order numbers, are compared by their exact digits, so COUNTIF([Order], [@Order]) > 1 finds true duplicates. New dates are written as 2026-03-15 (or 2026-03-15 14:30); use TEXT([Date], "dd/mm/yyyy") for another style.

Errors

A row whose value cannot be worked out shows a spreadsheet error instead of stopping the whole file: #DIV/0! (division by zero), #VALUE! (text where a number or date is needed), #N/A (nothing found, from XLOOKUP or IFS), #NUM! (an impossible number, such as the square root of −1). Point at a red cell in the preview to see why; after Apply the page lists the first rows with errors in each column. Wrap a formula in IFERROR(…, 0) to put another value there, or choose Leave the cell empty.

Limitations

  • Tables that open in the page: CSV and TSV files up to 100 MB and workbooks up to 50 MB (one sheet at a time).
  • Formulas work on the columns of one table: there are no cell addresses such as A1 or B2:B9, no other sheets or files, and no array formulas.
  • Function results follow the OpenFormula standard that LibreOffice also follows; a few differ slightly from Excel’s in edge cases (CEILING and FLOOR of negative numbers with no mode, DATEDIF’s "MD" unit, which counts the days after the last whole month). Month and day names in TEXT() are English.
  • There are no regular-expression or random-number functions, so every result can be checked and repeated.

Privacy

On this device: nothing is sent

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

What do I get without a pass?

Without a pass, CSV Calculated Column (Formulas) shows the counts and the first rows of the table with your new columns (up to 10; a single row is shown with its new values hidden). Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

How do I add a column that multiplies two columns in a CSV?

Open the file, name the new column (for example Total) and type [Price] * [Quantity] — use the exact column names, in brackets. Press Apply to all rows and, with a pass, download the CSV or Excel file.

How do I calculate the number of days between two dates?

Use DATEDIFF([Start], [End]) for the days from Start to End (negative when End is earlier), or simply [End] - [Start]. DATEDIFF([Start], [End], "M") counts whole months, "Y" whole years, "H" hours. DATEDIF([Birthday], TODAY(), "Y") gives an age in whole years.

How do I make a running total or a percent-of-total column?

RUNNING_SUM([Amount]) adds up Amount from the first row to each row; ROUND(PERCENT_OF_TOTAL([Amount]), 1) gives each row’s share of the column total in percent; [Amount] / SUMIF([Region], [@Region], [Amount]) gives its share of its region.

Is it safe to type formulas here?

Yes. Formulas are read by a small formula engine written for this page: it only knows its own functions and never runs your text as program code, so a formula cannot do anything but calculate. The file stays in your browser.

Will Excel see numbers and dates in the download?

Yes, in the Excel download: new columns keep their numbers, dates (as real Excel dates), TRUE/FALSE and text, with the decimals you chose; the file’s own columns that are entirely numbers become numbers too, while codes such as 007 stay text. The CSV download writes dates as 2026-03-15, which Excel and Google Sheets read as dates.

Can I save my formulas to use again?

Yes. Under Save or reuse formulas, give the set a name and press Save: every new column’s name, formula and decimals is kept in this browser, so next month’s export needs one click on Use. Download formulas saves the set as a .json file to open on another device or to share; the formulas work on any table with the same column names.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.