Spreadsheet Practice

Convert formulas between Excel and Google Sheets

Paste a formula from one app to get the version for the other. The converter rewrites the parts that differ, keeps everything else as you wrote it, and tells you when a result could come out differently.

Google Sheets formulaSame result
=IFNA(FILTER(A2:C9,B2:B9="East"),"None")

Changed: FILTER.

  • Google Sheets FILTER has no if_empty argument and returns #N/A when nothing matches, so IFNA supplies the fallback.

See it calculate, step by step, in the Formula Explainer

Excel to Google Sheets: what changes

Each row below is the converter's own output.

WhatExcelGoogle SheetsNotes
Range math that spills=B2:B10*C2:C10=ARRAYFORMULA(B2:B10*C2:C10)Math on whole ranges spills by itself in Excel. Google Sheets needs ARRAYFORMULA around it.
TEXTSPLIT=TEXTSPLIT(A2,",")=SPLIT(A2,",",FALSE,FALSE)SPLIT turns pieces that look like numbers into numbers, where TEXTSPLIT keeps them as text.
REGEXTEST=REGEXTEST(A2,"^inv-",1)=REGEXMATCH(A2,"(?i)^inv-")Case-insensitive matching becomes the (?i) flag at the start of the pattern.
TAKE=TAKE(A2:D99,10)=ARRAY_CONSTRAIN(A2:D99,10,COLUMNS(A2:D99))Google Sheets has no TAKE.
TAKE, last rows=TAKE(A2:D99,-3)=CHOOSEROWS(A2:D99,SEQUENCE(3,1,-3))Google Sheets has no TAKE.
DROP=DROP(A1:D99,1)=CHOOSEROWS(A1:D99,SEQUENCE(ROWS(A1:D99)-1,1,2))Google Sheets has no DROP, so CHOOSEROWS and CHOOSECOLS keep the rest.
TEXTBEFORE=TEXTBEFORE(A2,"@")=LEFT(A2,FIND("@",A2)-1)Google Sheets has no TEXTBEFORE. LEFT, MID and FIND give the same text when the delimiter is found; when it isn't, they return #VALUE! where TEXTBEFORE returns #N/A.
TEXTAFTER=TEXTAFTER(A2,"@")=MID(A2,FIND("@",A2)+LEN("@"),LEN(A2))Google Sheets has no TEXTAFTER. LEFT, MID and FIND give the same text when the delimiter is found; when it isn't, they return #VALUE! where TEXTAFTER returns #N/A.
FILTER with if_empty=FILTER(A2:C9,B2:B9="East","None")=IFNA(FILTER(A2:C9,B2:B9="East"),"None")Google Sheets FILTER has no if_empty argument and returns #N/A when nothing matches, so IFNA supplies the fallback.
SORT order=SORT(A2:C9,3,-1)=SORT(A2:C9,3,FALSE)Excel SORT uses 1 or -1 for the order; Google Sheets uses TRUE or FALSE.
SORTBY=SORTBY(A2:B9,C2:C9,-1)=SORT(A2:B9,C2:C9,FALSE)Google Sheets SORT accepts a column outside the range to sort by, so SORTBY becomes SORT.
CONCAT of a range=CONCAT(A2:A9)=CONCATENATE(A2:A9)Google Sheets CONCAT joins exactly two values. CONCATENATE takes any number of values and ranges, like Excel's CONCAT.
GROUPBY=GROUPBY(A2:A99,C2:C99,SUM)=QUERY({A2:A99,C2:C99},"select Col1, sum(Col2) where Col1 is not null group by Col1 label sum(Col2) ''",0)Google Sheets has no GROUPBY. QUERY groups and totals; unlike GROUPBY it adds no Total row, and the data needs no header row here.
STOCKHISTORY=STOCKHISTORY("MSFT",DATE(2026,1,1),DATE(2026,3,31))=GOOGLEFINANCE("MSFT","close",DATE(2026,1,1),DATE(2026,3,31),"DAILY")GOOGLEFINANCE prices come from a different provider and may be delayed by up to 20 minutes, so values can differ slightly.

