{
  "category": "Our 10 featured functions",
  "display_name": "SUMIFS",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.SUMIFS",
  "implementation_state": {
    "answer_bank": null,
    "detail": "Recorded: 21 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 21 recorded answers",
    "workbook_corpus": {
      "cells": 22,
      "matched": 21,
      "pending": 1
    }
  },
  "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/conditional.rs#L168-L168",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/conditional.rs#L218-L227"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/aggregate::reader",
        "catalogue/aggregate::read_reference",
        "catalogue/comparison::numbers",
        "catalogue/comparison::in_band",
        "catalogue/comparison::Rounded::up",
        "catalogue/comparison::Roundings::of",
        "catalogue/comparison::Roundings::disjoint",
        "catalogue/comparison::texts",
        "catalogue/comparison/collation::compare",
        "catalogue/comparison/collation::weighed",
        "catalogue/comparison/collation::measured_iteration_extension",
        "catalogue/comparison/sort_key::table",
        "catalogue/comparison/sort_key::decode64",
        "catalogue/comparison/sort_key::Reader::byte",
        "catalogue/comparison/sort_key::Reader::varint",
        "catalogue/comparison/sort_key::Reader::done",
        "catalogue/comparison/sort_key::in_ranges",
        "catalogue/comparison/sort_key::build",
        "catalogue/comparison/sort_key::han_base",
        "catalogue/comparison/sort_key::derive",
        "catalogue/comparison/sort_key::shared_jamo_tails",
        "catalogue/comparison/sort_key::ordinary_jamo_prefix",
        "catalogue/comparison/sort_key::independent_jamo_suffix",
        "catalogue/comparison/sort_key::jamo_leading_primary",
        "catalogue/comparison/sort_key::leading_order",
        "catalogue/comparison/sort_key::Before::separate_special",
        "catalogue/comparison/sort_key::Gathered::kana",
        "catalogue/comparison/sort_key::Gathered::unit",
        "catalogue/comparison/sort_key::parts",
        "catalogue/comparison/sort_key::diacritic_order",
        "catalogue/comparison/sort_key::diacritics",
        "catalogue/conditional::conditional",
        "catalogue/conditional::total",
        "catalogue/conditional::Range::shape",
        "catalogue/conditional::range",
        "catalogue/conditional::pairs",
        "catalogue/conditional::Plan::each_matched",
        "catalogue/conditional::row",
        "catalogue/conditional::offset",
        "catalogue/conditional::read_range",
        "catalogue/conditional::verdicts",
        "catalogue/conditional::target_cells",
        "catalogue/conditional::used",
        "catalogue/conditional::Match::of",
        "catalogue/conditional::Match::negated",
        "catalogue/conditional::Op::holds",
        "catalogue/conditional::Op::is_equality",
        "catalogue/conditional::spells",
        "catalogue/conditional::criterion",
        "catalogue/conditional::rank",
        "catalogue/conditional::criterion_text",
        "catalogue/conditional::decided",
        "catalogue/conditional::Criterion::verdict",
        "catalogue/conditional::equality",
        "catalogue/conditional::is_surrogate",
        "catalogue/conditional::wildcard",
        "decimal::low32",
        "decimal::Natural::from_u64",
        "decimal::Natural::pow10",
        "decimal::Natural::normalize",
        "decimal::Natural::is_zero",
        "decimal::Natural::mul_add_small",
        "decimal::Natural::times_pow10",
        "decimal::Natural::times_pow5",
        "decimal::Natural::times_pow2",
        "decimal::ExactDecimal::binary",
        "ported/text_kernels::text",
        "ported/text_kernels::text_from_str",
        "ported/text_kernels::fold_unit",
        "ported/text_kernels::push_singleton_or_original",
        "ported/text_kernels::push_lower",
        "ported/text_kernels::lower"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/conditional.rs#L168-L168",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 21 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.SUMIFS.json",
  "name": "SUMIFS",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[SUMIF](FUNC.SUMIF.md) is shorter for one condition; [COUNTIFS](FUNC.COUNTIFS.md) counts rows; [SUMPRODUCT](FUNC.SUMPRODUCT.md) expresses weighted or more general array conditions.\n\n\n",
    "how-to-implement": "\nParse a leading comparison (`=`, `<>`, `<`, `<=`, `>`, `>=`) separately from its operand. Distinguish a numeric comparison from a text pattern. For text patterns support `?`, `*`, and tilde escaping, with Excel’s case-insensitive matching. Keep blank cells, empty strings and zero as distinct inputs until the criteria rule decides how each matches.\n\nCheck the dimensions, then walk corresponding offsets. Evaluate every criterion before admitting that position’s amount. Fold only the admitted numeric amounts into the sum. In the example the admitted cells are B3 and B5, yielding `0+11+13=24`. Keep criteria matching separate from numeric reduction, so errors and blank rules can be tested independently.\n\n\n",
    "quirks": "\nEvery criteria range must have the same shape as the amount range. Wildcards work in text criteria. The ordering differs from SUMIF, where the sum range is optional and comes last. Multiple criteria mean AND; adding two SUMIFS calls can count a row twice if the conditions overlap.\n\n\n",
    "sources": "\n- [Microsoft: SUMIFS function](https://support.microsoft.com/en-us/office/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b), opened 6 November 2026; syntax, documented argument rules and errors.\n\n",
    "try-it": "\nWith amounts `4,11,7,13` in B2:B5 and regions `east,east,west,east` in C2:C5, `=SUMIFS(B2:B5,C2:C5,\"east\",B2:B5,\">=10\")` returns `24`: eleven plus thirteen.\n\n\n",
    "version-differences": "\nNo same-input comparison between named Excel builds is recorded for this function here. The documented behaviour below is not a measurement of every Excel release.\n\n\n",
    "what-it-does": "\n`SUMIFS(sum_range, criteria_range1, criteria1, ...)` adds amounts whose corresponding cells satisfy all supplied conditions. The amount range is the first argument.\n\n\n"
  },
  "signature": {
    "display": "SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2], [criteria2], ...)",
    "parameters": [
      {
        "description": null,
        "name": "sum_range",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "criteria_range1",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "criteria1",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "criteria_range2",
        "optional": true,
        "repeats": false
      },
      {
        "description": null,
        "name": "criteria2",
        "optional": true,
        "repeats": true
      }
    ],
    "trailing_repeats": true
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 255,
        "min": 3
      },
      "category": "Our 10 featured functions",
      "classification": {
        "arg_preparation_profile": "RefsVisibleInAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "ReductionFold",
        "fec_dependency_profile": "RefOnly",
        "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": "Total of the cells that meet every one of several conditions",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Use this function when you need to add the cells in a range that meet multiple criteria.",
        "microsoft_url": "https://support.microsoft.com/en-us/office/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "SUMIFS"
        },
        {
          "locale": "bg-BG",
          "name": "SUMIFS"
        },
        {
          "locale": "cs-CZ",
          "name": "SUMIFS"
        },
        {
          "locale": "da-DK",
          "name": "SUM.HVISER"
        },
        {
          "locale": "de-DE",
          "name": "SUMMEWENNS"
        },
        {
          "locale": "el-GR",
          "name": "SUMIFS"
        },
        {
          "locale": "en-AU",
          "name": "SUMIFS"
        },
        {
          "locale": "en-GB",
          "name": "SUMIFS"
        },
        {
          "locale": "en-US",
          "name": "SUMIFS"
        },
        {
          "locale": "es-ES",
          "name": "SUMAR.SI.CONJUNTO"
        },
        {
          "locale": "et-EE",
          "name": "Funktsioon SUMIFS"
        },
        {
          "locale": "fi-FI",
          "name": "SUMMA.JOS.JOUKKO"
        },
        {
          "locale": "fr-FR",
          "name": "SOMME.SI.ENS"
        },
        {
          "locale": "he-IL",
          "name": "SUMIFS"
        },
        {
          "locale": "hr-HR",
          "name": "SUMIFS"
        },
        {
          "locale": "hu-HU",
          "name": "SZUMHATÖBB"
        },
        {
          "locale": "id-ID",
          "name": "SUMIFS"
        },
        {
          "locale": "it-IT",
          "name": "SOMMA.PIÙ.SE"
        },
        {
          "locale": "ja-JP",
          "name": "SUMIFS"
        },
        {
          "locale": "ko-KR",
          "name": "SUMIFS"
        },
        {
          "locale": "lt-LT",
          "name": "SUMIFS"
        },
        {
          "locale": "lv-LV",
          "name": "SUMIFS"
        },
        {
          "locale": "nb-NO",
          "name": "SUMMER.HVIS.SETT"
        },
        {
          "locale": "nl-NL",
          "name": "SOMMEN.ALS"
        },
        {
          "locale": "pl-PL",
          "name": "SUMA.WARUNKÓW"
        },
        {
          "locale": "pt-BR",
          "name": "SOMASES"
        },
        {
          "locale": "pt-PT",
          "name": "SOMA.SE.S"
        },
        {
          "locale": "ro-RO",
          "name": "SUMIFS"
        },
        {
          "locale": "ru-RU",
          "name": "СУММЕСЛИМН"
        },
        {
          "locale": "sk-SK",
          "name": "SUMIFS"
        },
        {
          "locale": "sl-SI",
          "name": "SUMIFS"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "SUMIFS"
        },
        {
          "locale": "sv-SE",
          "name": "SUMMA.OMF"
        },
        {
          "locale": "th-TH",
          "name": "SUMIFS"
        },
        {
          "locale": "tr-TR",
          "name": "ÇOKETOPLA"
        },
        {
          "locale": "uk-UA",
          "name": "SUMIFS"
        },
        {
          "locale": "vi-VN",
          "name": "SUMIFS"
        },
        {
          "locale": "zh-CN",
          "name": "SUMIFS"
        },
        {
          "locale": "zh-HK",
          "name": "SUMIFS"
        },
        {
          "locale": "zh-TW",
          "name": "SUMIFS"
        }
      ],
      "signature": {
        "display": "SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2], [criteria2], ...)",
        "parameters": [
          {
            "description": null,
            "name": "sum_range",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "criteria_range1",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "criteria1",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "criteria_range2",
            "optional": true,
            "repeats": false
          },
          {
            "description": null,
            "name": "criteria2",
            "optional": true,
            "repeats": true
          }
        ],
        "trailing_repeats": true
      },
      "surface_name": "SUMIFS",
      "version_marker": null,
      "xlcall": {
        "code": "482",
        "symbol": "xlfSumifs"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b"
  },
  "try_it": {
    "formula": "=SUMIFS(B2:B5,C2:C5,\"east\",B2:B5,\">=10\")",
    "inputs": {
      "B2": 4,
      "B3": 11,
      "B4": 7,
      "B5": 13,
      "C2": "east",
      "C3": "east",
      "C4": "west",
      "C5": "east"
    }
  },
  "url": "https://handbook.dnacalc.com/functions/SUMIFS.html",
  "variants": [],
  "versions": []
}