October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
The Finance Base
The Money Desk · Blog
Re:

How to Track Hundreds of Stocks in Google Sheets

Use one row per exchange-qualified ticker, keep quote formulas in a single source table, and separate watchlist data from transactions and dashboard summaries. Learn the formulas, scaling choices, and limitations of GOOGLEFINANCE.
From TheFinanceBase Team9 min to read
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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 GOOGLEFINANCE requests 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Suggested 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
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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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, or IMPORTHTML.
  • Use volatile functions such as TODAY(), NOW(), RAND(), and RANDBETWEEN() 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

More post from the Money Desk

  1. The Money DeskBlogTheFinanceBase09 OCT 267 minMortgage Escrow FAQs: Taxes, Insurance, Shortages, and Refunds
  2. The Money DeskBlogTheFinanceBase09 OCT 265 minHow Mortgage Escrow Accounts Work and What Homeowners Pay For
  3. The Money DeskBlogTheFinanceBase09 OCT 265 minHow to Read a Stock Chart, Volume and Market-Cap Data
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.