TTEST
Quirk foundCategory: Compatibility · Last tested 2026-09-01
Real compatibility results for the TTEST function: executed in Excel for the web, Google Sheets and LibreOffice Calc, with desktop Excel behavior from Microsoft’s official documentation (we do not run desktop Excel — Excel for the web is a different application and is executed separately). Syntax and links to that documentation are below.
Support matrix
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel (desktop) | Yes | No — documented only | n/a |
| Excel for the web | — | Yes (recalc, 2026-09-01) | Supported, behaves as documented |
| Google Sheets | Yes | Yes (Drive import, 2026-08-31) | Supported, behaves as documented |
| LibreOffice Calc | Yes | Yes (25.8.7.3, 2026-08-31) | Quirk found |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when TTEST’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Quirk found | 2026-08-31 |
| 24.8.7.2 | Quirk found | 2026-08-31 |
| 25.2.0.3 | Quirk found | 2026-08-31 |
| 25.8.7.3 | Quirk found | 2026-08-31 |
Why isn't TTEST working in LibreOffice?
TTEST exists in LibreOffice 25.8.7.3, but it is not a drop-in match for
Excel — our executed tests found real behavioral differences (detailed in the test results on this
page). If a formula that works in Excel or Google Sheets misbehaves in LibreOffice, compare your usage
against the failing cases above before assuming your data is wrong.
Discovered quirks
-
=TTEST({1,2,3},{1,2},2,1) on
LibreOffice Calc returned
#VALUE!, but the documented/expected
result is #N/A.
Provenance
The TTEST Remarks publish the same rule as T.TEST: "If array1 and array2 have a different number of data points, and type = 1 (paired), TTEST returns the #N/A error value."; MISMATCH vs expected: expected '#N/A', got '#VALUE!'
-
=TTEST({1,2,3},{4,5,6},3,1) on
LibreOffice Calc returned
#VALUE!, but the documented/expected
result is #NUM!.
Provenance
The Remarks publish: "If tails is any value other than 1 or 2, TTEST returns the #NUM! error value."; MISMATCH vs expected: expected '#NUM!', got '#VALUE!'
Executed test cases
Excel for the web (executed 2026-09-01 via OneDrive recalculation)
These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(TTEST(A2:A10,B2:B10,2,1),6) | The legacy spelling on Microsoft's documented T.TEST example data | 0.196016 | 0.196016ProvenanceTTEST is the pre-2010 spelling of T.TEST and Microsoft's TTEST page carries the same worked example: a paired, two-tailed test on the nine pairs above, published as 0.196016. DERIVATION (nothing here comes from a statistics package's t-test routine): the paired t-statistic is dbar/(sd/sqrt(n)) over the nine pairwise differences -3,-15,2,6,-5,-3,-3,-13,4, whose mean is -30/9 and whose sample standard deviation uses the n-1 divisor; that gives t = -1.4106912317171967 on 8 degrees of freedom. The p-value is then 2*(1 - F(|t|)) evaluated on this batch's doubly-cross-checked Student t CDF -- the regularized incomplete beta AND an independent numerical quadrature of the t density, agreeing to 25 digits -- giving 0.1960157849252821063357. scipy.stats.ttest_rel reproduces both the statistic and the p-value to double precision as a third check. Microsoft's page was read live on 2026-08-31 at https://support.microsoft.com/en-us/excel/functions/ttest-function. FETCH NOTE FOR THIS BATCH: batch F recorded every /en-us/office/<name>-function-<guid> URL returning Microsoft's 'Sorry, the page you're looking for can't be found' body; today BOTH paths serve the article again -- the GUID form redirects to /en-us/excel/functions/<slug>-function -- and every page cited in this batch came back complete (217-223 KB) in one or two attempts, with no 87 KB stub responses. Nothing here is sourced from a search snippet or a mirror. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1),12) | The same example carried to twelve decimals | 0.196015784925 | 0.196015784925ProvenanceAsserted at twelve places from the derivation: 0.196015784925. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1)-T.TEST(A2:A10,B2:B10,2,1),15) | The legacy spelling against its modern replacement on identical arguments | 0 | 0ProvenanceThe TTEST page's Important box directs readers to T.TEST, and the two are documented as the same test with the same argument order. A structural assertion with no derived constant, checking the engine's two spellings against each other. THIS IS THE CASE THE LEGACY NAMES EXIST IN THIS CORPUS FOR: batch F found NEGBINOMDIST and NEGBINOM.DIST disagreeing with each other on a documented-invalid input, so a compatibility alias drifting from its modern twin is a real and observed failure, not a hypothetical one. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,1,3)-T.TEST(A2:A10,B2:B10,1,3),15) | The same cross-check on the Welch type and the one-tailed form | 0 | 0ProvenanceThe alias check repeated on the argument combination the published examples never exercise -- one-tailed, unequal variance -- because that is where a drifted alias would most plausibly survive undetected. |
Matched |
| =TTEST({1,2,3},{1,2},2,1) | A paired test whose arrays are different lengths | #N/A | #N/AProvenanceThe TTEST Remarks publish the same rule as T.TEST: "If array1 and array2 have a different number of data points, and type = 1 (paired), TTEST returns the #N/A error value." |
Matched |
| =TTEST({1,2,3},{4,5,6},3,1) | A tails argument of 3, which the page excludes | #NUM! | #NUM!ProvenanceThe Remarks publish: "If tails is any value other than 1 or 2, TTEST returns the #NUM! error value." |
Matched |
Google Sheets (executed 2026-08-31 via Drive import)
Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(TTEST(A2:A10,B2:B10,2,1),6) | The legacy spelling on Microsoft's documented T.TEST example data | 0.196016 | 0.196016ProvenanceTTEST is the pre-2010 spelling of T.TEST and Microsoft's TTEST page carries the same worked example: a paired, two-tailed test on the nine pairs above, published as 0.196016. DERIVATION (nothing here comes from a statistics package's t-test routine): the paired t-statistic is dbar/(sd/sqrt(n)) over the nine pairwise differences -3,-15,2,6,-5,-3,-3,-13,4, whose mean is -30/9 and whose sample standard deviation uses the n-1 divisor; that gives t = -1.4106912317171967 on 8 degrees of freedom. The p-value is then 2*(1 - F(|t|)) evaluated on this batch's doubly-cross-checked Student t CDF -- the regularized incomplete beta AND an independent numerical quadrature of the t density, agreeing to 25 digits -- giving 0.1960157849252821063357. scipy.stats.ttest_rel reproduces both the statistic and the p-value to double precision as a third check. Microsoft's page was read live on 2026-08-31 at https://support.microsoft.com/en-us/excel/functions/ttest-function. FETCH NOTE FOR THIS BATCH: batch F recorded every /en-us/office/<name>-function-<guid> URL returning Microsoft's 'Sorry, the page you're looking for can't be found' body; today BOTH paths serve the article again -- the GUID form redirects to /en-us/excel/functions/<slug>-function -- and every page cited in this batch came back complete (217-223 KB) in one or two attempts, with no 87 KB stub responses. Nothing here is sourced from a search snippet or a mirror. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1),12) | The same example carried to twelve decimals | 0.1960157849 | 0.196015784925ProvenanceAsserted at twelve places from the derivation: 0.196015784925. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1)-T.TEST(A2:A10,B2:B10,2,1),15) | The legacy spelling against its modern replacement on identical arguments | 0 | 0ProvenanceThe TTEST page's Important box directs readers to T.TEST, and the two are documented as the same test with the same argument order. A structural assertion with no derived constant, checking the engine's two spellings against each other. THIS IS THE CASE THE LEGACY NAMES EXIST IN THIS CORPUS FOR: batch F found NEGBINOMDIST and NEGBINOM.DIST disagreeing with each other on a documented-invalid input, so a compatibility alias drifting from its modern twin is a real and observed failure, not a hypothetical one. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,1,3)-T.TEST(A2:A10,B2:B10,1,3),15) | The same cross-check on the Welch type and the one-tailed form | 0 | 0ProvenanceThe alias check repeated on the argument combination the published examples never exercise -- one-tailed, unequal variance -- because that is where a drifted alias would most plausibly survive undetected. |
Matched |
| =TTEST({1,2,3},{1,2},2,1) | A paired test whose arrays are different lengths | #N/A | #N/AProvenanceThe TTEST Remarks publish the same rule as T.TEST: "If array1 and array2 have a different number of data points, and type = 1 (paired), TTEST returns the #N/A error value." |
Matched |
| =TTEST({1,2,3},{4,5,6},3,1) | A tails argument of 3, which the page excludes | #NUM! | #NUM!ProvenanceThe Remarks publish: "If tails is any value other than 1 or 2, TTEST returns the #NUM! error value." |
Matched |
LibreOffice Calc 25.8.7.3 (tested 2026-08-31)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(TTEST(A2:A10,B2:B10,2,1),6) | The legacy spelling on Microsoft's documented T.TEST example data | 0.196016 | 0.196016ProvenanceTTEST is the pre-2010 spelling of T.TEST and Microsoft's TTEST page carries the same worked example: a paired, two-tailed test on the nine pairs above, published as 0.196016. DERIVATION (nothing here comes from a statistics package's t-test routine): the paired t-statistic is dbar/(sd/sqrt(n)) over the nine pairwise differences -3,-15,2,6,-5,-3,-3,-13,4, whose mean is -30/9 and whose sample standard deviation uses the n-1 divisor; that gives t = -1.4106912317171967 on 8 degrees of freedom. The p-value is then 2*(1 - F(|t|)) evaluated on this batch's doubly-cross-checked Student t CDF -- the regularized incomplete beta AND an independent numerical quadrature of the t density, agreeing to 25 digits -- giving 0.1960157849252821063357. scipy.stats.ttest_rel reproduces both the statistic and the p-value to double precision as a third check. Microsoft's page was read live on 2026-08-31 at https://support.microsoft.com/en-us/excel/functions/ttest-function. FETCH NOTE FOR THIS BATCH: batch F recorded every /en-us/office/<name>-function-<guid> URL returning Microsoft's 'Sorry, the page you're looking for can't be found' body; today BOTH paths serve the article again -- the GUID form redirects to /en-us/excel/functions/<slug>-function -- and every page cited in this batch came back complete (217-223 KB) in one or two attempts, with no 87 KB stub responses. Nothing here is sourced from a search snippet or a mirror. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1),12) | The same example carried to twelve decimals | 0.196015784925 | 0.196015784925ProvenanceAsserted at twelve places from the derivation: 0.196015784925. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,2,1)-T.TEST(A2:A10,B2:B10,2,1),15) | The legacy spelling against its modern replacement on identical arguments | 0 | 0ProvenanceThe TTEST page's Important box directs readers to T.TEST, and the two are documented as the same test with the same argument order. A structural assertion with no derived constant, checking the engine's two spellings against each other. THIS IS THE CASE THE LEGACY NAMES EXIST IN THIS CORPUS FOR: batch F found NEGBINOMDIST and NEGBINOM.DIST disagreeing with each other on a documented-invalid input, so a compatibility alias drifting from its modern twin is a real and observed failure, not a hypothetical one. |
Matched |
| =ROUND(TTEST(A2:A10,B2:B10,1,3)-T.TEST(A2:A10,B2:B10,1,3),15) | The same cross-check on the Welch type and the one-tailed form | 0 | 0ProvenanceThe alias check repeated on the argument combination the published examples never exercise -- one-tailed, unequal variance -- because that is where a drifted alias would most plausibly survive undetected. |
Matched |
| =TTEST({1,2,3},{1,2},2,1) | A paired test whose arrays are different lengths | #VALUE! | #N/AProvenanceThe TTEST Remarks publish the same rule as T.TEST: "If array1 and array2 have a different number of data points, and type = 1 (paired), TTEST returns the #N/A error value." |
Mismatch |
| =TTEST({1,2,3},{4,5,6},3,1) | A tails argument of 3, which the page excludes | #VALUE! | #NUM!ProvenanceThe Remarks publish: "If tails is any value other than 1 or 2, TTEST returns the #NUM! error value." |
Mismatch |
Docs & syntax
- Excel (desktop): official documentation
- Google Sheets: official documentation
- LibreOffice Calc: official documentation
Where TTEST behaves differently
- Every error code LibreOffice reports as #VALUE!
Across our 2,334-case executed corpus, 272 cases in 135 functions return #VALUE! in LibreOffice Calc 25.8.7.3 where Microsoft documents #NUM! (244), #N/A (15), #DIV/0! (10) or #REF! (3). Google Sheets returns the documented code on 239 of the 249 it has a function for. Identical in all four LibreOffice builds tested.