クリスチャンには、値を含む18個のセルの範囲があります。彼は、その範囲で最大の12の値の合計を見つけたいと考えており、タスクを実行する方法を考えています。

この問題に取り組むにはいくつかの方法があります。たとえば、値をフィルタリングして上位12個の値のみを取得し、それらを合計することができます。他のアプローチでは、中間値を格納するために追加の列を使用する必要がありますが、追加の列を使用しないアプローチをお勧めします。

まず、18セルの範囲がA1:A18であると仮定します。 LARGE関数を使用して、最大値を見つけることができます。たとえば、次の式を使用すると、次の範囲で2番目に大きい値が見つかります。

=LARGE(A1:A18,2)

これは、関数の2番目のパラメーターであり、必要な最大値を順番に指定します。したがって、次のような式を使用して、12個の最大値の合計を見つけることができます。

=LARGE(A1:A18,1)+LARGE(A1:A18,2)+LARGE(A1:A18,3)+LARGE(A1:A18,4)

+LARGE(A1:A18,5)+LARGE(A1:A18,6)+LARGE(A1:A18,7)+LARGE(A1:A18,8)

+LARGE(A1:A18,9)+LARGE(A1:A18,10)+LARGE(A1:A18,11)+LARGE(A1:A18,12)

ただし、タスクを実行するために使用できる短い数式があります。

たとえば、次のようにして、範囲の合計から6つの最小値を単純に減算できます。

=SUM(A1:A18)-SMALL(A1:A18,1)-SMALL(A1:A18,2)-SMALL(A1:A18,3)

-SMALL(A1:A18,4)-SMALL(A1:A18,5)-SMALL(A1:A18,6)

必要に応じて、SUMIF関数を使用して値の比較を行い、指定した基準が満たされた場合にのみ値を合計することもできます。たとえば、次の2つの式について考えてみます。

=SUMIF(A1:A18,">="&LARGE(A1:A18,12))

=SUMIF(A1:A18,">"&SMALL(A1:A18,6))

最初の数式は、範囲内の12番目に大きい値以上のすべての値を合計します。 2番目は事実上同様です。 6番目に小さい値より大きいすべての値を合計します。

これらの2つの式は、確立された「境界」に重複する値がない場合にうまく機能します。ただし、12番目に大きい値または6番目に小さい値と見なされる値が複数ある場合、数式は期待する合計を返しません。最初の式では、合計が大きすぎます(重複する値がすべて合計に追加されるため)。2番目の式では、合計が小さすぎます(重複する値がすべて合計から除外されるため)。

これを回避する方法は、以前の式の1つ(SUMIFを使用しない式)に戻るか、値が重複する可能性を考慮に入れるようにSUMIF式を変更することです。

=SUMIF(A1:A18,">"&LARGE(A1:A18,12))+LARGE(A1:A18,12)

* (12-COUNTIF(A1:A18,">"&LARGE(A1:A18,12)))

おそらく、望ましい結果を得るための最良の式は、LARGE関数の以前の使用にひねりを加えます:

=SUM(LARGE(A1:A18,{1,2,3,4,5,6,7,8,9,10,11,12}))

この数式は配列(中括弧内の部分)を使用しますが、配列数式ではありません。配列をLARGE関数の2番目のパラメーターとして使用し、12個の最大値すべてを返します。次に、これらが合計され、単一の値が返されます。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9420)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Summing_Only_the_Largest_Portion_of_a_Range [範囲の最大部分のみを合計]