Documentation/Calc 関数/SUMIFS

    From The Document Foundation Wiki
    This page is a translated version of the page Documentation/Calc Functions/SUMIFS and the translation is 100% complete.


    Function name:

    SUMIFS

    Category:

    Mathematical

    Summary:

    セル範囲内の数値の合計を計算します。加算されるセルは、複数の条件を使用して決定されます。 SUMIFS と Calc の SUMIF 関数の主な違いは、後者が 1 つの条件のみを評価するように制限されていることです。

    SUMIFS に渡される条件では、ワイルドカードまたは正規表現を使用できます。

    Syntax:

    SUMIFS(合計範囲; 範囲 1; 条件 1[; 範囲 2; 条件 2[; … [; 範囲 127; 条件 127]]])

    Returns:

    関連するセルの数値を加算した結果である実数を返します。

    Arguments:

    合計範囲 引数

    合計範囲 は合計するセルを指定します。通常、合計範囲 は次のいずれかの形式になります。

    • セル範囲への参照 (例えば、A1:A25)。参照連結演算子 (~) を使用しない場合があります。
    • 名前付き範囲の名前。
    • データベース範囲の名前。

    範囲 引数

    範囲 1 は、条件 1 と照合されるセルのセットを指定し、合計範囲に対してリストされた形式の 1 つを取ります。範囲 1 は、合計範囲と同じ次元を持つ必要があります。

    範囲 2、...、範囲 127 は、範囲 1 と同じ意味です。

    条件 引数

    条件 1範囲 1 内のセル、またはその条件を含むセルと照合するための条件です。条件 1 は、次のいずれかの形式になります。

    • 34.5 などの数値、日付および論理値 (TRUE または FALSE) は数値として処理されます。
    • 2/3、SQRT($D$1)、DATE(2021; 11; 1) などの式。
    • "golf" や "<>10" などのテキスト文字列。

    SUMIFS は、条件 1 が比較演算子(>、<、>=、<=、=、または <>)で始まる文字列でない限り、条件 1 と等しい範囲 1 のセルを検索します。前者の場合、SUMIFS は、範囲 1 のセルを残りの文字列(可能な場合は数値として解釈され、それ以外の場合はテキストとして解釈されます)と比較します。たとえば、条件 ">4.5" は、各セルの内容が数値 4.5 より大きいかどうかをテストし、条件 "<dog" は、各セルの内容がテキスト "dog" の前にアルファベット順に来るかどうかをテストし、条件 "<>2021-11-01" は、各セルの内容が指定された日付と等しくないかどうかをテストします。

    条件 1 は、次の特定の動作をサポートしています。

    • 文字列 "=" は空のセルに一致します。たとえば、数式 =SUMIFS(A1:A10; B1:B10; "=") は、範囲 B1:B10 のすべてのセルが空の場合に、範囲 A1:A10 のすべての値の合計を返します。"=0" は空のセルには一致しないことに注意してください。
    • 文字列 "<>" は、空でないセルに一致します。たとえば、数式 =SUMIFS(A1:A10; C1:C10; "<>") は、範囲 C1:C10 に空のセルがない場合、範囲 A1:A10 のすべての値の合計を返します。
    • "<>" 比較演算子の後の値が空でない場合、条件 1 は、空のセルを含む、その値を除く任意のセルの内容に一致します。

    条件 2、...、条件 127 は、条件 1 と同様に機能します。

    エラーの条件

    • 引数として渡されたセル範囲に参照連結演算子 (~) が含まれている場合、SUMIFS は無効な引数エラー (エラー:502) を返します。
    • 引数として渡されるすべてのセル範囲(合計範囲および範囲 1、…、範囲 127)は、同じ行数および同じ列数である必要があります。これが当てはまらない場合、SUMIFS は無効な引数エラー (エラー:502) を返します。
    • 引数範囲 nと引数条件 nが正しく組み合わされていない場合、SUMIFS は変数不足エラー (エラー:511) を返します。

    Additional details:

    SUMIFS 関数に固有の詳細

    • SUMIFS によって実行されるデフォルトの照合では、大文字と小文字が区別されません。ただし、正規表現を使用している場合は、次の例に示すように、正規表現内にモード修飾子 "(?-i)" を含めることによって、大文字と小文字を区別した照合を実行できます。
    • SUMIFS の動作は、ツール ▸ オプション ▸ LibreOffice Calc ▸ 計算式 ダイアログ(macOSでは LibreOffice ▸ Preferences ▸ LibreOffice Calc ▸ 計算式) で使用可能ないくつかの設定の影響を受けます。
    1. 検索条件 = と <> はセル全体に適用 のチェックボックスがチェックされている場合、条件 "red" は "red" のみに一致します。チェックされていない場合は、 "red" 、"Fred"、"red herring" に一致します。
    2. 数式でワイルドカードを使用する のチェックボックスがオンになっている場合、条件はワイルドカードを使用して一致します。例えば、"b?g" は "bag"、"beg"、"big"、"bog"、および "bug" と一致します。
    3. 数式で正規表現を使用する のチェックボックスがオンになっている場合、条件は正規表現を使用して一致します。例えば、"r.d" は "red"、"rid"、"rod" に一致し、"red.*" は "red"、"redraw"、および "redden" に一致します。
    4. 大文字と小文字を区別する のチェックボックスの設定は、SUMIFS の操作には影響しません。


    Calc の正規表現に関する一般事項

    Note pin.svg

    Note:
    便宜上、このサブセクションの情報は、正規表現を操作する関数を説明するすべてのページで表示されます。

    • 正規表現とは、一致させるテキストのパターンを定義する文字列です。より詳細で一般的な背景情報は、Regular expression ページにあります。
    • 正規表現は多くのドメインで広く使用されており、様々な正規表現プロセッサが利用可能です。Calc では、International Components for Unicode (ICU) のオープンソース正規表現パッケージ を採用しています。ICU 正規表現の構文の完全な定義を含む詳細については、Regular Expressions のドキュメントを参照してください。
    • さらに、LibreOffice のヘルプ・システムは、高水準の 正規表現リスト を提供します。
    • Calc の正規表現エンジンは、番号付きキャプチャ・グループ をサポートしています。これにより、一致するサブ範囲を識別し、置換テキスト内で使用できます。括弧は、正規表現のコンポーネントをグループ化し、番号付きキャプチャ・グループを作成するために使用されます。キャプチャ・グループを置換テキストに挿入するには、"$n" 形式を使用します。ここで、"n" はキャプチャ・グループの番号です。


    Calc のワイルドカードに関する一般事項

    ワイルドカードは、一部の Calc 関数に引数として渡される検索文字列で使用できる特殊文字です。また、検索と置換 ダイアログで検索条件を定義するためにも使用できます。ワイルドカードを使用すると、単一の検索文字列でより高度な検索パラメータを定義できます。

    Calc は、現在のアプリケーションの設定に応じて、引数としてワイルドカードまたは正規表現をサポートします。既定では、正規表現ではなくワイルドカードがサポートされます。

    ワイルドカードがサポートされていることを確認するには、 ツール ▸ オプション ▸ LibreOffice Calc ▸ 計算式 に移動し、オプション 数式でワイルドカードを使用する が選択されているかどうかを確認します。このダイアログを使用して正規表現に切り替えるには、数式で正規表現を使用する を選択するか、ワイルドカードも正規表現もサポートしないように選択します。

    次の表に、Calc でサポートされているワイルドカードを示します。

    Calc wildcards
    ワイルドカード 説明
    ? (クエスチョン・マーク) 任意の 1 文字に一致します。たとえば、検索文字列 "b?g" は "bag" および "beg" に一致しますが、"boog" または "mug" には一致しません。

    "?"正確に 1 文字に一致する必要があるため、"bg" にも一致しないことに注意してください。"?" ワイルドカードは、0 文字の一致には対応しません。
    * (アスタリスク) 空の文字列を含む任意の文字列と一致します。たとえば、検索文字列 "*cast" は、"cast"、"forecast" および“outcast”と一致しますが、デフォルトの Calc 設定を使用する場合 "forecaster" とは一致しません。

    ツール ▸ オプション ▸ LibreOffice Calc ▸ 計算式 でオプション 検索条件 = と <> はセル全体に適用 が無効になっている場合、"forecaster" は "*cast" の検索文字列を使用し一致させることができます。
    ~ (チルダ) チルダ文字の直後に続く疑問符、アスタリスク、または チルダ文字の特別な意味をエスケープします。

    例えば、検索文字列 "why~?""why?" に一致しますが、 "whys""why~s" には一致しません。

    ワイルドカードの比較では大文字と小文字が区別されないため、 "A?" は "A1" と "a1" の両方に一致します。

    これらのワイルドカードは、Calc と Microsoft Excel の両方でサポートされています。したがって、2 つのアプリケーション間の相互運用性が必要な場合は、正規表現ではなくワイルドカードを使用することを選択します。逆に、相互運用性が必要でない場合は、より強力な検索機能のために正規表現の使用を検討してください。

    Examples:

    文房具販売の例

    次の表に、小規模な文房具仕入先の販売数と収益の情報を示します。文字列 "N/A" は、データの対象期間中に供給できなかった製品を示します。

    A B C
    1 製品 販売数 収益
    2 Pencil 20 $65
    3 Pen 35 $85
    4 Notebook 20 $190
    5 Book 17 $180
    6 Pencil case N/A N/A

    この表に基づくすべての例では、pencil cases の行 6 には数値データが含まれていないため、条件が指定されていても SUMIFS の結果には決して影響しないことに注意してください。

    Formula Description Returns
    =SUMIFS(B2:B6; B2:B6; ">=20") この例では、販売数の 20 以上の数値データを合計します。 75
    =SUMIFS(C2:C6; B2:B6; ">=20"; C2:C6; ">70") この例では、販売数 データの 20 以上のエントリのうち、収益 データの値が $70 より大きい入力値を検索し、収益 データの対応する入力数値を合計します。 $275
    =SUMIFS(C2:C6; B2:B6; ">"&MIN(B2:B6); B2:B6; "<"&MAX(B2:B6)) この例では、販売数 データの最小値と最大値を除くすべての値に対応する収益 データの入力数値の合計が計算されます。 $255
    =SUMIFS(C2:C6; A2:A6; "pen.*"; B2:B6; "<"&MAX(B2:B6)) この例では、正規表現が使用可能になっている場合にのみ、ここで説明したように機能します。ここでは、文字 "pen" で始まり、販売数 データの値が最大値ではない製品データの入力値を検索し、収益 データの対応する入力数値を合計します。 $65
    =SUMIFS(C2:C6; A2:A6; E2&".*"; B2:B6; "<"&MAX(B2:B6))
    ここで、セル E2 には文字列 "pen" が含まれます(二重引用符を入力せずに入力します)。
    この例では、正規表現が有効になっている場合にのみ、ここで説明したように機能します。条件を簡単に変更する必要がある場合は、別のセルで条件を指定し、SUMIFS 関数の条件でこのセルへの参照を使用できます。ここでは、セルへのリンクがその内容で置き換えられ、前の例と同じ結果が得られます。 $65

    スポーツ用品販売の例

    このサブセクションの例は、スポーツ用品の販売データの小規模なデータベースに基づいており、データは次の表のように編成されています。

    A B C D E
    1 日付 売上値 カテゴリ 地域 従業員
    2 2021-10-02 $1,508 Golf East Hans
    3 2021-10-02 $410 Tennis North Kurt
    4 2021-10-02 $2,340 Sailing South Ute
    5 2021-10-03 $4,872 Tennis East Brigitte
    6 2021-10-06 $3,821 Tennis South Fritz
    7 2021-10-06 $2,623 Tennis East Fritz
    8 2021-10-07 $3,739 Golf South Fritz
    9 2021-10-08 $4,195 Golf West Ute
    10 2021-10-10 $2,023 Golf East Hans
    Formula Description Returns
    =SUMIFS(B2:B10; B2:B10; ">=4000") この例では、売上値 データ内の $4,000 以上の入力数値が合計されます。この式は、=SUMIF(B2:B10; ">=4000") および =SUMIF(B2:B10; ">=4000"; B2:B10) の両方と同等です。 $9,067
    =SUMIFS(B2:B10; E2:E10; "ute") この例では、従業員 データ内の Ute の入力値を検索し、売上値 データ内の対応する入力数値を合計します。この式は =SUMIF(E2:E10; "ute"; B2:B10) に相当します。この引数の順序の変更により、2 つの関数間の重要な違いが明らかになります。合計範囲は、 SUMIF の3番目の引数と SUMIFS の最初の引数です。 $6,535
    =SUMIFS(B2:B10; CategoryData; "golf")
    ここで、名前付き範囲 CategoryData は、セル範囲 C2:C10 をカバーするように作成されています。
    この例では、カテゴリ データ内の Golf の入力値を検索し、SUMIFS売上値 データ内の対応する入力数値を合計します。 $11,465
    =SUMIFS(B2:B10; D2:D10; F1; E2:E10; F2)
    ここで、セル F1 と F2 には、それぞれにテキスト文字列 ">=south" and "ute" が入力済みとします(どちらも二重引用符を付けないで入力します)。
    この例では、従業員 データが Ute である内の 地域 データの South と West の入力値を検索し、売上値 データの対応する入力数値を合計します。 $6,535
    =SUMIFS(B2:B10; A2:A10; DATE(2021; 10; 2); C2:C10; "tennis") この例では、日付 列の 2021-10-02 の入力値のうち、カテゴリ データにも テニス がある入力値を検索し、売上値 データの対応する入力数値を合計します。 $410
    =SUMIFS(B2:B10; A2:A10; ">="&DATE(2021; 10; 6); E2:E10; "<>"&E8) この例では、従業員 データに Fritz が含まれない、日付 列の 2021-10-06 以降の日付の入力値が検索され、売上値 データの対応する入力数値が合計されます。 $6,218
    =SUMIFS(B2:B10; C2:C10; "tennis"; D2:D10; "east"; E2:E10; "fritz") この例では、カテゴリ データに Tennis 、地域 データに East、従業員 データに Fritz が含まれる入力値が検索されます。売上値 データの対応する入力数値が合計されます。 $2,623
    =SUMIFS(B2:B10; D2:D10; "????"; E2:E10; "*e") この例は、ワイルドカードが使用可能になっている場合にのみ、ここで説明するように動作します。ここでは、文字 "e" または "E" で終わる 従業員 (Brigitte and Ute) データ内に入力値があり、地域 データ内の 4 文字の入力値 (East および West) を検索します。売上値 データ内の対応する入力数値を合計します。 $9,067
    =SUMIFS(B2:B10; C2:C10; "^t.*"; D2:D10; ".*h") この例は、正規表現が有効な場合にのみ、ここで説明するように動作します。ここでは、文字 "t" または "T" で始まり(Tennis)、文字 "h" または "H"で終わる (North および South) 地域 データの入力値も持つ、カテゴリ データの Tennis の入力値が検索されます。売上値 データの対応する入力数値が合計されます。 $4,231
    =SUMIFS(B2:B10; E2:E10; "(?-i)ute") この例は、正規表現が有効な場合にのみ、ここで説明するように動作します。正規表現内の "(?-i)" モード修飾子は大文字と小文字を区別する一致に変更されるため、従業員データには入力値が見つかりません。この表の 2 番目の例と比較してください。 $0

    その他の例

    その他の例については、この Calc spreadsheet をダウンロードして参照してください。

    Related LibreOffice functions:

    AVERAGEIFS

    COUNTIFS

    SUMIF

    ODF standard:

    Section 6.16.63, part 2

    Related (or similar) Excel functions:

    SUMIFS