LOOKUP Function in SoftMaker PlanMaker 2026: Vector and Array Examples
Use LOOKUP in PlanMaker with documented syntax, reproducible worksheets, independently checked examples and practical compatibility limits.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: LOOKUP searches an ascending list and returns the corresponding result. If an exact key is missing, it selects the next smaller key. For order thresholds 0, 50, 100, 200 and 500, an order of 175 uses the 100 threshold, not 200.
Availability and version history
- Introduced: Documented in the PlanMaker 2016 manual; the original introduction release and date remain unknown.
- Availability: Documented in the 2026 English reference; no final supported-version endpoint is established.
- Scope: Versioned documentation does not establish identical behavior across desktop, mobile or localized builds.
- Checked: October 14, 2026, against the official LOOKUP reference, with independent calculations. No native PlanMaker test.
Two documented forms
=LOOKUP(Crit, LookupVector, ResultVector)
=LOOKUP(Crit, Range)
The official LOOKUP reference distinguishes these forms:
| Argument | Meaning |
|---|---|
Crit |
Search value or reference; text matching is case-insensitive |
LookupVector |
One row or one column of ascending search keys |
ResultVector |
Result row or column, with the same size and orientation as LookupVector |
Range |
A two-dimensional range, at least two rows and two columns |
For the two-argument form, a range wider than tall is searched across its first row, with results from its last row. A tall or square range is searched down its first column, with results from its last column. The searched row or column must be ascending in either case.
There is no exact-match switch or fourth Sorted argument. The two-argument form is a separate documented two-dimensional usage; do not assume it means that ResultVector may simply be omitted from a one-dimensional lookup. English formulas here use commas; follow your editor’s formula-entry syntax.
Build a sorted order-discount table
Enter this dataset in A1:C6. Type B2:B6 as numeric percentages:
| Row | A: Minimum order | B: Discount | C: Tier |
|---|---|---|---|
| 1 | Minimum order | Discount | Tier |
| 2 | 0 | 0% | Bronze |
| 3 | 50 | 2% | Silver |
| 4 | 100 | 5% | Gold |
| 5 | 200 | 8% | Platinum |
| 6 | 500 | 12% | Diamond |
Put 175 in E2. Enter these formulas in the stated result cells:
| Cell | Formula | Expected result |
|---|---|---|
| F2 | =LOOKUP(E2,$A$2:$A$6,$C$2:$C$6) |
Gold |
| F3 | =LOOKUP(E2,$A$2:$A$6,$B$2:$B$6) |
5% |
| F4 | =E2*(1-F3) |
166.25 |
The threshold 100 is the largest key no greater than 175. F3 is a number, so F4 calculates the discounted total for that same order. The example assumes the tier applies one rate to the whole order; a marginal tax-bracket calculation would need a different model.
The result vector need not be adjacent to the lookup vector. Keep the rows aligned when sorting: moving only the key column can pair a threshold with the wrong tier or percentage.
Test the boundaries
Enter -1, 0, 50, 175, 200, 499, 999 in E9:E15. In F9 enter =LOOKUP(E9,$A$2:$A$6,$C$2:$C$6) and fill through F15:
| Criterion | Expected tier |
|---|---|
| -1 | #N/A |
| 0 | Bronze |
| 50 | Silver |
| 175 | Gold |
| 200 | Platinum |
| 499 | Platinum |
| 999 | Diamond |
SoftMaker specifically documents #N/A when the criterion is below the smallest available key. Above the highest key, LOOKUP uses that highest eligible key. Approximate matching is useful for thresholds but dangerous for identifiers where a nearby value is not an acceptable substitute.
Two-dimensional lookup: shape determines direction
In F6, enter =LOOKUP(E2,$A$2:$C$6). Expect Gold. A2:C6 is five rows by three columns, so PlanMaker searches column A and returns column C. It does not return the intermediate discount column B; use the vector form for that field.
For a separate horizontal example, enter:
| Cell range | Values from left to right |
|---|---|
| H2:K2 | 0, 100, 200, 500 |
| H3:K3 | Basic, Plus, Pro, Enterprise |
In H5 enter =LOOKUP(250,$H$2:$K$3); expect Pro. In H6 enter =LOOKUP(250,$H$2:$K$2,$H$3:$K$3); expect Pro again. The two-row, four-column range is wider than tall.
A square table searches down the first column
Enter this separate 3-by-3 block in H9:J11, without a header row inside the range:
| H | I | J |
|---|---|---|
| 1 | Low | Small |
| 3 | Mid | Medium |
| 5 | High | Large |
In H13 enter =LOOKUP(4,$H$9:$J$11); expect Medium. A square range follows the column-search rule. Adding or removing rows or columns can therefore change the meaning of a two-argument formula. Explicit vectors are often easier to maintain.
Exact matches and other options
Use VLOOKUP or HLOOKUP with the documented exact-match setting when unsorted keys must match exactly. XLOOKUP provides a more flexible interface. Do not add FALSE as a fourth LOOKUP argument: that is not either documented syntax.
INDEX and MATCH separate position-finding from result retrieval. Choose the function according to the data contract, especially whether an approximate lower threshold is meaningful.
Troubleshooting and limits
- Plausible but wrong answer: check ascending order first. An unsorted lookup may return an incorrect result rather than an obvious error.
- Wrong returned field: inspect the two-dimensional shape and last row/column, or use explicit result vectors.
- Mismatched vectors: both orientation and size must agree. The short reference does not specify every resulting error token.
- Text case matters to your identifiers: LOOKUP is documented as case-insensitive; do not use it as a case-sensitive identity check.
- Duplicate, blank or mixed-type keys: detailed tie-breaking and coercion are not established here. Use clean unique numeric thresholds for this model.
When exchanging workbooks, verify boundary cases in the receiving application. Matching function names alone do not establish identical optional-argument, duplicate-key or locale behavior.