Where is data analysis in Google Sheets?

In the formula bar, for some of it. The native column in the table below was checked against Google's own published function list on 6 September 2026 (support.google.com/docs/table/25273), so if Google ships a new function this page is out of date until it is corrected, and it carries the date for that reason. Every Sortia figure on this page came out of the tool itself and was reproduced through the repository's test harness on the same day.

Google Sheets has a function for a t-test and a function for an F-test. It has no function for any ANOVA, and none for any rank-based test. So the answer to “where is data analysis” depends entirely on which analysis you meant, and the only useful form of the answer is the list.

Below are 38 standard analyses, one row each. Eight of them come back from a single built-in call. Twelve you can assemble out of built-in functions and your own arithmetic. Eighteen have nothing: no built-in function returns the analysis or the statistic it is built around, though three of those eighteen rows name a built-in that gets partway. The 38 analyses are the bench Sortia puts in the sidebar. That is a useful list to check against because it is broad and it is written down, but nothing in the native column depends on it: every row there is a statement about Google Sheets.

The finding, before the list. The line Sheets draws is not between easy analyses and hard ones. Six of the eight it performs outright are hypothesis tests, and every one of those either assumes a bell curve or works on counts of categories. The four that take samples of a measured quantity, the three t-tests and the F-test, take exactly two samples each: the two chi-square calls will read a table of any size, but what they compare is counts. All four analyses that compare more than two measured samples at once are in the Nothing column, and so are all three tests that work on ranks instead of on a bell curve. Which is to say: the two situations Sheets has no function for are the two you reach for when the simple case does not hold.

The question no built-in function answers

Twelve loaves. Two ovens down the rows, two recipes across the columns, three bakes of every combination, rise measured in centimeters. The repeats are what let the test ask a third question, beyond whether the oven matters and whether the recipe matters: does the better oven help both recipes equally?

OvenSourdough (rise, cm)Rye (rise, cm)
Deck oven4.23.9
4.44.0
4.34.1
Convection4.84.1
4.94.2
5.04.0

Google Sheets can give you a real result on this data. Put the two recipe columns side by side and run T.TEST(sourdough, rye, 2, 2), the equal-variance two-sample test, and it returns p 0.0036. That is correct, and it is the answer to a different question: it compares the two recipes across both ovens at once, so the oven difference goes into the noise rather than being held apart.

That call is also a one-factor test in disguise. Run the same two columns through single-factor ANOVA in the add-on and F comes back 14.291 at the identical p 0.0036, because a two-group one-factor ANOVA and an equal-variance t-test are the same test wearing different clothes: F is exactly the square of t. One factor, two groups, one probability is the whole of what the built-in covers.

The two-factor test on all twelve loaves puts the recipe effect at p 1.22E-05, about 295 times smaller, and nothing was added to the data: the arrangement of the test is the whole difference. It also writes a row the t-test has no place for. The interaction comes back F 18.750 at p 2.51E-03, which says the answer to which oven depends on which recipe. The twelve numbers above say it in centimeters: convection lifts sourdough from 4.30 to 4.90 and rye from 4.00 to 4.10, a gain of 0.60 against a gain of 0.10, and the average of those two describes neither loaf. Working out that difference of differences is one subtraction you can do in a cell. Scoring it, and arriving at 2.51E-03, is the part no built-in will return.

The tool's own reading of that run, written into the tab in a panel beside the report: “This run: the row factor (F = 36.75, p well under 0.001), the column factor (F = 90.75, p well under 0.001) and the interaction between them (F = 18.75, p = 0.0025) all clear your alpha of 0.05, so each moves the outcome more than chance would ordinarily produce. With the interaction live, neither factor can be read on its own: the effect of one depends on the level of the other.”

The report behind those figures is one table, five rows and no summary block. It is not reprinted here: ANOVA in Google Sheets prints it in full. The grid above is the worked template Oven, Recipe, or Both?, and every figure in this section came out of the tool rather than out of a mock. Three study methods, eighteen students is the one-factor version of the same idea.

The whole bench, one row per analysis

