AND条件のセットに加えてOR条件のセットに基づいて列を合計する簡潔なExcel式を作成したいと思います。
Excelテーブルには次のデータが含まれており、列の定義名を使用しました。
SalesmanがJBloggsに等しく、Days_To_Closeが90以下で、Quote_Monthが次のいずれか(10月13日、11月13日、または12月13日)に等しい場合、Quote_Valueを合計します。
現時点では、これを機能させることができましたが、多くの繰り返しが含まれており、必要ではないと思います。
=SUM(SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Oct-13")+SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Nov-13")+SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,"=Dec-13"))
私がやりたいのは次のようなものですが、正しい構文を見つけることができません:
=SUMIFS(Quote_Value,Salesman,"=JBloggs",Days_To_Close,"<=90",Quote_Month,OR(Quote_Month="Oct-13",Quote_Month="Nov-13",Quote_Month="Dec-13"))
この式はエラーではなく、値0を返すだけです。しかし、手動でデータを調べた場合、それは正しくありません。 TRIM(Quote_Month)を使用して、スペースがデータに入らないようにしましたが、拡張SUM式が機能するという事実は、データが正常であり、構文の問題であることを示しています。誰かが私を正しい方向に導くことができますか?
このようにSUMIFS
を使用できます
=SUM(SUMIFS(Quote_Value,Salesman,"JBloggs",Days_To_Close,"<=90",Quote_Month,{"Oct-13","Nov-13","Dec-13"}))
SUMIFS
関数は3つの値の「配列」を返します(「Oct-13」、「Nov-13」、および「Dec-13」ごとに合計1つ)。したがって、SUM
が必要です。その配列を合計し、最終結果を提供します。
この構文には注意してください。式内には、「OR」条件を使用して最大でtwo基準のみを指定できます。2つある場合は、1つにで基準を区切る必要がありますカンマ、他の場合はセミコロン。
さらに必要な場合は、SUMPRODUCT
とともにMATCH
を使用できます。あなたの場合
=SUMPRODUCT(Quote_Value,(Salesman="JBloggs")*(Days_To_Close<=90)*ISNUMBER(MATCH(Quote_Month,{"Oct-13","Nov-13","Dec-13"},0)))
そのバージョンでは、ISNUMBER/MATCH
を使用して「OR」条件をいくつでも追加できます
より柔軟なDSUMを使用できます。セールスマンまたは見積月の名前を変更する場合のように、数式を変更する必要はなく、一部の基準セルのみを変更する必要があります。詳細については、以下のリンクを参照してください...基準さえ他のシートからコピーする式にすることができます
http://office.Microsoft.com/en-us/Excel-help/dsum-function-HP010342460.aspx?CTT=1
Quote_Month
のソース列で実際の日付/時刻を参照することを検討できます。その後、OR
をいくつかのAND
sに変換できます。 Quote_Date
を呼び出すことにしました
=SUMIFS(Quote_Value,"<=90",Quote_Date,">="&DATE(2013,11,1),Quote_Date,"<="&DATE(2013,12,31),Salesman,"=JBloggs",Days_To_Close)
(興味深い条件を前面に移動しました)。
このアプローチは、「OR」条件が実際に日付範囲を指定しているため、ここで機能します-他の場合には機能しない可能性があります。
SUMPRODUCT
はSUM
配列よりも高速です。つまり、SUM
関数に_{}
_配列があります。 SUMIFS
はSUMPRODUCT
より30%高速です。
{SUM(SUMIFS({}))}
vs SUMPRODUCT(SUMIFS({}))
はどちらも正常に機能しますが、SUMPRODUCT
は_CTRL-SHIFT-ENTER
_を使用せずに作成して、_{}
_を作成する方が少し簡単だと感じています。
個人的には、複数の条件に対してSUMPRODUCT(--(ISNUMBER(MATCH(...))))
をSUMPRODUCT(SUMIFS({}))
よりも書くことを好みます。
ただし、特定の特性またはすべてを選択するドロップダウンメニューがある場合、SUMPRODUCT(SUMIFS())
が唯一の方法です。 (「すべて」を選択する場合、値は「<>」+「特定の特性の一部でない限り、どのような単語でも入力する必要があります」。
Quote_Month(Worksheet!$ D:$ D)には、別の列の日付/時刻番号をテキストベースの月の参照に変換する式(= TEXT(Worksheet!$ E:$ E、 "mmm-yy"))が含まれています。
OR
に_+
_を追加すると、Sumproduct
を使用できます。こちらをご覧ください
=SUMPRODUCT((Quote_Value)*(Salesman="JBloggs")*(Days_To_Close<=90)*((Quote_Month="Cond1")+(Quote_Month="Cond2")+(Quote_Month="Cond3")))
ScreenShot
数式を機能させるには、カーソルを数式内に置き、ctr + shift + enterを押すと機能します!
以下を使用すると、セルのアドレスを簡単にリンクできます...
=SUM(SUMIFS(FAGLL03!$I$4:$I$1048576,FAGLL03!$A$4:$A$1048576,">="&INDIRECT("A"&ROW()),FAGLL03!$A$4:$A$1048576,"<="&INDIRECT("B"&ROW()),FAGLL03!$Q$4:$Q$1048576,E$2))
完全なダイナミックでセルアドレスを使用するために必要なアドレス/置換/列関数を使用できます。