Google Sheets Functions in Excel: The Equivalents Guide
- IMPORTRANGE has no formula twin in Excel. Use an external reference like
='[Sales 2026.xlsx]Data'!A1:D500for a few cells, or Power Query (Data > Get Data > From File > From Excel Workbook) for a whole table. - QUERY becomes FILTER, SORT and CHOOSECOLS in Excel for Microsoft 365, with GROUPBY or PIVOTBY for the group by part. A PivotTable or Power Query also works.
- ARRAYFORMULA is not needed in Excel 365. Any formula that returns more than one value spills into the cells below it on its own.
- Most other functions have a direct swap: SPLIT to TEXTSPLIT, REGEXMATCH to REGEXTEST, GOOGLEFINANCE to the Stocks data type or STOCKHISTORY, GOOGLETRANSLATE to TRANSLATE. UNIQUE, FILTER and SORT keep their names.
- Downloading a Google Sheet as .xlsx freezes every Sheets-only formula inside a
__xludf.DUMMYFUNCTIONplaceholder. The values look right and never change again.
The short answer
The Excel equivalent of IMPORTRANGE is a linked workbook reference or a Power Query connection, and almost every other Google Sheets function has a direct Excel replacement, often with the same name. The table below maps each one. The catch is that Excel splits the work differently: Google Sheets does a lot inside formulas (pulling data from the web, running a query, drawing a sparkline), while Excel hands those jobs to features like Power Query, data types and the Insert tab. So a few functions do not translate into a formula at all. They translate into a feature.
Everything below assumes Excel for Microsoft 365. Several replacements (TEXTSPLIT, REGEXTEST, GROUPBY, CHOOSECOLS, TRANSLATE) are not in older one-time purchase versions like Excel 2019, so check the "Applies to" line on Microsoft's page for each function if your team is on an older copy.
The complete Google Sheets to Excel translation table
Each row gives the Sheets function, what to use in Excel, and the one difference most likely to trip you up.
| Google Sheets | Excel equivalent | Watch out for |
|---|---|---|
| IMPORTRANGE | External reference ='[Book.xlsx]Sheet1'!A1:D500, or Power Query From Excel Workbook | Needs a file Excel can open, not a Google URL |
| QUERY | FILTER + SORT + CHOOSECOLS, GROUPBY / PIVOTBY, or a PivotTable | No query string; each clause is its own function |
| ARRAYFORMULA | Nothing. Write the formula and it spills | A blocked spill range shows #SPILL! |
| GOOGLEFINANCE (current price) | Stocks data type, then =A2.Price | Data is delayed and needs a Microsoft account |
| GOOGLEFINANCE (history) | STOCKHISTORY | Interval is a number: 0 daily, 1 weekly, 2 monthly |
| SPLIT | TEXTSPLIT | Different defaults for empty values and multi-character delimiters |
| JOIN | TEXTJOIN | Extra argument to skip blanks |
| REGEXMATCH | REGEXTEST | Case flag is an argument, not (?i) |
| REGEXEXTRACT | REGEXEXTRACT | Capture groups need return_mode 2 |
| REGEXREPLACE | REGEXREPLACE | Replaces every match by default, same as Sheets |
| IMPORTHTML | Power Query: Data > From Web, pick the table | A one-time setup, then Refresh |
| IMPORTXML | Power Query From Web, or FILTERXML(WEBSERVICE(url), xpath) | FILTERXML is Windows only and needs valid XML |
| IMPORTDATA | Power Query From Text/CSV or From Web | Same refresh model as above |
| UNIQUE / FILTER / SORT | UNIQUE / FILTER / SORT | FILTER conditions combine with *; SORT uses 1 and -1, not TRUE and FALSE |
| SORTN | TAKE(SORT(range, col, -1), n) | Ties are not handled the way SORTN's tie modes do |
| COUNTUNIQUE | COUNTA(UNIQUE(range)) | Blank cells count as one unique value |
| FLATTEN | TOCOL | Second argument can drop blanks and errors |
| GOOGLETRANSLATE | TRANSLATE | Microsoft 365 only, with a daily quota |
| SPARKLINE | Insert > Sparklines on the ribbon | Not a formula, so it cannot sit inside IF |
| ISEMAIL / ISURL | No function. Use a REGEXTEST pattern | Write a pattern that matches your own rules |
IMPORTRANGE in Excel: three ways to pull data from another file
In Google Sheets, IMPORTRANGE takes a spreadsheet URL and a range string and pulls those cells into your sheet. Excel has no function that does this, but it has three tools that cover the same need. Which one fits depends on how much data you are pulling and where the source lives.
1. An external reference, for a handful of cells. With both workbooks open, type = in the destination cell, switch to the source workbook and click the cell or select the range. Excel writes the reference for you:
='[Sales 2026.xlsx]Data'!$A$1:$D$500
When the source is closed, Excel stores the full path instead, like ='C:\Reports\[Sales 2026.xlsx]Data'!A1:D500. In Excel 365 a range reference like this spills, so it behaves a lot like IMPORTRANGE. The downside is that it breaks when someone renames or moves the source file, and Excel asks before it refreshes links from a closed workbook. You manage them from the Data tab under Workbook Links (called Edit Links in older versions).
2. Power Query, for a whole table. Go to Data > Get Data > From File > From Excel Workbook, choose the file, pick the sheet or table in the Navigator, and click Load (or Transform Data to filter it first). The result lands as an Excel table and updates with Data > Refresh All. This is the better choice when the source has hundreds of rows, when you only want some columns, or when you want to stack several files together. It also does not break on a row insert the way a fixed range can.
3. Publish the Google Sheet as CSV, if the data has to stay in Google. In Google Sheets, use File > Share > Publish to web, choose the sheet and the CSV format, and copy the link. In Excel, go to Data > From Web, paste that link, and load it. Excel now pulls the live Google data on every refresh. Be careful with this one: a published link can be opened by anyone who has it, so never use it for salaries, customer lists or anything private.
QUERY in Excel: rebuild it clause by clause
QUERY is the function people miss most after the switch, because it does filtering, column picking, sorting and grouping in one string. Excel has no single replacement, but in Excel for Microsoft 365 each clause maps to one function, and they nest cleanly.
Say the Sheets formula is:
=QUERY(A1:D100, "select A, D where C > 100 order by D desc", 1)
The Excel 365 version:
=SORT(FILTER(CHOOSECOLS(A2:D100, 1, 4), C2:C100 > 100), 2, -1)
Read it from the inside out. CHOOSECOLS is the select (columns 1 and 4). FILTER is the where; its condition still points at column C even though C is not in the output. SORT is the order by: sort by the second output column, and -1 means descending.
For a group by, such as =QUERY(A1:E500, "select B, sum(E) where C = 'East' group by B order by sum(E) desc", 1), use GROUPBY:
=GROUPBY(B2:B500, E2:E500, SUM, 0, 0, -2, C2:C500 = "East")
The arguments after SUM are: 0 for no headers, 0 for no total row, -2 to sort by the second output column descending, and the last one is the filter. Microsoft documents every argument on its GROUPBY page. When you need categories across the top as well, PIVOTBY works the same way with a second field.
If nobody on the team wants to maintain nested formulas, a PivotTable (Insert > PivotTable) gives the same grouped totals with drag and drop, and Power Query handles the filter and sort as steps you can see and edit. For bigger jobs, our guide to Power Query vs formulas walks through when each one is the right call.
Is there a Power Query equivalent in Google Sheets?
Not a built-in one, and that gap is often why people move to Excel in the first place. Google Sheets spreads the job across several tools: QUERY reshapes data, IMPORTRANGE, IMPORTDATA, IMPORTHTML and IMPORTXML pull it in, and Apps Script handles cleanup you want to repeat. Each piece lives in a different place, so a long cleanup turns into a chain of helper tabs and scripts.
Power Query does all of it as one list of recorded steps: connect to a source, remove columns, split text, fix dates, merge another table, then load. Next month you press Refresh and every step runs again on the new data. When you migrate, the IMPORT functions and any helper tabs that only exist to clean data are the best candidates to move into Power Query instead of rewriting them as Excel formulas.
ARRAYFORMULA: you do not need it in Excel
In Google Sheets, =ARRAYFORMULA(B2:B100 * C2:C100) tells Sheets to run the formula on every row. In Excel 365 you just write =B2:B100 * C2:C100. Excel calls these dynamic arrays: any formula that returns more than one value spills down into the cells below. If something is in the way, you get #SPILL! until you clear those cells.
Two habits from Sheets need changing. First, open-ended ranges like A2:A are a Sheets feature; in Excel use a fixed range or, better, turn the data into a table (Ctrl+T) and write =[@Qty] * [@Price], which grows with the data. Second, the common Sheets pattern =ARRAYFORMULA(IF(A2:A = "", "", B2:B * C2:C)) to hide blank rows is not needed in a table, since a table has no blank rows to hide. Our guide to dynamic arrays in Excel covers spilling in more depth.
GOOGLEFINANCE: the Stocks data type and STOCKHISTORY
For a current price, Sheets uses =GOOGLEFINANCE("NASDAQ:MSFT", "price"). In Excel, type the ticker (MSFT) in a cell, select it, and click Data > Stocks. The cell turns into a linked record with a small icon, and =A2.Price pulls the price from it. Other fields like market cap are in the Add Column button that appears next to the cell. Microsoft notes in its stock quote guide that the data is delayed and not meant for trading, and that you need Microsoft 365 or a free Microsoft account.
For history, =GOOGLEFINANCE("NASDAQ:MSFT", "close", DATE(2026,1,1), DATE(2026,6,30), "DAILY") becomes:
=STOCKHISTORY("MSFT", DATE(2026,1,1), DATE(2026,6,30), 0, 1, 0, 1)
The arguments after the dates are the interval (0 daily, 1 weekly, 2 monthly), headers (1 shows them), and then the columns you want: 0 is the date and 1 is the close. 2 to 5 add open, high, low and volume. STOCKHISTORY needs a Microsoft 365 Personal, Family, Business Standard or Business Premium subscription.
SPLIT, REGEX and the text functions
SPLIT to TEXTSPLIT. =SPLIT(A2, ",") becomes =TEXTSPLIT(A2, ","), but the defaults are different. Google's SPLIT treats each character of the delimiter as its own split point and drops empty pieces. TEXTSPLIT treats the delimiter as one whole string and keeps empty pieces. To get the Sheets behavior for =SPLIT(A2, ", "), list each character in an array and set ignore_empty to TRUE:
=TEXTSPLIT(A2, {",", " "}, , TRUE)
REGEXMATCH to REGEXTEST. Excel for Microsoft 365 now has three regex functions. Two keep their Sheets names, and the match test is renamed:
| Google Sheets | Excel 365 |
|---|---|
=REGEXMATCH(A2, "^\d{5}$") | =REGEXTEST(A2, "^\d{5}$") |
=REGEXEXTRACT(A2, "\d+") | =REGEXEXTRACT(A2, "\d+") |
=REGEXEXTRACT(A2, "(\w+)@(\w+)") | =REGEXEXTRACT(A2, "(\w+)@(\w+)", 2) |
=REGEXREPLACE(A2, "\s+", " ") | =REGEXREPLACE(A2, "\s+", " ") |
=REGEXMATCH(A2, "(?i)invoice") | =REGEXTEST(A2, "invoice", 1) |
The two differences that matter. When a pattern has capture groups, Sheets returns the groups, but Excel returns the whole match unless you set return_mode to 2, as in the third row. For case, Excel has a case_sensitivity argument at the end (1 means ignore case) instead of the inline flag. Under the hood, Excel uses the PCRE2 flavor of regex, while Google Sheets uses RE2. PCRE2 accepts more syntax, such as lookaheads, so patterns that work in Sheets will almost always work in Excel, but not always the other way around.
JOIN, FLATTEN and COUNTUNIQUE. =JOIN(", ", A2:A10) becomes =TEXTJOIN(", ", TRUE, A2:A10), where TRUE skips blank cells. =FLATTEN(A2:C10) becomes =TOCOL(A2:C10). =COUNTUNIQUE(A2:A100) becomes =COUNTA(UNIQUE(A2:A100)).
IMPORTXML and IMPORTHTML: use Power Query From Web
For =IMPORTHTML(url, "table", 1), go to Data > From Web in Excel, paste the page address, and Power Query shows every table it found on the page in the Navigator. Pick the one you want and click Load. Microsoft's web import guide covers the steps, including Add Table Using Examples for data that is not in a real HTML table.
IMPORTXML is harder, because Power Query From Web does not take an XPath. If the source is a proper XML feed, Excel for Windows can do it in a formula: =FILTERXML(WEBSERVICE("https://example.com/feed.xml"), "//item/title"). Microsoft notes that FILTERXML does not work in Excel for the web or on a Mac, and it fails on most ordinary web pages because HTML is rarely valid XML. For those pages, use From Web with Add Table Using Examples instead.
The big change from Sheets is when the data updates. IMPORTHTML recalculates on its own schedule. Power Query only updates when you refresh, or on a timer you set by right-clicking the query in Data > Queries & Connections and choosing Properties. That is usually a good thing, since your numbers stop changing under you in the middle of a meeting.
UNIQUE, FILTER and SORT: same names, small differences
These three exist in both apps and do the same thing, but the arguments are not identical, so a straight copy and paste can fail.
- FILTER with two conditions. Sheets takes them as separate arguments:
=FILTER(A2:C100, B2:B100 = "East", C2:C100 > 100). Excel takes one condition, so multiply them for AND:=FILTER(A2:C100, (B2:B100 = "East") * (C2:C100 > 100)). Use+for OR. - FILTER with no results. Excel's third argument sets what to show when nothing matches, for example
"No matches". Without it you get#CALC!. - SORT direction. Sheets uses TRUE or FALSE for ascending:
=SORT(A2:C100, 3, FALSE). Excel uses 1 or -1:=SORT(A2:C100, 3, -1). Sorting by several columns in Excel takes arrays, like=SORT(A2:C100, {2, 3}, {1, -1}).
What has no real equivalent
A few things do not survive the move as formulas. Plan for these before you start, since they are where a migration takes real time.
- IMPORTRANGE as a live formula over the web. Excel's options all need a file path or a link Excel can open. There is no way to type a Google Sheets URL into a formula and get private data back.
- QUERY's query language. No Excel function reads a SQL-style string. You rebuild it from functions, a PivotTable or Power Query, as shown above.
- SPARKLINE as a formula. Excel sparklines are made from Insert > Sparklines (Line, Column or Win/Loss). They update when the data changes, but you cannot build one inside an IF or change its color with a formula the way
SPARKLINE(range, {"color", "red"})can. - GOOGLETRANSLATE in older Excel. Excel for Microsoft 365 has TRANSLATE, written as
=TRANSLATE(A2, "en", "es"), and it works much like GOOGLETRANSLATE, with a daily quota. Versions outside Microsoft 365, such as Excel 2021, have nothing built in, so the text has to be translated somewhere else and pasted back. - ISEMAIL and ISURL. Excel has no check functions for these. A REGEXTEST pattern does the job, but you decide what counts as valid.
- Apps Script. Custom menus, triggers and script-based functions do not come across at all. The Excel options are Office Scripts or VBA, and either one means a rewrite.
What breaks when you open a Google Sheet export as .xlsx
First, a file ending in .gsheet is not the spreadsheet. It is a small shortcut file that Google Drive for desktop creates, and Excel cannot open it. To get a real Excel file, open the sheet in Google Sheets and use File > Download > Microsoft Excel (.xlsx).
That download keeps your data, formatting and any formula Excel understands. Formulas Excel does not have are handled in a way that is easy to miss: Google wraps each one in a placeholder that looks like this:
=IFERROR(__xludf.DUMMYFUNCTION("QUERY(A1:D100,""select A"")"), "Region")
The value at the end is whatever the cell showed in Google Sheets when you downloaded it. So the sheet opens with every number in place, and it looks fine. But those cells are now fixed text and numbers. They will not recalculate when the data changes, and nothing warns you.
To find them all, press Ctrl+F, open Options, set Look in to Formulas, and search for DUMMYFUNCTION. Find All lists every cell that needs rewriting. Work through them with the translation table above, starting with the ones other formulas depend on. Our article on XLSX vs Google Sheets explains why the two file formats store formulas differently in the first place.
Rewriting a sheet full of Google formulas?
Paste the Google Sheets formula or describe what it does, and XLsheetAI writes the Excel version for you and explains each part, so you can check it before it goes into the workbook.
Still deciding whether to move at all? Read our Excel vs Google Sheets comparison first. If you are already in Excel, Power Query vs formulas helps you decide where each translated piece should live, and FILTER, SORT and UNIQUE in Excel covers the functions you will use most.
FAQ
What is the Excel equivalent of IMPORTRANGE?
There is no single function. To pull a few cells from another workbook, use an external reference such as ='[Sales 2026.xlsx]Data'!A1:D500. To pull a whole table you can filter and refresh, use Power Query: Data > Get Data > From File > From Excel Workbook. Both need the source file somewhere Excel can open it, not a Google Sheets URL.
Does Excel have a QUERY function like Google Sheets?
No. Excel has no function that takes a SQL-style query string. In Excel for Microsoft 365 you rebuild it from FILTER for the where clause, SORT for order by, CHOOSECOLS for select, and GROUPBY or PIVOTBY for group by. A PivotTable or Power Query does the same job without formulas.
Is there a Power Query equivalent in Google Sheets?
Not a built-in one. Google Sheets covers parts of the job with QUERY for reshaping data, IMPORTRANGE, IMPORTDATA, IMPORTHTML and IMPORTXML for pulling it in, and Apps Script for repeatable cleanup. Power Query in Excel does all of that as one list of recorded steps you refresh with a click.
Does Excel have REGEXMATCH?
Excel for Microsoft 365 has REGEXTEST, which does the same thing and returns TRUE or FALSE, plus REGEXEXTRACT and REGEXREPLACE with the same names as in Google Sheets. Excel uses the PCRE2 flavor of regex while Google Sheets uses RE2, so most patterns carry over as written.
Why do my formulas show __xludf.DUMMYFUNCTION after downloading a Google Sheet as Excel?
Google Sheets wraps any formula Excel cannot run, such as QUERY, IMPORTRANGE or GOOGLEFINANCE, in a placeholder called __xludf.DUMMYFUNCTION inside an IFERROR, with the last value it calculated as the fallback. The numbers look right but never update. Rewrite each one with an Excel equivalent from the table in this guide.
XLsheetAI