The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →You can track hundreds of stocks in Google Sheets by keeping one exchange-qualified ticker per row, requesting only the market data you need, and separating raw data from portfolio calculations and dashboards. Google Sheets has no documented official maximum number of GOOGLEFINANCE formulas per spreadsheet, so the practical limits are quote coverage, recalculation time, and workbook complexity—not a published stock-count cutoff.
GOOGLEFINANCE quotes may be delayed by up to 20 minutes, and coverage and available attributes vary. Treat the sheet as an informational tracker, not an execution-grade quote feed. Google’s documentation explains the function’s syntax, attributes, coverage caveats, and historical-data limits: GOOGLEFINANCE in Google Sheets.
Choose what you mean by “track”
A watchlist, a portfolio ledger, and a research database are different jobs. Decide which you need before adding formulas: market quotes alone do not tell Sheets what you own or what you paid.
Watchlist
For a watchlist, keep the securities you follow and the fields you use to compare them, such as price, daily change, market capitalization, P/E, volume, 52-week range, category, and notes.
#1 Best Overall
Portfolio tracker
For owned positions, add shares, average cost, account, cost basis, market value, unrealized gain or loss, and portfolio weight. GOOGLEFINANCE supplies market data; it does not import brokerage holdings, transactions, tax lots, or realized gains.
Research database
If you need financial statements, analyst estimates, dividend histories, extensive price histories, technical indicators, or earnings calendars, the built-in function may not provide enough coverage or detail. Consider a market-data add-on or external data pipeline for those requirements.
Set up a workbook that can scale
Use a normalized table: one security per row, with one authoritative location for its quote data. A practical workbook has four tabs:
- Holdings or Watchlist: symbols, company names, categories, shares, average cost, notes, and calculated position fields.
- Data: the minimum required
GOOGLEFINANCErequests and their results. - Transactions: dated purchases, sales, dividends, fees, and account names if you need an auditable ownership history.
- Dashboard: totals, charts, filters, and compact summaries that refer to the other tabs.
Google recommends reducing chained calculations and unnecessary external imports in large or complex sheets. Keeping quote requests in one place and referencing local cells from the dashboard avoids duplicating work. See Google’s spreadsheet performance guidance.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteSuggested Holdings columns
| Column | Purpose |
|---|---|
| A | Exchange-qualified symbol |
| B | Company |
| C | Category, sector, or personal tag |
| D | Shares owned |
| E | Average cost per share |
| F | Cost basis |
| G | Current quote |
| H | Market value |
| I | Daily change |
| J | Daily percentage change |
| K | Unrealized gain or loss |
| L | Unrealized return |
| M | Portfolio weight |
| N | Data status |
| O | Notes |
For a watchlist rather than a portfolio, leave shares and average cost blank. Keep transaction records separately if you need to preserve a history instead of manually overwriting average cost.
Enter exchange-qualified symbols
Put one ticker in each row of Holdings!A2:A. Use text, not a numeric value, and include the exchange prefix for accuracy. For example:
Rank #2
- Comes with secure packaging
- Easy to read text
- It can be a gift option
NASDAQ:AAPL
NASDAQ:MSFT
NYSE:JNJ
NYSE:BRK.B
Google recommends the exchange-and-symbol form because an unqualified ticker can be ambiguous. Punctuation and international symbols may require the exact market format, and a symbol available on another finance site may still be unsupported or inconsistently returned by Sheets. Reuters instrument codes are not supported. Check Google’s supported syntax and coverage notes for the current guidance.
Add only the quote fields you will use
In the examples below, the formulas go in row 2 and can be filled down. Keep one request for each required ticker-and-attribute combination, then point other calculations to its result rather than repeating the request across tabs.
Price and previous close
Place the current quote in G2:
=IFERROR(GOOGLEFINANCE($A2,"price"),"")
In a helper column on Data, such as Data!B2, request the prior close:
=IFERROR(GOOGLEFINANCE(Holdings!$A2,"closeyest"),"")
The price result is a quote that may be delayed by up to 20 minutes, not a guaranteed live trading price. Google says its financial information is for informational purposes, not for trading purposes or advice: GOOGLEFINANCE help.
Daily change and percentage
If the previous close is in Data!B2, calculate in I2 and J2:
=IFERROR(G2-Data!B2,"")
=IFERROR((G2-Data!B2)/Data!B2,"")
Format the second result as a percentage. Blank or unavailable quote data should remain blank, not be converted to zero.
Other documented attributes
Use only the fields that matter to your decisions. Documented real-time attributes include priceopen, high, low, volume, marketcap, tradetime, datadelay, volumeavg, pe, eps, high52, low52, change, changepct, and closeyest. Availability varies by instrument and attribute. Examples:
=IFERROR(GOOGLEFINANCE($A2,"marketcap"),"")
=IFERROR(GOOGLEFINANCE($A2,"pe"),"")
=IFERROR(GOOGLEFINANCE($A2,"eps"),"")
=IFERROR(GOOGLEFINANCE($A2,"high52"),"")
=IFERROR(GOOGLEFINANCE($A2,"low52"),"")
=IFERROR(GOOGLEFINANCE($A2,"volume"),"")
=IFERROR(GOOGLEFINANCE($A2,"datadelay"),"")
Google documents the full syntax and attribute list, with caveats about instruments and market coverage, in its function reference.
Calculate position values and portfolio totals
Assuming shares are in D, average cost is in E, and price is in G, use these formulas in row 2 and fill down:
| Measure | Formula | What it means |
|---|---|---|
| Cost basis, F2 | =IFERROR(D2*E2,"") |
Shares multiplied by average cost |
| Market value, H2 | =IFERROR(D2*G2,"") |
Shares multiplied by current quote |
| Unrealized gain or loss, K2 | =IFERROR(H2-F2,"") |
Market value less cost basis |
| Unrealized return, L2 | =IFERROR(K2/F2,"") |
Gain or loss divided by cost basis |
| Portfolio weight, M2 | =IFERROR(H2/SUM($H$2:$H),"") |
Position value divided by total market value |
Format return and weight as percentages. For a watchlist row with no shares or cost, blank results are more meaningful than zeroes.
Recommended Free Tools
Portfolio totals
Put summary formulas on the dashboard or above the data table, not in the middle of its rows:
- Total cost basis:
=SUM(F2:F) - Total market value:
=SUM(H2:H) - Total unrealized gain or loss:
=SUM(K2:K) - Total daily change:
=SUM(I2:I) - Portfolio return on cost basis:
=IFERROR(SUM(K2:K)/SUM(F2:F),"")
Do not average individual percentage returns to report a portfolio return; calculate the overall gain against the overall cost basis as above. That measure still is not total return unless dividends, fees, cash flows, splits, and relevant currency effects are accounted for.
Rank #4
Keep the sheet responsive as the list grows
Google does not document a maximum number of ordinary GOOGLEFINANCE formulas per spreadsheet. A workbook with hundreds of rows may work, but performance depends on formula count and complexity, data coverage, recalculation, formatting, and history. A 300-row list with a few fields is substantially lighter than the same list requesting 10–15 attributes for every security.
- Keep one source row per security and avoid duplicate live requests for the same data.
- Keep the dashboard separate from the raw table and use compact summary ranges for charts rather than entire columns.
- Remove unused attributes, excessive conditional-formatting ranges, and long chains of dependent formulas.
- Use local references where possible instead of repeatedly importing data with
IMPORTRANGE,IMPORTDATA,IMPORTXML, orIMPORTHTML. - Use volatile functions such as
TODAY(),NOW(),RAND(), andRANDBETWEEN()only where needed. A manually entered as-of date can be more predictable for a report. - If recalculation remains slow, move historical series to a separate spreadsheet or use periodically refreshed values, a market-data add-on, or an API/database pipeline.
Google’s performance recommendations are at Improve performance of Google Sheets. The separate Sheets API limits concern API usage and should not be confused with a cap on formulas entered in an ordinary spreadsheet.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Google announced performance improvements for spreadsheets with more than one million cells and a beta program to raise the cell limit from 10 million to 20 million in April 2026. The higher limit is tied to beta availability and may vary by account; a higher cell limit does not by itself guarantee a responsive workbook. Details: Google Workspace Updates.
Use historical data in a separate area
A historical request returns an expanding array, including headers. Put it in a clear block or a dedicated tab so the results do not overwrite neighboring cells. For example:
=GOOGLEFINANCE("NASDAQ:AAPL","price",DATE(2025,1,1),DATE(2025,12,31),"DAILY")
Or request the prior 365 days:
=GOOGLEFINANCE(A2,"price",TODAY()-365,TODAY(),"DAILY")
Historical requests use historical attributes rather than every real-time attribute. Google also says historical data cannot be accessed through the Sheets API or Apps Script. Dates passed to GOOGLEFINANCE are treated as noon UTC, which can shift the effective date for exchanges that close earlier. These limits are documented in Google’s function reference.
Test one history series before building many. A daily series for hundreds of securities over several years can make a workbook cumbersome even before charts and formulas are added.
Free tools Windows power users keep installed
One-click scans. No signup required.
Best Value
Turn the table into a usable watchlist or portfolio view
Freeze the header row, turn on a filter, and use a dropdown for categories or sectors. Apply conditional formatting to daily change and gain/loss columns, and sort by market value, daily percentage change, or portfolio weight. Keep charts and top-gainer or top-loser views on the dashboard, using a small summary range rather than the whole data table.
Add a status column so failed requests are visible. In N2:
=IF(A2="","",IF(G2="","CHECK SYMBOL","OK"))
This labels a missing price for review while leaving the quote cell blank instead of treating missing data as zero.
Track transactions, dividends, and currency separately
Multiple purchases and tax lots
For an auditable portfolio, record each transaction in the Transactions tab with date, symbol, account, action, shares, price, and fees. Calculate total shares and cost from those records rather than replacing average cost by hand. The formulas depend on the accounting method: a simple average-cost calculation does not reproduce FIFO, broker-reported tax lots, or tax reporting.
Dividends and corporate actions
A price-only change is not total return. Dividends, fees, stock splits, and other corporate actions need separate inputs or a data source that accounts for them. A split can make share counts, average cost, and price comparisons appear inconsistent; record the adjustment or use a source with appropriately adjusted history.
International holdings
For foreign securities, keep the local quote and currency conversion distinct, and label the reporting currency. A share can rise in local currency while declining in your home currency. Google documents currency use cases, but market coverage is not universal, so test exchange-rate and security data for the markets you use: GOOGLEFINANCE documentation.
Funds and other instruments
Do not assume stocks, ETFs, mutual funds, crypto, and other instruments behave identically. Google documents stock and mutual-fund attributes, but some instruments or fields may return no result. Before building the full list, test a representative security from each market and asset type, including symbols with punctuation.
Troubleshoot missing data and slow calculations
| Symptom | Likely explanation | What to check |
|---|---|---|
#N/A |
Invalid or ambiguous symbol, unsupported market or instrument, unavailable attribute, or temporary data failure. | Test the symbol alone, add the exchange prefix, try price, and verify the attribute is documented for that security. Google warns that not all markets and attributes are covered: function documentation. |
| Blank result | Unavailable data or a formula that intentionally suppresses an error. | Test without IFERROR in a temporary cell, then retain a status indicator. Do not interpret blank as zero. |
| Quote for the wrong listing | Sheets may have resolved an unqualified symbol to another market. | Use the exchange-qualified form and confirm the mapped security. |
| Historical results overwrite nearby cells | The historical formula spills into multiple cells. | Clear a sufficiently large output area or move the formula to its own tab. |
| Slow recalculation | Repeated live requests, large histories, volatile functions, long dependency chains, broad formatting, or external imports. | Reduce attributes and duplicate formulas, shorten dependencies, move histories, and follow Google’s performance guidance. |
| Price seems stale | Quote delay, exchange hours, missing data, or a symbol mapped incorrectly. | Show datadelay where available and display an as-of time or date; do not describe the value as guaranteed live. |
Know when to move beyond GOOGLEFINANCE
| Approach | Best suited to | Trade-off |
|---|---|---|
Built-in GOOGLEFINANCE |
Basic watchlists, simple portfolio calculations, and modest historical needs when delayed quotes and available coverage are acceptable. | Coverage and fields vary; it does not manage transactions, broker sync, tax lots, or execution-grade quotes. |
| Sheets add-on | Users who want broader market fields, batch functions, or more data while staying in a spreadsheet. | Check current coverage, authorization requirements, data quality, plan limits, and subscription terms with the provider. |
| External API or database | Frequent refreshes across many securities, extensive history, caching, auditability, and scheduled ingestion. | Requires integration and maintenance; API quotas and licensing apply. Sheets API quotas are documented separately at Google Sheets API usage limits. |
| Dedicated portfolio application | Brokerage synchronization, tax-lot handling, dividend and split automation, or account aggregation. | Less spreadsheet flexibility; verify the app’s supported brokers, markets, and reporting features. |
Google Sheets is a reasonable starting point when you value a customizable workbook and need basic data. For add-ons, Google’s finance and accounting Marketplace category lists options such as Tickerdata, Finsheet, and Financial Modeling Prep; the listing category alone does not establish current pricing, coverage, or data quality.
One example is SheetsFinance, whose vendor describes market quotes, historical data, financial statements, dividends, options, news, calendars, screening, and global asset coverage. Its Google Workspace Marketplace listing describes access to tens of thousands of stocks and other instruments; the vendor site advertises approximately 87,000 assets across more than 60 exchanges. Those coverage figures are vendor claims, not independent verification. Check current pricing and whether the add-on’s coverage and data handling meet your needs before installing it.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




