ジョセフは、値のリストを含むワークシートを持っています。それらの値のいくつかはゼロより上であり、他は下です。彼はSUM関数を使用して値の合計を計算できますが、実際にはリスト内の各項目の絶対値の合計を計算したいと考えています。したがって、3つの値-33、14、-5の合計は、-24ではなく52になります。

目的の合計を作成するために使用できる組み込み関数はありませんが、タスクを実行するための数式を作成することはできます。 1つの方法は、次の方法でSUMIF関数を使用することです。

=SUMIF(A1:A10,">0")-SUMIF(A1:A10,"<0")

最初のSUMIFはゼロより大きいすべての値を合計し、2番目のSUMIFはゼロより小さいすべての値を合計します。したがって、4つの値-33、14、-5、42を使用すると、最初のSUMIFは合計56(14 + 42)になり、2番目の値は合計-38(-33 + -5)になります。最初の合計(56 — 38)から2番目の合計を引くと、94の最終回答が得られます。これは、すべての絶対値の合計です。

別のアプローチは、SUMPRODUCT関数を使用することです。次の式は、望ましい結果を生成します:

=SUMPRODUCT(ABS(A1:A10))

この関数は通常、配列のさまざまな要素を相互に乗算し、それらの積を合計するために使用されます。配列(A1:A10)が1つしかないため、乗算は行われませんが、目的の絶対値の合計が返されます。

また、Excelの便利でほとんど使用されない機能である配列数式を使用して、目的の結果を得ることができます。値がA1:A10の範囲にあると仮定して、次の式を入力します。

=SUM(ABS(A1:A10))

Enterキーを押さないでください。代わりに、Ctrl + Shift + Enterを押します。これは、これが配列数式であることを示します。数式が正しく入力されると、数式バーに数式の前後に中かっこが表示されます:

{=SUM(ABS(A1:A50))}

式が行うことは、A1:A10の個々の絶対値である中間列(値の配列)を内部的に作成することです。次に、この配列を合計して結果を表示します。

最後に、必要に応じて、範囲内の絶対値の合計を返す独自のユーザー定義関数(マクロ)を作成できます。

以下は、このタスクを実行するマクロです。

Function SumAbs(Rng As Range) As Double     Result = 0     On Error GoTo Done     For Each element In Rng         Result = Result + Abs(element)

Next element Done:

SumAbs = Result End Function

ワークシートに簡単な数式を入力すると、この関数を使用できます。

=SumAbs(A1:A10)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

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

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