IMPORTRANGE Function in Google Sheets
Imports a range of cells from another Google Sheet. The bridge between sheets — used for cross-spreadsheet dashboards, shared reference data, and consolidating data from multiple files.
Syntax
IMPORTRANGE(spreadsheet_url, range_string)Returns: The imported range, as a spilled array.
Excel equivalent: Power Query 'From OData / Web' is the closest equivalent — not the same architecture.
Parameters
| Name | Required | Description |
|---|---|---|
| spreadsheet_url | Required | The full URL of the source spreadsheet, in quotes. The sheet must be shared with you or with anyone with the link. |
| range_string | Required | A string like "Sheet1!A2:D100" specifying the sheet name and range to import. |
Examples
Pull a range from another sheet
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1abc.../edit", "Orders!A2:E1000")First time you run this on a new source sheet, Sheets shows an "Allow access" button you must click to authorize. After that, the import refreshes automatically.
Wrap with QUERY for filtering
=QUERY(IMPORTRANGE("<url>", "Sheet1!A:E"), "SELECT Col1, Col3 WHERE Col5 > 1000", 1)Inside QUERY, IMPORTRANGE'd columns are referenced by position (Col1, Col2, ...) instead of letter.
Reference the URL from a cell
=IMPORTRANGE(A1, "Sheet1!A:E")If A1 contains the spreadsheet URL, you can pull dynamically based on a variable URL — handy for swap-source dashboards.
When to use an alternative
- Linked spreadsheets in Data → Import Range — You want a one-time copy instead of a live link.
- Connected Sheets (BigQuery) — Source data lives in BigQuery and you need scale.
- Apps Script with SpreadsheetApp — You need programmatic control over what gets imported and when.
Common errors and how to fix them
#REF! "You don't have permission"
Cause: Source sheet isn't shared with you or with the right link visibility.
Fix: First time using a new source, click the "Allow access" prompt that appears in the cell. Or share the source sheet directly with the destination owner.
Slow loads
Cause: Importing a very large range (whole columns of millions of cells).
Fix: Limit to actual data range. Use QUERY inside IMPORTRANGE to filter at the source instead of pulling everything.
#N/A "Result was not autoresized"
Cause: Result spilling would overwrite content below.
Fix: Clear the destination area or move the formula to an empty region.
Related functions
Frequently Asked Questions
How often does IMPORTRANGE refresh?
It updates roughly every 30 minutes by default, or when the spreadsheet recalculates (most cell edits trigger this). For instant refresh after editing the source, force a recalc with Ctrl+Shift+F5 in the destination sheet.
Can IMPORTRANGE pull from a sheet I don't own?
Yes, as long as the source is shared with your account at view-or-higher access. The source owner doesn't need to do anything special — they just need to grant you access to the file.
Why is IMPORTRANGE slow?
Three common reasons: (1) very large ranges (use QUERY inside IMPORTRANGE to filter), (2) chained IMPORTRANGE (sheet A imports from B, B imports from C — each hop adds latency), (3) the source sheet itself is slow. Profile each step.