Database functions

DMAX

Matches all 3 recorded answers

Recorded: 3 workbook cells. How we measure this · See the Rust code

Local names in 40 languages
LanguageName in Excel
ArabicDMAX
BulgarianDMAX
CzechDMAX
DanishDMAKS
GermanDMAX
GreekDMAX
English (Australia)DMAX
English (United Kingdom)DMAX
English (United States)DMAX
SpanishBDMAX
EstonianDMAX
FinnishTMAKS
FrenchBDMAX
HebrewDMAX
CroatianDMAX
HungarianAB.MAX
IndonesianDMAX
ItalianDMAX
JapaneseDMAX
KoreanDMAX
LithuanianDMAX
LatvianDMAX
NorwegianDMAX
DutchDBMAX
PolishBD.MAX
Portuguese (Brazil)DMAX
Portuguese (Portugal)BDMÁX
RomanianDMAX
RussianДМАКС
SlovakDMAX
SlovenianDMAX
Serbian (Latin)DMAX
SwedishDMAX
ThaiDMAX
TurkishVSEÇMAK işlevi
UkrainianDMAX
VietnameseDMAX
Chinese (Simplified)DMAX
Chinese (Hong Kong)DMAX
Chinese (Traditional)DMAX

Names from Microsoft's support site.

What it does

DMAX(database, field, criteria)

DMAX(database, field, criteria) selects the records of database that satisfy criteria, reads the column named by field, and returns the largest of the numeric values found there.

With R the set of selected record rows, c the resolved field column, and

V = [ v : v = value of cell (r, c) for r in R, where v is a Number ]

That zero is a genuine hazard on a column of negative numbers: a criteria range that matches nothing, or matches only records with blank field cells, gives 0 — a value larger than every number actually in the column.

The selection stage — header matching, AND across a criteria row, OR down the rows, blank criteria cells, and criteria-expression parsing — is identical for all twelve database functions and is explained once in the criteria-range mechanism.

Arguments

Three arguments, all required at the call site; the reference implementation declares an arity of exactly 3.

  • database — the header-plus-records range or array.
  • field — the column selector, as header text or as a 1-based column index within the database range. Required; only DCOUNT and DCOUNTA accept an omitted field.
  • criteria — the header-plus-conditions range or array.

Try it

Input cells (optional)

Example: {"B2": 3, "B3": 4}. A1 holds the formula. Other cells need values before a formula can read them.

Enter a formula, then calculate.

Runs locally in your browser with OneCalc. Its answer may differ from Excel. Use English function names and commas between arguments.

Quirks

Result and edge cases

Returns a Number.

  • No numeric value selected — because no record matched, or because every matching record's field cell is blank or non-numeric: 0, not an error. Pair with DCOUNT if you need to tell "the maximum is zero" from "there was nothing to maximize".
  • Text that looks numeric in the field column is skipped, per the range-scan side of the asymmetry in coercion and lifting.
  • Logicals in the field column are skipped, so TRUE never wins as 1.
  • Ties are invisible: DMAX returns the value, not which record held it. Use DGET with a criteria row keyed on the maximum if you need the record.
  • Arrays: inline array literals resolve to grids and are accepted; DMAX is not a lift kernel.

Errors

ErrorCondition
#VALUE!database or criteria is not a grid or is empty; a database header cell is blank; a criteria header names no database field; field matches no header, or is a non-integer or out-of-range column index
propagatedAn error value in a header cell, a criteria cell, or a scanned field cell surfaces as that error

How to implement

Notes for implementers

  1. The empty-selection answer is a convention, not a mathematical result. Returning 0 rather than an error is a deliberate compatibility choice, and it must be applied after skipping non-numeric cells, not as a substitute for them.
  2. Skip, do not coerce. Admit only cells whose value kind is Number.
  3. Numeric criteria comparison is not exact double comparison — see the note in the shared mechanism.

Rust code

Show the CalcFunc source of this function

Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.

DMAX · 1 lines · calc-func/src/catalogue/database.rs on GitHub
5 dmax "DMAX" (3, 3) [R "database", V "field", R "criteria"] |s, a, sv| { database(s, a, sv, Kind::Max) }

Kernels shared with other functions

Argument and result plumbing

No implementation has been published with a Handbook test suite for this function.

Version differences

No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.

Alternatives

Relationships

  • DMIN is the mirror member, identical in every respect but the comparison direction — including the empty-selection zero.
  • Nearest modern equivalent: MAXIFS, which takes conditions inline instead of as a criteria table. Neither supersedes the other; Excel supports both.
  • Confused with: MAX (no selection stage), LARGE (k-th largest, no selection stage), and MAXA (which does count logicals and text as values).

Named variants

No named variants are recorded yet.

Suggest a correction or contribute an implementation · For agents