Documentation/Calc Functions/MAXIFS
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
Function name:
MAXIFS
Category:
Statistical Analysis
Summary:
Identifies the maximum value of a set of numbers in a cell range, with the cells to be considered determined using multiple criteria.
The criteria passed to MAXIFS can utilize wildcards or regular expressions.
Syntax:
MAXIFS(Max range; Range 1; Criteria 1 [ ; Range 2; Criteria 2 [;... ; [Range 127; Criteria 127]]])
Returns:
Returns a real number, which is the maximum value in the relevant cells.
Arguments:
Max range argument
Max range specifies the cell range from which a subset will be selected for determining the maximum value. Max range is a reference to a cell range (which may not utilize the reference concatenation operator (~)), the name of a named range, or the name of a database range.
Range arguments
Range 1 specifies the set of cells to be matched against Criteria 1 and takes one of the forms listed for Max range. Range 1 should have the same dimensions as Max range.
Range 2, ..., Range 127 have the same meaning as Range 1.
Criteria arguments
Criteria 1 is the criterion for matching against the cells in Range 1, or a cell containing that criterion. Criteria 1 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".
MAXIFS looks for cells in Range 1 that are equal to Criteria 1, unless Criteria 1 is a text string that starts with a comparator (>, <, >=, <=, =, or <>). In the latter case MAXIFS compares the cells in Range 1 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.
Criteria 1 supports the following specific behaviors:
- The string "=" matches empty cells. For example the formula =MAXIFS(A1:A10; B1:B10; "=") returns the maximum 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 =MAXIFS(A1:A10; C1:C10; "<>") returns the maximum 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 Criteria 1 matches any cell content except that value, including empty cells.
Criteria 2, ..., Criteria 127 have the same meaning as Criteria 1.
Error conditions
- If any cell range passed as an argument contains a reference concatenation operator (~), then MAXIFS reports an invalid argument error (Err:502).
- All the cell ranges passed as arguments (Max range and Range 1, …, Range 127) must occupy the same number of rows and the same number of columns. If this is not the case, then MAXIFS reports an invalid argument error (Err:502).
- If the Range n and Criteria n arguments are not correctly paired, then MAXIFS reports a variable missing error (Err:511).
- If no cell is selected via the matching conditions, then MAXIFS returns 0.
- If no cell selected via the matching conditions contains a number, then MAXIFS returns 0.
Additional details:
Details specific to MAXIFS function
- The default matching performed by MAXIFS 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 MAXIFS is affected by several settings available on the ▸ ▸ ▸ dialog ( ▸ ▸ ▸ on macOS).
- 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".
- 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".
- 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".
- The setting of the Case sensitive checkbox has no impact on the operation of MAXIFS.
General information about Calc's 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.
- In addition, the LibreOffice Help system provides a high-level list of 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
▸ ▸ ▸ 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.
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:
Stationery sales examples
Consider the following table showing sales and revenue information for a small stationery supplier. The string "N/A" refers to products that were not available for supply during the period covered by the data.
A | B | C | |
---|---|---|---|
1 | Product | Sales | Revenue |
2 | Pencil | 20 | $65 |
3 | Pen | 35 | $85 |
4 | Notebook | 20 | $190 |
5 | Book | 17 | $180 |
6 | Pencil case | N/A | N/A |
In all examples based on this table, it should be noted that row 6 for pencil cases contains no numeric data and so will never contribute to the result of MAXIFS, whatever criteria are specified.
Formula | Description | Returns |
---|---|---|
=MAXIFS(B2:B6; B2:B6; "<=25") | Here the function finds the maximum of the numeric Sales data that are less than or equal to 25. | 20 |
=MAXIFS(C2:C6; B2:B6; ">=20"; C2:C6; ">70") | Here the function locates entries greater than or equal to 20 in the Sales data that also have a value greater than $70 in the Revenue data, and finds the maximum of the corresponding numeric entries in the Revenue data. | 190 |
=MAXIFS(C2:C6; B2:B6; ">"&MIN(B2:B6); B2:B6; "<"&MAX(B2:B6)) | Here the function calculates the maximum of the numeric entries in the Revenue data that correspond to all values in the Sales data except the minimum and maximum. | 190 |
=MAXIFS(C2:C6; A2:A6; "pen.*"; B2:B6; "<"&MAX(B2:B6)) | This example will only work as described here if regular expressions are enabled. Here the function locates entries in the Product data that begin with the characters "pen" and have a value in the Sales data that is not the maximum, and finds the maximum of the corresponding numeric entries in the Revenue data. | 65 |
=MAXIFS(C2:C6; A2:A6; E2&".*"; B2:B6; "<"&MAX(B2:B6)) where cell E2 contains the string "pen" (entered without typing the double quotes). | This example will only work as described here if regular expressions are enabled. If you need to change a criterion easily, you may want to specify it in a separate cell and use a reference to this cell in the condition of the MAXIFS function. Here the link to the cell is substituted with its content, giving the same result as the previous example. | 65 |
Sporting equipment sales 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 |
---|---|---|
=MAXIFS(B2:B10; B2:B10; "<=3000") | Here the function finds the maximum of the numeric entries in the Sales Value data that are less than or equal to $3,000. | 2623 |
=MAXIFS(B2:B10; E2:E10; "ute") | Here the function locates the entries for Ute in the Employee data and finds the maximum of the corresponding numeric entries in the Sales Value data. | 4195 |
=MAXIFS(B2:B10; CategoryData; "golf") 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 finds the maximum of the corresponding numeric entries in the Sales Value data. | 4195 |
=MAXIFS(B2:B10; D2:D10; F1; E2:E10; F2) where cells F1 and F2 contain the text strings ">=south" and "ute" respectively (both entered without typing the double quotes). | Here the function locates the entries for South and West in the Region data that also have Ute in the Employee data, and finds the maximum of the corresponding numeric entries in the Sales Value data. | 4195 |
=MAXIFS(B2:B10; A2:A10; DATE(2021; 10; 2); C2:C10; "tennis") | Here the function locates the entries for 2021-10-02 in the Date column that also have Tennis in the Category data, and finds the maximum of the corresponding numeric entries in the Sales Value data. | 410 |
=MAXIFS(B2:B10; A2:A10; ">="&DATE(2021; 10; 6); E2:E10; "<>"&E8) | Here the function locates the entries dated on or after 2021-10-06 in the Date column that do not have Fritz in the Employee data, and finds the maximum of the corresponding numeric entries in the Sales Value data. | 4195 |
=MAXIFS(B2:B10; C2:C10; "tennis"; D2:D10; "east"; E2:E10; "fritz") | Here the function locates the entries that have Tennis in the Category data, East in the Region data and Fritz in the Employee data. It finds the maximum of the corresponding numeric entries in the Sales Value data. | 2623 |
=MAXIFS(B2:B10; D2:D10; "????"; E2:E10; "*e") | 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) that also have an entry in the Employee data that ends with the letter "e" or "E" (Brigitte and Ute). It finds the maximum of the corresponding numeric entries in the Sales Value data. | 4872 |
=MAXIFS(B2:B10; C2:C10; "^t.*"; D2:D10; ".*h") | This example will only work as described here if regular expressions are enabled. Here the function locates the entries in the Category data that start with the letter "t" or "T" (Tennis) that also have an entry in the Region data that ends with the letter "h" or "H" (North and South). It finds the maximum of the corresponding numeric entries in the Sales Value data. | 3821 |
=MAXIFS(B2:B10; E2:E10; "(?-i)ute") | This example will 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 |
Additional examples
For more examples, download and view this Calc spreadsheet.
Related LibreOffice functions:
ODF standard:
None
Related (or similar) Excel functions:
MAXIFS