DGET in Calligra Sheets: Database Criteria and Worked Examples
Retrieve one matching Calligra database record, with unique-ID examples and explicit zero/multiple-match errors.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: With the worksheet below, =DGET(A1:F9;"Amount";R1:R2) returns 150. Use DGET to retrieve a field from exactly one matching record after applying a separate header-based criteria range.
Availability and version history
- Introduced: First release not established; the name is present in Calligra 2.4.0 source.
- Supported in: Calligra Sheets 26.08.2.
- Scope: Desktop Sheets, with the database function module available. No retirement endpoint is established.
- Checked: October 14, 2026. Official help and pinned source checked; examples independently calculated. Calligra was not run, so source-defined edge behavior is distinguished from displayed native results.
Syntax and arguments
=DGET(Database; Field; Criteria)
All three arguments are required. Database includes its column headers. Field is a quoted header such as "Amount", or a valid one-based column number. Criteria is another range containing header names and at least one condition row. Semicolons separate arguments in these examples. Function help; three-argument registration.
Build the example database
Enter this table in A1:F9, including the header row. An empty table entry means leave the cell genuinely blank. Enter 7 as a number in F6 and =TRUE() as a Boolean in F7; do not type the word “blank” into the empty cells.
| ID | Team | Amount | Units | Status | Note |
|---|---|---|---|---|---|
| 101 | West | 75 | 3 | Paid | alpha |
| 102 | East | 120 | 4 | Paid | |
| 103 | West | 150 | 5 | Pending | check |
| 104 | North | 90 | 2 | Paid | |
| 105 | West | 125 | 5 | Paid | 7 |
| 106 | East | 60 | 3 | Pending | TRUE |
| 107 | North | 0 | 0 | Paid | |
| 108 | East | 80 | 4 | Paid |
Create these separate criteria blocks. Repeat a header where the table asks for it; each block includes its own header row. In two-column blocks, put the semicolon-separated entries in adjacent cells, not together in one cell.
| Range | Header cell(s) | First condition row | Second condition row |
|---|---|---|---|
| H1:H2 | Team | West | none |
| J1:K2 | Team; Status | West; Paid | none |
| M1:M3 | Team | West | East |
| O1:P2 | Amount; Amount | >=75; <=125 | none |
| R1:R2 | ID | 103 | none |
| T1:T2 | Team | North | none |
| V1:V2 | Status | Paid | none |
| X1:X2 | Team | Missing | none |
“None” means the range ends before another condition row. Type >=75 and <=125 as criterion text. Keep the conditions outside A1:F9.
Reproducible results
Use the criteria blocks above. The successful rows all select ID 103; the remaining cases deliberately demonstrate selection errors.
| Formula | Expected result |
|---|---|
=DGET(A1:F9;"Amount";R1:R2) |
150 |
=DGET(A1:F9;"Team";R1:R2) |
West |
=DGET(A1:F9;"Note";R1:R2) |
check |
=DGET(A1:F9;"Units";R1:R2) |
5 |
=DGET(A1:F9;"Amount";H1:H2) |
#VALUE! |
=DGET(A1:F9;"Amount";J1:K2) |
#VALUE! |
=DGET(A1:F9;"Amount";X1:X2) |
#VALUE! |
Practical example: retrieve several fields by unique ID
With ID in R1 and 103 in R2, =DGET(A1:F9;"Amount";R1:R2) returns 150. Keeping the same criteria and changing the field to "Team" returns West; changing it to "Note" returns check.
Store the requested ID in the criteria cell instead of rewriting multiple formulas. If you copy formulas for additional outputs, use $A$1:$F$9 and $R$1:$R$2 to keep the database and criteria ranges fixed.
Advanced example: verify uniqueness before lookup
DGET requires exactly one matching row, not one distinct result. Put Units in AH1 and 5 in AH2. Two rows qualify and both contain Units=5, but =DGET(A1:F9;"Units";AH1:AH2) still produces #VALUE!.
For this database, =DCOUNTA(A1:F9;"ID";AH1:AH2) gives 2, exposing the duplicate selection. Fix the criteria or the duplicate IDs rather than choosing an arbitrary first record. A broad Team filter is suitable for aggregation but usually unsuitable for a single-record retrieval.
Criteria rules that prevent silent mistakes
Conditions on the same criteria row are ANDed; different criteria rows are ORed. Repeated headers let one field satisfy two conditions. A wholly blank condition row can match every database row, so do not extend a criteria range through spare empty rows. A header-only range has no condition row and selects no data rows.
The parser silently ignores unrecognized criteria headers. A misspelled header can therefore broaden the selection, potentially to every record. Match headers carefully and test the selected IDs before relying on an aggregate. Plain words such as West in this example avoid pattern metacharacters; wildcard and regular-expression behavior depends on workbook settings. Criteria parser; condition interpretation.
Errors and data checks
The pinned implementation returns #VALUE! for no matching row, multiple matching rows, or an unrecognized field name. Other spreadsheet products may use different errors for those situations; do not build a migration rule around an assumed #NUM! or #N/A.
A returned zero is a valid selected value. ID 107 has Amount=0, which is different from having no matching ID. If the one selected field is blank, the evaluator returns that field’s value; no particular displayed blank/zero conversion is asserted here.