Google Sheets to Excel: what changes

WhatGoogle SheetsExcelNotes
ARRAYFORMULA=ARRAYFORMULA(B2:B10*C2:C10)=B2:B10*C2:C10Excel calculates arrays on its own (dynamic arrays in Microsoft 365 and Excel 2021+), so ARRAYFORMULA is dropped. In Excel 2019 and earlier, confirm the formula with Ctrl+Shift+Enter instead.
FILTER with several conditions=FILTER(A2:C9,B2:B9="East",C2:C9>100)=FILTER(A2:C9,(B2:B9="East")*(C2:C9>100))Google Sheets FILTER takes each condition as its own argument; Excel takes one, so the conditions are multiplied: (condition 1)*(condition 2) means both must be true.
SORT order=SORT(A2:C9,3,FALSE)=SORT(A2:C9,3,-1)Google Sheets SORT uses TRUE or FALSE for the order; Excel uses 1 or -1, and SORTBY when the sort column is outside the range.
SPLIT=SPLIT(A2,",")=TEXTSPLIT(A2,",",,TRUE)TEXTSPLIT is in Microsoft 365 and Excel 2024. It returns every piece as text, while SPLIT turns pieces that look like numbers into numbers; wrap the result in VALUE if you need numbers.
JOIN=JOIN(", ",A2:A9)=TEXTJOIN(", ",FALSE,A2:A9)TEXTJOIN with FALSE keeps empty cells, as JOIN does. Use TRUE to skip them.
COUNTUNIQUE=COUNTUNIQUE(A2:A99)=COUNTA(UNIQUE(TOCOL(A2:A99,1)))COUNTA(UNIQUE(TOCOL(range,1))) skips blanks as COUNTUNIQUE does. Excel's UNIQUE ignores case, so "Apple" and "apple" count once; Google Sheets counts them as two.
REGEXMATCH=REGEXMATCH(A2,"^INV-\d+$")=REGEXTEST(A2,"^INV-\d+$")REGEXTEST is in Microsoft 365. Google Sheets uses RE2 regular expressions and Excel uses PCRE2; common patterns work the same, but lookarounds work only in Excel.
REGEXEXTRACT with a group=REGEXEXTRACT(A2,"#(\d+)")=REGEXEXTRACT(A2,"#(\d+)",2)Excel's REGEXEXTRACT is in Microsoft 365.
FLATTEN=FLATTEN(A2:C4)=TOCOL(A2:C4)TOCOL reads row by row, as FLATTEN does. Empty cells show as 0 in Excel's result; TOCOL(range,1) skips them.
SORTN=SORTN(A2:B20,3,0,2,FALSE)=TAKE(SORT(A2:B20,2,-1),3)TAKE needs Microsoft 365 or Excel 2024.
ARRAY_CONSTRAIN=ARRAY_CONSTRAIN(A2:D99,10,2)=TAKE(A2:D99,10,2)TAKE needs Microsoft 365 or Excel 2024.
Arrays from ranges={A2:A9,C2:C9}=HSTACK(A2:A9,C2:C9)Google Sheets builds arrays from ranges with braces; Excel uses HSTACK for side by side and VSTACK for stacking (Microsoft 365 and Excel 2024).
Open-ended ranges=SUM(B2:B)=SUM(B2:B1000)Excel has no open-ended ranges like B2:B, so the converted formula stops at row 1000. Change 1000 to your last row, or turn the data into a table.
GOOGLEFINANCE history=GOOGLEFINANCE("MSFT","close",DATE(2026,1,1),DATE(2026,3,31))=STOCKHISTORY("MSFT",DATE(2026,1,1),DATE(2026,3,31),0,1,0,1)STOCKHISTORY is in Microsoft 365, and its prices come from a different provider, so values can differ slightly.
QUERY=QUERY(A1:C99,"select A, sum(C) group by A",1)=QUERY(A1:C99,"select A, sum(C) group by A",1)Excel has no QUERY. Rebuild it from parts: FILTER for where, CHOOSECOLS for select, SORT or SORTBY for order by, TAKE for limit, and GROUPBY or PIVOTBY (Microsoft 365) for group by and pivot. A pivot table works in any version. The formula is left as it was.
IMPORTRANGE=IMPORTRANGE("https://docs.google.com/spreadsheets/d/abc123","Sales!A1:D50")=IMPORTRANGE("https://docs.google.com/spreadsheets/d/abc123","Sales!A1:D50")Excel has no IMPORTRANGE. Link to the other workbook (='[Sales.xlsx]Sheet1'!A1:D50) or pull it in with Data > Get Data (Power Query). The formula is left as it was.

