{
  "category": "Logical functions",
  "display_name": "MAKEARRAY",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.MAKEARRAY",
  "implementation_state": {
    "answer_bank": null,
    "detail": "Recorded: 11 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 11 recorded answers",
    "workbook_corpus": {
      "cells": 11,
      "matched": 11
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/lambda_helpers.rs#L454-L454",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/lambda_helpers.rs#L248-L261",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/lambda_helpers.rs#L263-L281"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/lambda_helpers::lambda",
        "catalogue/lambda_helpers::cell",
        "catalogue/lambda_helpers::array",
        "catalogue/lambda_helpers::helper",
        "catalogue/lambda_helpers::HelperTask::advance",
        "catalogue/lambda_helpers::run",
        "ported/dynamic_array_reshape_family::coerce_prepared_to_number"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/lambda_helpers.rs#L454-L454",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 11 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.MAKEARRAY.json",
  "name": "MAKEARRAY",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[SEQUENCE](FUNC.SEQUENCE.md) is simpler for arithmetic progressions; [MAP](FUNC.MAP.md) transforms existing entries; [BYROW](FUNC.BYROW.md) reduces each row.\n\n\n",
    "how-to-implement": "\n1. Read and coerce the two dimensions. Require finite positive integers; check `rows*cols` before allocating output storage.\n2. Validate that the final argument is callable with two parameters. Keep its captured environment so names inside the lambda resolve as they did where it was created.\n3. For each zero-based coordinate `(r,c)`, invoke the lambda with the numbers `(r+1,c+1)`. These are array coordinates, not worksheet row and column addresses.\n4. Accept a scalar result at that coordinate. The current helper rejects an array or reference result with `#VALUE!`; it preserves ordinary worksheet error values as cell results.\n5. Return the requested rectangular array. If evaluation can yield, retain the completed cells and next coordinate so resuming does not invoke already completed cells again.\n\nFor `10*r+c`, the first row uses `(1,1)`, `(1,2)`, `(1,3)` to produce `11,12,13`. The next row begins at `(2,1)`, producing 21. No source array is traversed: the dimensions define the coordinates.\n\n\n",
    "quirks": "\nThe lambda takes exactly two parameters. Microsoft documents `#VALUE!` for an invalid callable, incorrect parameter count, dimensions below one or nonnumeric dimensions. The current code additionally rejects fractional dimensions rather than truncating them.\n\nEach call must supply one cell value. The current helper returns `#VALUE!` for an array-valued lambda result, even a one-cell array; that differs from SCAN’s singleton-array rule. For example, `MAKEARRAY(1,1,LAMBDA(r,c,{1}))` takes this error route. A scalar value of one is a different result kind from the array `{1}`.\n\nDimensions are validated before the callable. With valid dimensions, a noncallable final argument is `#VALUE!` even if it is itself an error value. Spill obstructions and allocation limits belong to the workbook or evaluation host.\n\n\n",
    "sources": "\n- [Microsoft: MAKEARRAY function](https://support.microsoft.com/en-us/office/makearray-function-b80da5ad-b338-4149-a523-5b221da09097), opened 6 November 2026; syntax, documented argument rules and errors.\n- [DnaCalc callable validation, dimensions and result-cell rules](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/lambda_helpers.rs).\n\n",
    "try-it": "\n`=MAKEARRAY(2,3,LAMBDA(r,c,10*r+c))` spills `11,12,13` above `21,22,23`. It is a coordinate-based construction rather than a traversal of an existing array.\n\n\n",
    "version-differences": "\nA retained source comment reports `=MAKEARRAY(1,1,#REF!)` returning `#VALUE!` in Excel 16.0 build 20430 on 25 October 2026. The earlier the earlier implementation implementation propagated `#REF!`; the current helper validates the final argument as a callable instead. This is an implementation correction against a recorded Excel answer, not a demonstrated change between Excel builds. That comment does not specify CPU or platform.\n\n[Recorded-control source](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/lambda_helpers.rs). No same-input comparison across named Excel builds is recorded here.\n\n\n",
    "what-it-does": "\n`MAKEARRAY(rows, cols, LAMBDA(row,col,calculation))` builds an array by calling a formula once for each coordinate. The lambda receives one-based row and column indices.\n\n\n"
  },
  "signature": {
    "display": "MAKEARRAY(rows, cols, lambda)",
    "parameters": [
      {
        "description": null,
        "name": "rows",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "cols",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "lambda",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 3,
        "min": 3
      },
      "category": "Logical functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "An array of a given size whose items a LAMBDA computes from row and column",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns a calculated array of a specified row and column size, by applying a LAMBDA",
        "microsoft_url": "https://support.microsoft.com/en-us/office/makearray-function-b80da5ad-b338-4149-a523-5b221da09097"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "MAKEARRAY"
        },
        {
          "locale": "bg-BG",
          "name": "MAKEARRAY"
        },
        {
          "locale": "cs-CZ",
          "name": "MAKEARRAY"
        },
        {
          "locale": "da-DK",
          "name": "MAKEARRAY"
        },
        {
          "locale": "de-DE",
          "name": "MAKEARRAY"
        },
        {
          "locale": "el-GR",
          "name": "MAKEARRAY"
        },
        {
          "locale": "en-AU",
          "name": "MAKEARRAY"
        },
        {
          "locale": "en-GB",
          "name": "MAKEARRAY"
        },
        {
          "locale": "en-US",
          "name": "MAKEARRAY"
        },
        {
          "locale": "es-ES",
          "name": "ARCHIVOMAKEARRAY"
        },
        {
          "locale": "et-EE",
          "name": "MAKEARRAY"
        },
        {
          "locale": "fi-FI",
          "name": "MAKEARRAY"
        },
        {
          "locale": "fr-FR",
          "name": "MAKEARRAY*"
        },
        {
          "locale": "he-IL",
          "name": "MAKEARRAY"
        },
        {
          "locale": "hr-HR",
          "name": "MAKEARRAY"
        },
        {
          "locale": "hu-HU",
          "name": "MAKEARRAY"
        },
        {
          "locale": "id-ID",
          "name": "MAKEARRAY"
        },
        {
          "locale": "it-IT",
          "name": "MAKEARRAY"
        },
        {
          "locale": "ja-JP",
          "name": "MAKEARRAY"
        },
        {
          "locale": "ko-KR",
          "name": "MAKEARRAY"
        },
        {
          "locale": "lt-LT",
          "name": "MAKEARRAY"
        },
        {
          "locale": "lv-LV",
          "name": "MAKEARRAY"
        },
        {
          "locale": "nb-NO",
          "name": "MAKEARRAY"
        },
        {
          "locale": "nl-NL",
          "name": "MAKEARRAY"
        },
        {
          "locale": "pl-PL",
          "name": "MAKEARRAY"
        },
        {
          "locale": "pt-BR",
          "name": "MAKEARRAY"
        },
        {
          "locale": "pt-PT",
          "name": "MARARRAY"
        },
        {
          "locale": "ro-RO",
          "name": "MAKEARRAY"
        },
        {
          "locale": "ru-RU",
          "name": "MAKEARRAY"
        },
        {
          "locale": "sk-SK",
          "name": "MAKEARRAY"
        },
        {
          "locale": "sl-SI",
          "name": "MAKEARRAY"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "MAKEARRAY"
        },
        {
          "locale": "sv-SE",
          "name": "MAKEARRAY"
        },
        {
          "locale": "th-TH",
          "name": "MAKEARRAY"
        },
        {
          "locale": "tr-TR",
          "name": "DİZİOLUŞTUR"
        },
        {
          "locale": "uk-UA",
          "name": "MAKEARRAY"
        },
        {
          "locale": "vi-VN",
          "name": "MAKEARRAY"
        },
        {
          "locale": "zh-CN",
          "name": "MAKEARRAY"
        },
        {
          "locale": "zh-HK",
          "name": "MAKEARRAY"
        },
        {
          "locale": "zh-TW",
          "name": "MAKEARRAY"
        }
      ],
      "signature": {
        "display": "MAKEARRAY(rows, cols, lambda)",
        "parameters": [
          {
            "description": null,
            "name": "rows",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "cols",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "lambda",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "MAKEARRAY",
      "version_marker": null,
      "xlcall": null
    },
    "microsoft": "https://support.microsoft.com/en-us/office/makearray-function-b80da5ad-b338-4149-a523-5b221da09097"
  },
  "try_it": {
    "formula": "=MAKEARRAY(2,3,LAMBDA(r,c,10*r+c))"
  },
  "url": "https://handbook.dnacalc.com/functions/MAKEARRAY.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "MAKEARRAY(1,1,#REF!) returned #VALUE! on 25 October 2026, as retained in the implementation source comment. This corrects an earlier implementation result; it is not a comparison between Excel builds.",
      "excel_build": "16.0 build 20430",
      "observations": [
        {
          "call": "=MAKEARRAY(1,1,#REF!)",
          "excel": {
            "code": "#VALUE!",
            "display": "#VALUE!",
            "kind": "error"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0 build 20430; platform and CPU not specified by the cited source comment."
        }
      ],
      "platform": null,
      "sources": [
        "https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/lambda_helpers.rs"
      ]
    }
  ]
}