Contact

DMAX Function (LibreOffice Calc)

Database Intermediate LibreOffice Calc LibreOffice 3.0

The DMAX function returns the maximum numeric value in a database column that matches a set of criteria. It is part of the database function family and supports structured, criteria-based filtering.

Verification status: Consult the documentation and examples below. Native application testing has not been documented for this guide. How formula examples are checked

The **DMAX** function returns the **largest numeric value** in a database column that matches a set of criteria. It is part of Calc’s database function family, which uses structured criteria ranges to filter data before performing calculations. DMAX is ideal for conditional maximum extraction in tabular datasets without needing MAXIFS or array formulas.

What the DMAX Function Does

  • Returns the maximum numeric value in a specified column
  • Applies criteria-based filtering using a criteria range
  • Supports multiple criteria columns
  • Supports AND/OR logic via criteria layout
  • Works with structured database ranges

It is designed to be precise, structured, and ideal for database-style maximum extraction.

Syntax

DMAX(database; field; criteria)

Arguments

  • database:
    A range where the first row contains column labels.

  • field:
    The column to evaluate.

    • Use column label in quotes (recommended)
    • Or use column index (1 = first column)
  • criteria:
    A range containing column labels and one or more criteria rows.

Basic Examples

Assume a table in A1:C6:

A (Name) B (Age) C (Score)
John 25 80
Mary 30 90
Alex 22 70
John 28 85
Mary 35 88

Criteria in E1:F2:

Age Score
>25 >80

Maximum Score matching criteria

=DMAX(A1:C6; "Score"; E1:F2)

Returns 90.

Maximum Age matching criteria

=DMAX(A1:C6; "Age"; E1:F2)

Returns 35.

Using field index

=DMAX(A1:C6; 3; E1:F2)

Returns the maximum Score.

Advanced Examples

Maximum Score where Name = “John”

Criteria:

Name
John

Formula:

=DMAX(A1:C6; "Score"; E1:E2)

Maximum Age between 25 and 30

Criteria:

Age
>=25
<=30

Formula:

=DMAX(A1:C6; "Age"; E1:E3)

OR logic (multiple rows)

Criteria:

Age Score
>30
>85

Formula:

=DMAX(A1:C6; "Score"; E1:F3)

Maximum Score where Name begins with “M”

Criteria:

Name
M*

Formula:

=DMAX(A1:C6; "Score"; E1:E2)

Maximum with dynamic criteria

=DMAX(A1:C6; "Score"; H1:I2)

Maximum positive Score

Criteria:

Score
>0

Formula:

=DMAX(A1:C6; "Score"; E1:E2)

Maximum non-blank Score

Criteria:

Score
<>""

Formula:

=DMAX(A1:C6; "Score"; E1:E2)

Edge Cases and Behavior Details

DMAX evaluates only numeric values

Text, blanks, and errors are ignored.

field can be:

  • Column label
  • Column index
  • Cell containing label

criteria must include column labels

Exact match required.

criteria supports:

  • Comparison operators
  • Wildcards
  • Multiple rows (OR)
  • Multiple columns (AND)

Empty criteria → returns maximum of all numeric values

If no numeric values match → returns 0

DMAX of an error in database → error ignored

DMAX of an error in criteria → error returned

Criteria rows:

  • Each row = OR
  • Each column = AND

Common Errors and Fixes

DMAX returns 0 unexpectedly

Cause:

  • No numeric values match criteria
  • Criteria labels don’t match database labels
  • Criteria misaligned
  • Field name misspelled

Fix:

  • Ensure labels match exactly
  • Ensure criteria range includes labels
  • Ensure numeric values exist in the target field

Err:502 — Invalid argument

Occurs when:

  • field is invalid
  • database range malformed

Criteria not applied

Cause:

  • Criteria labels not identical to database labels

Best Practices

  • Use column labels instead of index numbers
  • Keep criteria ranges small and clearly labeled
  • Use wildcards for flexible text matching
  • Use multiple criteria rows for OR logic
  • Use multiple criteria columns for AND logic
  • Use DMAX instead of MAXIFS when you need database-style criteria
  • Use FILTER (modern Calc) for dynamic extraction
DMAX is your structured maximum extractor — perfect for database-style filtering, multi-criteria logic, and clean, readable conditional maxima.
  • Use DMIN for minimum values
  • Use DSUM for summation
  • Use DAVERAGE for conditional averages
  • Use DCOUNT or DCOUNTA for counting
  • Use DGET for retrieving a single matching record
  • Use MAXIFS for simpler criteria without database structure
  • Use FILTER for dynamic row extraction

By mastering DMAX and its companion database functions, you can build powerful, structured, and criteria-driven data workflows in LibreOffice Calc.