ODF.SUMPRODUCT Function (Gnumeric)
Use Gnumeric ODF.SUMPRODUCT for matching-array products that include Boolean flags, with complete weighted totals, shape and error controls.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: ODF.SUMPRODUCT multiplies corresponding entries and adds the products. Unlike Gnumeric SUMPRODUCT, it includes Boolean values as TRUE=1 and FALSE=0, making typed flags usable as multiplicative selectors.
Availability and evidence
- Introduction: Gnumeric 1.11.0. NEWS explicitly adds ODF.SUMPRODUCT as a compatibility function.
- Source support: Registered in the Gnumeric 1.12.62 plugin. No retirement is established. The last functioning application version is unverified for this guide.
- Evidence dates: Official source was retained October 13–14, 2026 and reviewed October 15. Typed-list, positional, workbook-index and exact product checks are independent reference calculations. No native Gnumeric, compiled-library, headless application or GUI execution was performed.
Syntax and aligned dimensions
=ODF.SUMPRODUCT(array1,array2,...)
Supply one or more arrays or ranges. Every supplied argument must have the same width and height. The function multiplies entries at corresponding positions across all arguments, then sums those products. A single argument therefore sums its converted entries.
Numbers are included directly. Boolean TRUE contributes 1 and FALSE contributes 0. Other non-error values, including strings and physically empty entries, contribute zero. Numeric-looking text is not automatically parsed as a number in this source path.
Errors encountered during collection are propagated rather than converted to zero. Zero arguments produce #VALUE!. A dimension mismatch also produces #VALUE! when no earlier input error takes priority. Equal cell counts alone are insufficient: a 2-by-2 block and a four-row column have different shapes.
Complete flagged-total worksheet
Create FlaggedTotals with Quantity, Unit_value and Include in A1:C1. Enter actual numbers and Boolean values, not text TRUE/FALSE:
| Row | A: Quantity | B: Unit_value | C: Include | Product if included |
|---|---|---|---|---|
| 2 | 2 | 10 | TRUE | 20 |
| 3 | 3 | 20 | FALSE | 0 |
| 4 | 4 | 5 | TRUE | 20 |
| 5 | 5 | 8 | FALSE | 0 |
Enter =ODF.SUMPRODUCT(A2:A5,B2:B5,C2:C5) in E2. The independent expected result is 40, from 2×10×1+3×20×0+4×5×1+5×8×0.
In E3 enter =ODF.SUMPRODUCT(A2:A5,B2:B5). Without the Include argument, every numeric row contributes and the result is 140. The flags do not affect formulas that never reference them.
In a copy change C3 from FALSE to TRUE. The flagged total increases by 3×20=60, becoming 100. The unflagged total remains 140. This makes the role of the selector explicit without changing quantities or unit values.
Reference controls
| Formula or controlled values | Independent reference result |
|---|---|
=ODF.SUMPRODUCT(A2:A5,B2:B5,C2:C5) |
40 |
=ODF.SUMPRODUCT(A2:A5,B2:B5) |
140 |
=ODF.SUMPRODUCT(A2:A5) |
14 |
=ODF.SUMPRODUCT(C2:C5) |
2 |
=ODF.SUMPRODUCT(2,3,TRUE) |
6 |
=ODF.SUMPRODUCT() |
#VALUE! |
=ODF.SUMPRODUCT(A2:A5,B2:B4) |
#VALUE! |
Four-row column versus 2-by-2 block |
#VALUE! |
=ODF.SUMPRODUCT(A2:A5,B2:B5,C2:C5,2) |
#VALUE! |
The controls use source-backed type conversion and exact arithmetic. They are independent expectations, not native function executions. The same dataset must be restored between changed-input cases.
Advanced: contrast Gnumeric SUMPRODUCT carefully
For the original three ranges, =SUMPRODUCT(A2:A5,B2:B5,C2:C5) has source-backed result 0, because Gnumeric SUMPRODUCT ignores logical values by converting them to zero. Every product contains such a zero. ODF.SUMPRODUCT’s 40 is therefore a substantive Boolean-handling difference, not just a renamed spelling.
A plain numeric Include column of 1,0,1,0 gives the same 40 under either function. Converting the flags to explicit numeric indicators is a separate data choice, not evidence that the functions treat original Booleans identically.
The help labels ODF.SUMPRODUCT as OpenFormula compatible and not Excel compatible. That label does not certify round-trip behavior for a particular file or application build. Keep the intended logical convention visible when moving formulas between products.
Advanced: build an expression-based selector
Using the original numeric inputs, =ODF.SUMPRODUCT(A2:A5,B2:B5,B2:B5>=10) has reference result 80: the first two unit values meet the threshold, contributing 20 and 60. The comparison creates logical selectors which this function includes.
Adding the original Include range to that expression, =ODF.SUMPRODUCT(A2:A5,B2:B5,B2:B5>=10,C2:C5), leaves only the first row and gives 20. Multiplying selector arrays implements an AND condition because every selector must contribute 1 for a row’s numeric product to survive.
For a uniform scale factor, =2*ODF.SUMPRODUCT(A2:A5,B2:B5,C2:C5) gives 80. Putting the scalar 2 inside as another argument is different: it is a 1-by-1 argument, not an automatically broadcast four-row array, so the source shape check rejects that mixed shape.
Advanced: distinguish text and errors from false flags
If B2 changes from numeric 10 to text 10, its contribution becomes zero and the original flagged total becomes 20. A physically empty B2 has the same contribution. The other included row still contributes 20.
If C2 instead contains text TRUE rather than Boolean TRUE, the first row also contributes zero. These are storage-type controls; formatting a cell to look like a number or word does not prove its type.
An error is different. Even when a row’s Include flag is FALSE, an error in that row’s quantity or unit value is encountered during argument collection and propagates. A false multiplicative selector is not a short-circuit error trap. Clean or explicitly handle upstream errors before building the product model.
Top-level emptiness, error priority and troubleshooting
An empty entry inside a supplied range contributes zero. A bare physically empty cell argument is different: with empty-value evaluation enabled it can produce a NULL top-level argument. The shared callback then records a size error, stops scanning further arguments, and returns #VALUE!. Do not generalize range-entry zero conversion to every top-level expression. Use the explicit populated ranges in the worksheet controls.
For arguments that evaluate to non-NULL values or areas, the shared source visits arguments left to right and array cells row by row, scanning columns within each row. The first encountered input error becomes the result; dimension mismatch is checked after those scans. An earlier NULL argument stops later scans, so a later error is not guaranteed to take priority over that case. These are source evaluation paths, not native error-order tests.
Check matching widths and heights, exclude headers, and inspect actual Boolean versus text values. Keep labels beside rather than inside numeric arrays. The callback uses higher-precision accumulation helpers, but this guide does not claim a universal accuracy bound or native overflow threshold.
Locale-dependent entry, extreme numeric behavior, automatic file conversion and GUI execution remain unverified. The complete finite worksheet establishes the stated arithmetic and source contract without assuming another product’s defaults.