What works the same in both

These functions take the same arguments in Excel (Microsoft 365) and Google Sheets, so formulas built from them copy across unchanged:

  • SUM, AVERAGE, COUNT, MIN, MAX
  • IF, IFS, AND, OR, SWITCH
  • SUMIF(S), COUNTIF(S), AVERAGEIF(S)
  • VLOOKUP, HLOOKUP, INDEX, MATCH
  • XLOOKUP and XMATCH
  • UNIQUE and SEQUENCE
  • TEXTJOIN, LEFT, MID, RIGHT, TRIM, SUBSTITUTE
  • DATE, EOMONTH, EDATE, NETWORKDAYS
  • LET and LAMBDA
  • VSTACK, HSTACK, TOCOL, CHOOSECOLS

Older Excel versions lack the dynamic array functions (FILTER, SORT, UNIQUE, XLOOKUP and newer). The Google Sheets vs Excel comparison covers versions and plans.

No direct equivalent

QUERYGoogle Sheets only. In Excel, combine FILTER, CHOOSECOLS, SORT and TAKE, or use GROUPBY and PIVOTBY in Microsoft 365, or a pivot table.
IMPORTRANGEGoogle Sheets only. In Excel, link to the other workbook or use Power Query.
Live stock pricesGOOGLEFINANCE gives a current price; Excel uses the Stocks data type (=A2.Price). STOCKHISTORY covers price history in Microsoft 365.
GROUPBY and PIVOTBYMicrosoft 365 only. Simple GROUPBY formulas convert to QUERY; the rest are easier as a pivot table.
Structured referencesExcel table references like Table1[Sales] need to become ranges first.

Learn the Google Sheets side: QUERY, ARRAYFORMULA, SPLIT, IMPORTRANGE.

Questions

Do Excel formulas work in Google Sheets?

Most do, unchanged: SUM, IF, SUMIFS, XLOOKUP, INDEX and MATCH, UNIQUE, TEXTJOIN and LET. The differences are in a few function arguments (FILTER, SORT), in functions only one app has (TEXTSPLIT, TAKE, QUERY, SPLIT), and in array formulas, which need ARRAYFORMULA in Google Sheets.

Why does my formula need ARRAYFORMULA in Google Sheets?

Excel 365 spills a formula like =B2:B10*C2:C10 into ten cells on its own. Google Sheets calculates only the first value unless the formula is wrapped in ARRAYFORMULA. Functions built for arrays, like FILTER, SORT and SUMPRODUCT, don't need it.

What is the Google Sheets version of TEXTSPLIT?

SPLIT. It splits at every character of the delimiter by default and drops empty pieces, so the converter sets those arguments to match TEXTSPLIT. SPLIT also turns numbers in the pieces into numbers, where TEXTSPLIT keeps text.

What is the Excel version of QUERY?

There is no single function. FILTER does the where clause, CHOOSECOLS the select, SORT the order by and TAKE the limit; GROUPBY and PIVOTBY in Microsoft 365 do group by and pivot. A pivot table works in every version.

Does the converter check the result?

Every conversion it makes is tested by running both formulas in our formula engine on the same data. When a conversion can give a different result in some cases, such as text versus numbers or a different error, it says "Check the notes" and explains.

Is my formula sent anywhere?

No. The conversion runs in your browser.

Checked against Microsoft and Google documentation in October 2026. Microsoft and Excel are trademarks of the Microsoft group of companies; Google Sheets is a trademark of Google LLC. This converter is independent.