(A1 * A6)+(B1 * B6)+(C1 * C6)…を計算するための簡潔なExcel式はありますか?


45

Excelシートで次の長い式に簡潔な式を与える方法を知りたい:

= (A1*A6)+(B1*B6)+(C1*C6)...

sum関数を使用しますか、またはこれに別の関数がありますか?SUM関数でコロンを使用すると役立つと思いますが、使用方法がわかりません。




7
数学的には、これはドット積またはスカラー積として知られています。お気に入りの検索エンジンを使用する必要がある場合に役立つ用語。
フィリップケンドール

内積:通常、この問題を転置して、A1 * B1 + A2 * B2 + C3 * B3 ....)....もちろんこれは表記のみです
...-JosephDoggie

回答:


110

SUMPRODUCT関数を探しています。

=SUMPRODUCT(A1:C1,A6:C6)

これは、2つ(またはそれ以上)の範囲にある対応するアイテムの製品の合計を返します。

ここに画像の説明を入力してください

私がリンクしたMicrosoftのドキュメントからわかるように、範囲は単一の行または単一の列である必要はありません(ただし、それらのディメンションは同じである必要があります)。

SUMPRODUCTは、最大255個の異なる範囲の値を乗算できます。たとえば=SUMPRODUCT(A1:C1,A6:C6,A11:C11)、はと同じ=A1*A6*A11+B1*B6*B11+C1*C6*C11です。


19

SUM関数は要素を追加するだけなので機能しません。SUMに渡す前に値を乗算する必要があります=SUM(A1*A6, B1*B6, C1*C6, D1*D6, E1*E6)

もちろん、=A1*A6 + B1*B6 + C1*C6 + D1*D6 + E1*E6どちらを使用することもできますSUM

より良い解決策がたくさんあります。1つの方法は、配列数式を使用することです。そこにあなたのような正確な例を見ることができます:

配列数式の構文

一般に、配列数式は標準の数式構文を使用します。それらはすべて等号(=)で始まり、配列数式でほとんどの組み込みExcel関数を使用できます。主な違いは、配列数式を使用する場合、Ctrl+ Shift+ Enterを押して数式を入力することです。これを行うと、Excelは配列数式を中かっこで囲みます。中かっこを手動で入力すると、数式はテキスト文字列に変換され、機能しなくなります。

配列関数は、複雑な数式を作成するための非常に効率的な方法です。配列式=SUM(C2:C11*D2:D11)はこれと同じです:

=SUM(C2*D2,C3*D3,C4*D4,C5*D5,C6*D6,C7*D7,C8*D8,C9*D9,C10*D10,C11*D11).

あなたのケースで配列式を使用するには、入力することができます(もちろん、それに応じて配列の最後の要素を変更する必要があります)

=SUM(A1:E1*A6:E6)

そしてCtrl+ Shift+を押しますEnter


配列数式は非常に強力なツールです。ただし、注意して使用してください。編集する必要があるたびに、必ずCtrl+ Shift+ を押してください。Enter

配列数式を使用する理由

Excelで数式を使用した経験がある場合は、かなり高度な操作を実行できることを知っています。たとえば、任意の年数にわたるローンの総費用を計算できます。配列数式を使用して、次のような複雑なタスクを実行できます。

  • セルの範囲に含まれる文字の数をカウントします。

  • 範囲内の最低値や上限と下限の間にある数値など、特定の条件を満たす数値のみを合計します。

  • 値の範囲内のn番目の値ごとに合計します。

配列数式には次の利点もあります。

  • 一貫性: E2から下のセルのいずれかをクリックすると、同じ数式が表示されます。この一貫性により、精度が向上します。

  • 安全性:マルチセル配列数式のコンポーネントを上書きすることはできません。たとえば、セルE3をクリックして、Deleteキーを押します。セルの範囲全体(E2からE11)を選択して配列全体の数式を変更するか、配列をそのままにしておく必要があります。追加の安全対策として、式の変更を確認するためにCtrl+ Shift+ Enterを押す必要があります。

  • ファイルサイズを小さくする:多くの場合、複数の中間式の代わりに単一の配列式を使用できます。たとえば、ワークブックは1つの配列式を使用して列Eの結果を計算します。標準の式(= C2 * D2、C3 * D3、C4 * D4…など)を使用した場合、11の異なる式を使用して計算したことになります。同じ結果。

また、アクセスパターンが既知であるため、高速です。11種類の計算を個別に行う代わりに、CPUの複数のコアとSIMDユニットを利用して、ベクトル化して並列に実行できます


7
ただし、配列関数は非常に壊れやすいことに注意してください。たとえば、それらをコピーして貼り付けると、事態がひどく壊れてしまいます。多くの場合、非常に大きい場合、強制的な更新なしでは正しく更新されません。優れた強力な機能ですが、通常のフォーミュラに比べてひどいです。
JKreft

3
@StianYttervik:答えは役に立つと思います。誰かがこの種の式でシートを開き、それを見たことがない場合はどうなりますか?この回答は、これらのユーザーに役立ちます。
Bad_Bishop

3
@StianYttervik配列式は、正しい手にある強力なツールです。それは遅いではありません、それが簡単に最適化し、ベクトル化させることができるので、すべてで。そして、それはメモリを節約します。Googleドキュメントでもサポートしています。これに返信しないでください。私はこれ以上応答しません
phuclv

2
特定の機能(例えば@StianYttervik MOD原因になります)SUMPRODUCT破るために、その後、あなたは配列数式に置き換えることを持っています。言うまでもなく、リリースされたすべてのバージョンのOfficeには、公式関数として追加された一般的に使用されている配列数式(MAXIFS365など)があります。そして、もちろん-PowerQueryは追加のアドイン拡張機能であるため、多くの企業は(さまざまな理由で)コーポレートビルドパッケージに含めず、分散ビジネス目的の劣ったソリューションにしています。
クロノシダル

1
@Chronocidalはい、場合もありますが、少数です...そして、パワークエリが解決策です。またはデータモデル。またはキューブ関数。または上記のすべて。配列と行ご​​との計算/実行は、測定できません。
Stian Yttervik

7

もう1つのアプローチは、A7に式= A1 * A6を入れて、必要なだけコピーし、行$ 7 $を合計して最終的な答えを取得することです。あなたが望むように1つのセルでそれを行うわけではありませんが、時には中間製品を持っていると便利です。私は両方のバージョンを使用しました。これは私にとってよりExcelっぽい感じがしますが、あなたの好みは異なるかもしれません。


1

数値のリストを行ではなく列(たとえば、2列AとB)に配置すると、そのような関数= Sumproduct(A:A、B:B)を使用できます。A列とB列にある数と同じ数の積が得られます。

Sumproduct関数では、必要な数の列を使用できます


2
Sumproduct(1:1,2:2)は行に対しても同じように機能します。
マテユハス

0

行1および6に、SUMPRODUCT()目的のもの以外に何もない場合は、このコメントで言及されているアイデアを使用できます。あなたの場合、質問で概説されているように、あなたは=SUMPRODUCT(1:1,6:6)


4
これは、回答とコメントにすでに入力されているものの上に追加情報を実際に提供するものではありません。
マテユハス

1
@MátéJuhász-どの答えが私の答えを提供しますか?@AjayCが提供する回答に対するあなたのコメントは、SUMPRODUCT(1:1,2:2)そのコメントに基づいて回答を提供し、元の質問に基づいてどのように使用できるか、そしてそれに対する制限は何かを詳しく説明しました。
クリスロジャース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.