Documentation/Calc Functions/SUMIF

From The Document Foundation Wiki
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Other languages:
English • ‎dansk



Function name:

SUMIF

Category:

Mathematical

Summary:

In its simplest form, SUMIF determines which cells in a range satisfy a specified criterion and calculates the sum of the numbers in those matched cells. In its second form, SUMIF determines which cells in one range satisfy a specified criterion and then calculates the sum of the numbers in the corresponding cells of a second range.

The criterion passed to SUMIF can utilize wildcards or regular expressions.

Syntax:

SUMIF(Range; Criterion[; SumRange])

Returns:

Returns a real number that is the result of adding together the numbers in relevant cells.

Arguments:

Range Argument

Range specifies the cells to be matched and, when the SumRange argument is omitted, the cells to be summed. Range usually takes one of the following forms:

  • A reference to a cell range (for example, A1:A25). If SumRange is omitted, then Range may utilize the reference concatenation operator (~).
  • The name of a named range.
  • The name of a database range.

Criterion argument

Criterion is the criterion for matching, or a cell containing that criterion. Criterion can take one of the following forms:

  • A number, such as 34.5. Dates and logical values (TRUE or FALSE) are treated as numbers.
  • An expression, such as 2/3, SQRT($D$1), or DATE(2021; 11; 1).
  • A text string, such as "golf" or "<>10".

SUMIF looks for cells in Range that are equal to Criterion, unless Criterion is a text string that starts with a comparator (>, <, >=, <=, =, or <>). In the latter case SUMIF compares the cells in Range with the remainder of the text string (interpreted as a number if possible and text otherwise). For example, the condition ">4.5" tests if the content of each cell is greater than the number 4.5, the condition "<dog" tests if the content of each cell comes alphabetically before the text "dog", and the condition "<>2021-11-01" tests if the content of each cell is not equal to the specified date.

Criterion supports the following specific behaviors:

  • The string "=" matches empty cells. For example the formula =SUMIF(B1:B10; "="; A1:A10) returns the sum of all values in the range A1:A10 if all cells in the range B1:B10 are empty. Note that "=0" does not match empty cells.
  • The string "<>" matches non-empty cells. For example the formula =SUMIF(C1:C10; "<>"; A1:A10) returns the sum of all values in the range A1:A10 if there are no empty cells in the range C1:C10.
  • If the value after the <> comparator is not empty, then Criterion matches any cell content except that value, including empty cells.

SumRange argument

SumRange specifies the cells to be summed and takes one of the forms listed for Range. SumRange should normally have the same dimensions as Range – if this is not the case, SUMIF will sum a range of cells starting at the first cell in SumRange and having the same dimensions as Range.

Error conditions

  • If the SumRange argument is provided and the reference concatenation operator is utilized within Range, then SUMIF reports a parameter list error (Err:504).

Additional details:

Details specific to SUMIF function

  • SUMIF allows only one matching criterion. If you need to sum cells based on multiple criteria, use the SUMIFS function.
  • The default matching performed by SUMIF is case-insensitive. However, a case-sensitive match can be carried out when using a regular expression by including a mode modifier "(?-i)" within the regular expression, as demonstrated by one of the examples below.
  • The behavior of SUMIF is affected by several settings available on the Tools > Options > LibreOffice Calc > Calculate dialog (LibreOffice > Preferences > LibreOffice Calc > Calculate on macOS).
  1. If the checkbox is ticked for Search criteria = and <> must apply to whole cells, then the condition "red" will match only "red"; if unticked it will match "red", "Fred", "red herring".
  2. If the checkbox is ticked for Enable wildcards in formulas, the condition will match using wildcards - so for example "b?g" will match "bag", "beg", "big", "bog", and "bug".
  3. If the checkbox is ticked for Enable regular expressions in formulas, the condition will match using regular expressions - so for example "r.d" will match "red", "rid", and "rod", while "red.*" will match "red", "redraw", and "redden".
  4. The setting of the Case sensitive checkbox has no impact on the operation of SUMIF.

General information about Calc's regular expressions

Note pin.svg

For convenience, the information in this subsection is repeated on all pages describing functions that manipulate regular expressions.


  • A regular expression is a string of characters defining a pattern of text that is to be matched. More detailed, general background information can be found on Wikipedia’s Regular expression page.
  • Regular expressions are widely used in many domains and there are multiple regular expression processors available. Calc utilises the open source Regular Expressions package from the International Components for Unicode (ICU), see their Regular Expressions documentation for further details, including a full definition of the syntax for ICU Regular Expressions.
  • Calc’s regular expression engine supports numbered capture groups, which allow sub-ranges within a match to be identified and used within replacement text. Parentheses are used to group components of a regular expression together and create a numbered capture group. To insert a capture group into a replacement text, use the "$n" form, where n is the number of the capture group.

General information about Calc's wildcards

Wildcards are special characters that can be used in search strings passed as arguments to some Calc functions; they can also be used to define search criteria in the Find & Replace dialog. The use of wildcards enables the definition of more advanced search parameters with a single search string.

Calc supports either wildcards or regular expressions as arguments depending on the current application settings. By default, wildcards are supported instead of regular expressions.

To make sure wildcards are supported, go to Tools > Options > LibreOffice Calc > Calculate and check if the option Enable wildcards in formulas is selected. Note that you can use this dialog to switch to regular expressions by choosing Enable regular expressions in formulas or choose to support neither wildcards nor regular expressions.