Read the middle column as a claim about Google Sheets and nothing else. A function means one built-in call returns the analysis's own statistic or probability. Parts means every quantity it needs is a built-in function and the method is the bit you write. Nothing means no built-in function returns the analysis or the statistic it is built around. Three of those eighteen rows name a built-in anyway: F.DIST.RT, which reads a tail from a statistic you have already computed yourself, and TREND, FORECAST and LINEST, which fit a straight line to something that is not one.

AnalysisBuilt inWhat Google Sheets gives you
Describe
Descriptive StatisticsPartsAVERAGE, MEDIAN, MODE, STDEV, VAR, SKEW, KURT, MIN, MAX, SUM, COUNT, LARGE, SMALL and CONFIDENCE.T all exist. A thirteen-row summary block is thirteen formulas you write and then keep in step with each other.
HistogramPartsFREQUENCY counts a column into bins you supply. You choose the bins, and the cumulative share is a running total you add.
Rank and PercentilePartsRANK.EQ, RANK.AVG and PERCENTRANK, one value at a time. Joining them into one ranked table, with ties handled the same way throughout, is yours.
Outlier DetectionPartsQUARTILE gives you Q1 and Q3. The fences at 1.5 times the interquartile range are arithmetic, and flagging the rows outside them is a formula per row.
Distribution FittingNothingNo function fits a distribution to a column, and none ranks candidate shapes against each other.
Compare
ANOVA: Single FactorNothingThere is no ANOVA function of any kind. You would build the sums of squares yourself and read the tail with F.DIST.RT.
ANOVA: Two-Factor With ReplicationNothingThe same, with an interaction term to derive as well. This is the worked example above.
ANOVA: Two-Factor Without ReplicationNothingThe same again, for one measurement per combination.
t-Test: PairedA functionT.TEST(range1, range2, tails, type) with type 1. It returns the probability and nothing else.
t-Test: Equal VariancesA functionThe same call with type 2.
t-Test: Unequal VariancesA functionThe same call with type 3. Choosing between the three is the actual decision, and the function will not tell you that you chose wrong.
z-Test: Two SamplePartsZ.TEST(data, value, [standard_deviation]) tests one sample against a value you name, which is a different question. Two samples means computing the difference and its standard error, then reading NORM.S.DIST.
F-Test: Two-SampleA functionF.TEST(range1, range2), the probability only.
Chi-Square: IndependenceA functionCHISQ.TEST(observed_range, expected_range) returns the probability, but it takes both ranges: you build the expected table from the row and column totals first.
Chi-Square: Goodness of FitA functionThe same call, against the expected counts you are testing.
Mann-Whitney UNothingNo function ranks two samples together and scores the result.
Wilcoxon Signed-RankNothingThe same, for paired readings.
Kruskal-WallisNothingThe same, for three groups or more.
Relate
CorrelationA functionCORREL, for one pair. A matrix over ten columns is forty-five of them, laid out by hand.
CovarianceA functionCOVAR, COVARIANCE.P and COVARIANCE.S, again one pair at a time.
RegressionPartsLINEST(known_data_y, [known_data_x], [calculate_b], [verbose]) with verbose set returns the coefficients, their standard errors, R Square, the standard error of the estimate, F, the degrees of freedom and the two sums of squares. It does not return a t statistic, a p-value or a confidence interval for any coefficient. Those come from the standard errors and T.DIST.2T, one coefficient at a time.
Match
Fuzzy LookupNothingLookups match on equality, or on a sorted range. Nothing scores how alike two pieces of text are, so two spellings of one company stay two rows in two totals.
Forecast
Moving AveragePartsAVERAGE over a sliding window is the whole method. The error of the smoothed line is yours to add.
Exponential SmoothingPartsOne recursive formula down a column, once you have picked the weight. No function is named for it, and none picks the weight.
Holt-WintersNothingNo function carries a trend and a season together.
ETS and ARIMA ForecastNothingTREND and FORECAST extend a straight line. There is no ARIMA function, and nothing that fits a family of models and names the winner.
Autocorrelation (ACF)PartsCORREL of a series against itself shifted one row is one lag. The correlogram is that repeated, and the significance band is arithmetic.
Predict
Neural NetworkNothingNo function trains a model on your rows.
Logistic RegressionNothingLINEST is linear. Point it at a yes/no column and it will fit happily and predict above 1 and below 0.
K-Means ClusteringNothingNo function groups rows that resemble each other.
Classification TreeNothingNo function learns if-then rules from your rows.
Association RulesNothingNo function finds which items show up together.
Plan and test
A/B Test (two proportions)PartsThe pooled proportion and the standard error are arithmetic, and NORM.S.DIST reads the tail.
A/B Test Sample SizeNothingNo function computes a sample size.
Sample Size (General)NothingThe same.
Generate
Random Number GenerationPartsRAND, RANDBETWEEN and RANDARRAY draw uniform numbers, and a shape comes from an inverse distribution function applied to RAND. None of the three takes a seed, and all three redraw whenever the sheet recalculates, which is why the same random draws twice is a separate problem.
SamplingPartsA RAND helper column and a sort gives you a random subset. There is no function for a periodic sample.
Transform
Fourier AnalysisNothingNo transform function.