The following table identifies the wildcards that Calc supports.

Calc wildcards
Wildcard Description
? (question mark) Matches any single character. For example, the search string "b?g" matches "bag" and "beg" but will not match "boog" or "mug".

Note that it will not match "bg" as well, since "?" must match exactly one character. The "?" wildcard does not correspond to a zero-character match.
* (asterisk) Matches any sequence of characters, including an empty string. For example, the search string "*cast" will match "cast", "forecast", and “outcast”, but will not match "forecaster" using default Calc settings.

If the option Search criteria = and <> must apply to whole cells is disabled in Tools > Options > LibreOffice Calc > Calculate, then "forecaster" will be a match using the "*cast" search string.
~ (tilde) Escapes the special meaning of a question mark, asterisk, or tilde character that follows immediately after the tilde character.

For example, the search string "why~?" matches "why?" but will not match "whys" nor "why~s".

Wildcard comparisons are not case sensitive, hence "A?" will match both "A1" and "a1".

These wildcards are supported in both Calc and Microsoft Excel. Therefore, if interoperability between the two applications is needed, choose to work with wildcards instead of regular expressions. Conversely, if interoperability is not necessary, consider using regular expressions for more powerful search capabilities.

Examples:

Basic examples

Formula Description Returns
=SUMIF(A1:A9; "<0") where cells A1 to A9 contain the numbers -1, 2, -3, 4, -5, 6, -7, 8, and -9 respectively. Here the function sums the negative numbers in the cell range A1:A9. -25
=SUMIF(A1:A9; F1) where cells A1 to A9 contain the numbers -1, 2, -3, 4, -5, 6, -7, 8, and -9 respectively and cell F1 contains the string ">=0" (entered without typing the double quotes). Here the function sums the non-negative numbers in the cell range A1:A9. 20
=SUMIF(B2:B4; "<"&F2; C2:C4) where cells B2 to B4 contain the numbers 7, 9, and 11 respectively; cells C2 to C4 contain the numbers 4, 5, and 6 respectively; and cell F2 contains the number 10. Here the function determines that the values in cells B2 and B3 are less than 10 and so sums the values in cells C2 and C3. 9
=SUMIF(D1:D9; "apples"; E1:E9) where cells D1, D4, D5, D6, and D9 contain the string "apples"; cells D2, D3, D7, and D8 contain the text "pears"; and cells E1 to E9 contain the numbers 12, 19, 10, 27, 97, 73, 79, 71, and 40 respectively, representing a quantity of the corresponding fruit. Here the function calculates the total quantity of apples. 249

Other examples

The examples in this subsection are based on a small database of sales data for sports equipment, with the data organized as in the following table.

A B C D E
1 Date Sales Value Category Region Employee
2 2021-10-02 $1,508 Golf East Hans
3 2021-10-02 $410 Tennis North Kurt
4 2021-10-02 $2,340 Sailing South Ute
5 2021-10-03 $4,872 Tennis East Brigitte
6 2021-10-06 $3,821 Tennis South Fritz
7 2021-10-06 $2,623 Tennis East Fritz
8 2021-10-07 $3,739 Golf South Fritz
9 2021-10-08 $4,195 Golf West Ute
10 2021-10-10 $2,023 Golf East Hans
Formula Description Returns
=SUMIF(B2:B10; ">=4000") Here the function sums the numeric entries in the Sales Value data that are greater than or equal to $4,000. $9,067
=SUMIF(E2:E10; "ute"; B2:B10) Here the function locates the entries for Ute in the Employee data and sums the corresponding numeric entries in the Sales Value data. $6,535
=SUMIF(CategoryData; "golf"; B2:B10) where the named range CategoryData has been created to cover the cell range C2:C10. Here the function locates the entries for Golf in the Category data and sums the corresponding numeric entries in the Sales Value data. $11,465
=SUMIF(D2:D10; F1; B2:B10) where cell F1 contains the text ">=south" (entered without typing the double quotes). Here the function locates the entries for South and West in the Region data and sums the corresponding numeric entries in the Sales Value data. $14,095
=SUMIF(A2:A10; DATE(2021; 10; 2); B2:B10) Here the function locates the entries for 2021-10-02 in the Date column and sums the corresponding numeric entries in the Sales Value data. $4,258
=SUMIF(A2:A10; ">="&DATE(2021; 10; 7); B2:B10) Here the function locates the entries dated on or after 2021-10-07 in the Date column and sums the corresponding numeric entries in the Sales Value data. $9,957
=SUMIF(D2:D10; "????"; B2:B10) This example will only work as described here if wildcards are enabled. Here the function locates the four-character entries in the Region data (East and West) and sums the corresponding numeric entries in the Sales Value data. $15,221
=SUMIF(E2:E10; "^f.*"; B2:B10) This example will only work as described here if regular expressions are enabled. Here the function locates the entries in the Employee data that start with the letter "f" or "F" (Fritz) and sums the corresponding numeric entries in the Sales Value data. $10,183
=SUMIF(E2:E10; "(?-i)ute"; B2:B10) This example will only work as described here if regular expressions are enabled. The "(?-i)" mode modifier within the regular expression changes to a case-sensitive match and so no entries are found in the Employee data. Contrast this with the second example in this table. $0

Related LibreOffice functions:

COUNTIF

SUM

SUMIFS

ODF standard:

Section 6.16.62, part 2

Equivalent Excel function:

SUMIF