What a built-in test actually hands you

Those six tests, the three t-tests, the F-test and the two chi-square calls, each return a probability and nothing else. No means. No variances. No count of observations, no degrees of freedom, no critical value. If the only thing that leaves your sheet is 0.0036 in a cell, nobody downstream can tell whether it came from the paired test or the unequal-variance one, whether it is one-tailed or two, or how many rows were behind it. That is fine when you are checking something for yourself. It is not a result anyone can audit.

The two that are not tests, CORREL and the covariance functions, have the opposite problem: they are per pair, so the useful object, the matrix, is something you lay out yourself and lay out again every time a column arrives.

Which of the three are you in

Write the formulas. For anything in the Parts column this is a real answer and is often the right one. Descriptive statistics, a histogram against bins you chose deliberately, ranks, outlier fences, a moving average, one lag of autocorrelation: each is an afternoon, and afterwards it lives in your file and depends on nobody. Two warnings the table above earns. LINEST will not give you a p-value on a coefficient, so a regression built this way is a set of numbers with no significance attached until you compute it. And nothing built in takes a seed, so a sheet full of RAND gives a different answer every time it recalculates, which means the figure in your deck cannot be reproduced by the person reading it.

Move the file. If your work is mostly in the Nothing column, and especially if it is the multi-group tests, a desktop bench that has them is a legitimate answer, and there is no point pretending otherwise. The cost is the obvious one: the analysis stops living next to the data everybody else is editing, and it goes back to being a file somebody has to remember to re-run.

Add the analyses to the sheet. Sortia is a Google Sheets add-on that puts all 38 analyses in a sidebar. You point one at a range and press Run analysis, and it writes the report into a tab of your own spreadsheet: the two-factor figures further up this page are quoted from that output, not from a mock of one. All 38 data-analysis tools are on the free plan. The five Pro engines are the paid part, along with the AI readings and a clean report footer, and the pricing page says which is which.

Reproduce the bake experiment

  1. In your spreadsheet, click the Sortia icon in the strip of icons down the right-hand edge. No strip? Click the arrow at the bottom-right to open it. You can also use Extensions, then Sortia, then Open Sortia.
  2. Choose Start from a template and search for Oven, Recipe, or Both?. Pick the card with that name and it loads the twelve loaves with the input range already filled in.
  3. Press Run analysis. The five-row report appears on a tab of its own, with the reading quoted above in a panel to the right of it.

Then change one loaf and run it again, which is the fastest way to learn what an interaction is: the Within row is the noise the other three rows are being measured against, and on these twelve loaves its mean square is 0.010, which is very little.

Where to go from here

Estimates in, odds out.

Home· Start here· Templates· Pricing· Teams· Tell someone· Privacy· Terms· Developers· Support· Changelog· Validation· Performance· © 2026 Sortia
Google Sheets™ is a trademark of Google LLC. Sortia is not affiliated with or endorsed by Google. Function names and their documented behavior are Google's, quoted from the function list linked at the top of this page.