2.小計を除外した合計
 合計を求める関数にSUBTOTAL関数があります。この関数は、SUM関数と同じようにセル範囲の合計を求めますが、範囲内のSUBTOTAL関数を除外する働きがあります。各小計をSUBTOTAL関数で求め、すべてのセル範囲の合計もSUBTOTAL関数を使えば小計値(SUBTOTAL関数)を除外した合計が求められます。以下で詳しく解説していますが、SUBTOTAL関数の書き方は次のようになります。引数の「9」は値の合計として使用する、という記号です。


        =SUBTOTAL(9,合計するセル範囲)


先と同じ集計表をSUBTOTAL関数に置き換えると、各数式は以下のようになります。


セルD8  =SUBTOTAL(9,D5:D7)       セル範囲D5:D7の小計
セルD17 =SUBTOTAL(9,D10:D16)   セル範囲D10:D16の小計
セルD18 =SUBTOTAL(9,D5:D17)     すべてのセル範囲D5:D17の合計



この関数を使う方法の注意点は、SUBTOTAL関数以外は除外されないことです。各小計をSUM関数やセル参照の加算式で求めている場合は、その小計も含めた合計になってしまいます。SUBTOTAL関数を使う場合は、小計計算にもSUBTOTAL関数を使うことがポイントです。次の操作で各数式を書き替えてみましょう。


r>操作
@セルD8にセル範囲D5:D7を小計する数式を入力する
AセルD17にセル範囲D10:D16を小計する数式を入力する
BセルD18にセル範囲D5:D17を合計する数式を入力する
[A]各小計値を省いた合計が正しく求められる


 EX4B524Z  EX4B525Z


 EX4B526Z  EX4B527Z



●SUBTOTAL関数
 この関数は、引数に指定したセル範囲内の計算の重複を防いだ(SUBTOTAL関数を省いた)集計値を返します。11種類の集計方法から選択することができます。


 

書式     SUBTOTAL(集計方法,範囲1,範囲2,...)

 

        集計方法   集計に使用する等価関数

         1       AVERAGE関数

         2       COUNT関数

         3       COUNTA関数

         4       MAX関数

         5       MIN関数

         6       PRODUCT関数

         7       STDEV関数

         8       STDEVP関数

         9       SUM関数

         10      VAR関数

         11      VARP関数

 

引数の範囲1, 範囲2,・・・は29個まで指定できます。集計方法は1〜11の番号で指定します。各集計方法については該当する関数を参照してください。範囲内の非表示のセルは無視され、表示されているデータだけを集計します。

 

 

【まとめ】

SUBTOTAL          計算の重複を防いだ集計値を返す

 

 

[サンプルファイル]SUBTOTAL R00 R04

 


■商品別の集計

商品などの売上明細表に入力されたさまざまなデータの中から、ある商品だけの金額や個数などを集計するときSUMIF関数で求めることができます。数値を検索値に使うと、指定した範囲に入っているデータだけの集計を求めることができます。たとえば、販売単価が200円以下の売上総額、といった集計ができます。

 

1.商品を指定した集計

次図Aのような明細表があるとき、1つの商品だけの売上総額を求めてみましょう。セル範囲内の指定するデータだけを合計するには、SUMIF関数を使うと便利です。SUMIF関数の書き方は以下のとおりです。

 

●SUMIF関数

この関数は、指定された検索条件に一致するセルの値を合計します。

 

書式     SUMIF(範囲,検索条件,合計範囲)

 

範囲             検索するセル範囲を指定する

検索条件 検索条件を指定する

合計範囲 計算するセル範囲を指定する

 

検索条件に式および文字列を直接指定する場合は、">32""Windows"のように半角のダブルクォーテーション(")で囲む必要があります。合計範囲に含まれるセルの中で、検索条件を満たすセルに対応するものだけが計算されます。また、範囲と合計範囲が同じ場合は、合計範囲の指定を省略することができます。

 

[例]

 各引数を図Aの表に当てはめると範囲と合計範囲は次のようになり、検索条件をセルH5に入力する場合の関数は以下のようになります。範囲と合計範囲を絶対セル番地にしているのは、入力した数式(I5)をI6に複写できるようにしているためです。

 

範囲      $B$5:$F$13

合計範囲 $F$5:$F$13

 

セルI5 =SUMIF($B$5:$F$13,H5,$F$5:$F$13)

セルI6 =SUMIF($B$5:$F$13,H6,$F$5:$F$13)

 

検索されるデータ列は範囲の先頭列になります。ここでは商品コードの列を検索して金額を集計するためにB列からF列を範囲にしています。もし、商品名を検索する場合は、範囲は$C$5:$F$13になります。

 

図A

 EX4A258Z

r>操作

@セルH5に集計する商品コードを入力する

AセルI5にSUMIF関数を利用した数式を入力する

◆セルH6に商品コード、セルI6に数式を入力する

[A]集計結果

 

図B

 EX4A259Z


EX4B528



 

 ここでは、検索値をセル参照を使ってセルH5あるいはH6に入力していますが、関数に直接記述する場合は、次のように文字を表す半角のダブルクォーテーション「”」で囲む必要があります。

 

セルI5 =SUMIF($B$5:$F$13,”A−100”,$F$5:$F$13)

 

セルH5〜H6に入力する検索値は、全角/半角は区別されますが、半角の英字の大文字/小文字は区別されません。

 

 

2.単価の範囲で集計する

 検索値が数値の場合、比較演算子(<>=など)を使って範囲指定することができます。この場合の検索内容は数値ですが、セルに入力する検索値は文字になります。単価を検索するので、引数[範囲]は$E$5:$F$13になり、関数は以下のようになります。

 

セルI17 =SUMIF($E$5:$F$13,H17,$F$5:$F$13)

セルI19 =SUMIF($E$5:$F$13,H19,$F$5:$F$13)

 

次の例では、セルI17では、単価200円以上(200円を省く)の金額の合計、セルI19では単価200円以上(200円を含む)の金額の合計を求めています。なお、セルに入力する比較式(「>200」や「<=200」)は半角で入力します。全角だと正しく計算されません。

 

r>操作

@セルH17に「>200」を半角で入力する

AセルH19に「<=200」を半角で入力する

BセルI17に数式を入力する

◆セルI19に数式を入力する

[A]結果が表示される

 

 EX4B761Z

 

 EX4B762Z

 

注意する点は、検索を数値の範囲で行うセルH17とH19の入力内容です。>200や<=200は比較式になりますが、セルに入力すると文字として入力されます。文字を表す「”」を付けて入力すると「”」も入力内容になるので正しく検索されません。また、I19の比較式を=<にすると、先頭が数式を表す=になるので、これもダメです。しかし、単価を1つだけ指定するには=120のようにしなければなりません。このときは、以下のように比較式をダブルクォーテイションで囲み、先頭の「”」の前に=を書きます。

 

        =”=120”

 

なお、ここからここまで(>200 And <300、「200以上300以下」)といった指定はできません。

 

 

 

【まとめ】

SUMIF         検索条件に一致するセルの値を合計する

●検索条件をセルに入力すると文字列として扱われる

●数値を対象として検索条件は半角で入力する

●検索条件を関数内に直接記述する場合は、ダブルクォーテイションで囲む

 

 


■総合計を一度に計算する(数量*単価)

請求書やお買いあげ明細書などで、数量と単価だけを記入して個々の小計(数量×単価)を省き、合計金額だけを明記している伝票(図B)をしばしば見かけます。手書きの伝票などではその場で小計を記入せずに、後でまとめて集計する、といったスタイルの伝票があります。このような伝票の合計金額はどのようにして計算するのでしょうか。合計を求めるセルに、すべての数量*単価を計算する数式を入力するのでしょうか。以下の図の内容で考えれば次のようになります。

 

=D7*E7+D8*E8+D9*E9+・・・・・・

 

すごく長い数式になりそうですね。このようなスタイルの計算はSUMPRODUCT関数を使って簡単に計算できます。

 

 

●SUMPRODUCT関数

この関数は、引数として指定したセル範囲(あるいは配列)の対応する要素間の積を計算して、さらにその和を返します。

 

書式     SUMPRODUCT(範囲1,範囲2,範囲3,・・・)

 

        範囲1,範囲2,範囲3,・・・      計算の対象となるセル範囲(あるいは配列)を指定する

                                        範囲は2個から30個まで指定できる

 

引数[範囲]で指定するセル範囲は、それぞれ同じ方向の同じ数でないとエラー#VALUE!が返されます。範囲内の数値以外は0と見なされます。

 

使用例

図Aの伝票があります。販売数×単価の総額(合計金額)は次の数式で求められます。下図の場合、数量のセル範囲と単価のセル範囲はそれぞれ同じセル数で、同じ縦方向に並んでいるので、次のようにSUMPRODUCT関数を使うことができます。

 

=SUMPRODUCT(D7:D15,E7:E15)

              ↑      ↑

            数量のセル範囲 単価のセル範囲

 

r>操作

@セルC4数式を入力する

[A]結果が表示される







線吹き出し 3: @線吹き出し 3: [A]

 
EX4A313Z                  EX4A315Z

 

【まとめ】

●SUMPRODUCT関数  指定セル範囲の積の総和を返す

●指定セル範囲は、同じ方向の同じ数(セル数)であること

 

 

 


■まとめ買いの割引率

ある値を基準に計算方法を使い分けるとき、IF関数と比較演算子を使って数式を作成します。たとえば、あるお店で、同じ商品を5個以上買うと5%の割り引きがあります。1個〜4個までは通常の価格、5個から以上だとその商品の価格を5%引きにします。この場合の計算式を考えてみましょう。

 

 

1.計算方法

図Aのような伝票(この状態の数式は表Aです。)で考えると、項目に値引率を作って、図Bのように販売数により0%と5%の表示を切り替えるようにすればいいのです。ここでは、値引率を各セルに直接入力しています。値に%を付けて入力すれば自動的にパーセント形式で表示され、なおかつパーセント値で入力されます。セルF9の5%を例にすると、5%を入力すると表示は5%ですが、実際の入力内容は0.05に変換された値が入力されています。

 

図A                     図B

 

 EX4A316Z                  EX4A318Z

 

入力する数式

セルC4  =SUM(F7:F15)

セルF7  =D7*E7           セルF12 =D12*E12

セルF8  =D8*E8           セルF13 =D13*E13

セルF9  =D9*E9           セルF14 =D14*E14

セルF10 =D10*E10                セルF15 =D15*E15

セルF11 =D11*E11

 

値引率で入力しているので、率から割引金額を計算して、小計から引くことになりますね。計算式は次のように考えられます。

 

        =販売数×単価−(販売数×単価×値引率)

 

図BのセルG7を例にすると、実際の値引率を加えた計算式(小計−(値引額))は次のようになります。

 

        =D7*E7−(D7*E7*F7)

 

この数式をセルG7に入力して、下に続くセルG8〜G15に複写すれば、図Bになります。確認のために、図Bの数式を表Bに載せておきます。

 

表B

セルC4  =SUM(G7:G15)

セルG7  =D7*E7-(D7*E7*F7)                セルG12 =D12*E12-(D12*E12*F12)

セルG8  =D8*E8-(D8*E8*F8)                セルG13 =D13*E13-(D13*E13*F13)

セルG9  =D9*E9-(D9*E9*F9)                セルG14 =D14*E14-(D14*E14*F14)

セルG10 =D10*E10-(D10*E10*F10)   セルG15 =D15*E15-(D15*E15*F15)

セルG11 =D11*E11-(D11*E11*F11)

 

 

2◆IF関数で処理方法を使い分ける

 このままでも正しく計算できますが、その都度、値引率も入力しなければなりません。しかも、5個以上なのかを見て、5%と0%を入力することになり、入力ミスも起こしやすいことでしょう。このようにどちらかの値を選択して入力するような場合、IF関数を使って自動的に選択させることができます。IF関数を使う目的は、2つの処理を条件で使い分けるところにあります。ここでの目的は、0%と5%のどちらを使う(セルに入力する)のかです。IF関数の書き方は次のようになります。

 

●IF関数

 指定された条件式の結果を真/偽(TRUE/FALSE)の二通りの結果で調べ、真のとき「条件に一致したときの処理」を処理し、偽のとき「そうでないときの処理」を処理します。IF関数は値または数式が条件を満たしているかどうかをテストします。真/偽とは、条件の成立/不成立を調べ、成立したとき真、成立しなかったとき偽になることです。

 

        IF(論理式,真の場合,偽の場合)

 

論理式           テストする条件や数式を指定する

真の場合 論理式が成立した(真,TRUE)ときの処理を記述する

偽の場合 論理式が成立しなかった(偽,FALSE)ときの処理を記述する

 

 最大7つまでIF関数をネスト(関数の中に関数を組み込むこと)することができます。例「IF(論理式,IF(論理式,真の場合,偽の場合),IF(論理式,真の場合,偽の場合))

 記述内容を別の表現で表すと以下のようになります。

 

        =IF(条件式,条件に一致したときの処理,そうでないときの処理)

                 ↑           ↑

                 @           A

 

真と偽のときに実行する処理をそれぞれカンマ(,)で区切った@Aの位置に入力します。この数式にここで行う処理内容を当てはめると次のようになります。@の部分に入力する5%を5と入力すると500%になるので注意しましょう。0%は0でも0%でも0に違いないので0だけ入力してもかまいません。

 

        =IF(条件式,5%,0%)

 

条件は販売数が5以上かそうでないか、ですね。この条件を作るためには、比較演算子を使います。Part1(P___)で解説しているように、いくつかの比較演算子がありますが、使用する比較演算子により、指定する値が以下のように違ってきます。例としてセルF7に使う条件で示すます。

 

        販売数    比較値

        D7  >   4 D7が4以上

        D7  >=  5 D7が5あるいは5以上

        比較値    販売数

        4   <   D7       販売数と比較値の位置が入れ替わった

        5   <=  D7  

 

上の4つの条件式のどれを使っても同じ結果がえられます。ここではD7>4を使うことにして、数式を完成させると次のようになります。

 

セルF7 =IF(D7>4,5%,0)

 

この数式をセルF7に入力して、下へ続くセルF8〜F15に複写して集計表を完成させます。図Cでは0%を0で入力しています。なお、セルF7〜F15の表示形式がすでにパーセント形式になっているときは、5%を0.05にしても構いません。確認のために、複写後の各セルの数式を載せておきます。

 

r>操作

@セルF7に数式を入力する

[A]結果が表示される

[B]セルF7をセルF8〜F15に複写する

[C]小計を求める数式に値引率をまだ組み込んでいないので小計値は変わりません。

 

図C

   

EX4A317Z                         EX4B529Z

 

 EX4B530Z

 

入力している数式

セルF7  =IF(D8>4,5%,0)      セルF12  =IF(D12>4,5%,0)

セルF8  =IF(D9>4,5%,0)      セルF13  =IF(D13>4,5%,0)

セルF9  =IF(D10>4,5%,0)    セルF14  =IF(D14>4,5%,0)

セルF10 =IF(D11>4,5%,0)    セルF15  =IF(D15>4,5%,0)

セルF11 =IF(D12>4,5%,0)

 

●条件式

 ある値を比較して一致する、一致しない、あるいは成立する、成立しない、を調べる数式を条件式といいます。また、比較するところから比較式ともいう。

 

 

2.値引額で表示する

 先の方法は値引率を表示しましたが、値引金額で求めたいときは、IF関数の中にその計算式を組み込んで求めます。先の方法では、IF関数の中にセルに表示する(入力する)内容を記述しましたが、数式を入力しても構わない、ということです。ここでは使いませんが、数式(あるいは関数を含む)でもいいということです。覚えておきましょう。値引額は小計を表示しているセルに入力している数式の「D7*E7*F7」の部分です。

 

        =D7*E7−(D7*E7*F7)

               ↑

              値引額を求める数式

 

 この数式をIF関数に組み込めば、計算結果が表示されるようになります。ここでも、0は計算の必要がないので、0のままにしてあります。また、この数式の両端の()は計算の優先順位を示すだけなので、省いています。もちろん付けたままでもかまいません。また、数式の中にパーセント形式の値を使うことができるので、Aの書き方でもかまいません。

 

セルF7 =IF(D7>4,D7*E7*0.05,0)   数式[1]

     =IF(D7>4,D7*E7*5%,0)     数式[2]

 

 この数式をセルF7に入力してみましょう。これまで、パーセントで表示していたため、セルの表示形式がパーセントのままになっていて、結果は%で表示されます。セルF7の表示形式を通貨に設定しなおします。(セルF7にセルポインタを合わせ、ツールバーの[通貨]ボタンをクリックする)。値引率を値引額に変更したことで、小計の数式を変更しなければなりません。次の数式に変更します。

 

セルG7 =D7*E7−F7

 

 

r>操作

@セルF7の数式を書き替える(ここでは数式[2]を入力)

◆セルF7を表示形式を通貨に設定する

AセルG7の数式を「=D7*E7−F7」に書き替える

 

数式を書き替えたセルF7とG7を下へ続くセルF8〜F15とG8〜G15に複写します。確認のために、複写後の各セルの数式を表Dに載せておきます。図Aは項目名「値引率」を「値引額」に書き替えています。

 

 

 EX4A319Z


EX4A320Z


図D

 EX4A321Z


入力する数式

F7  =IF(D7>4,D7*E7*5%,0)

F8  =IF(D8>4,D8*E8*5%,0)

F9  =IF(D9>4,D9*E9*5%,0)

F10 =IF(D10>4,D10*E10*5%,0)

F11 =IF(D11>4,D11*E11*5%,0)

F12 =IF(D12>4,D12*E12*5%,0)

F13 =IF(D13>4,D13*E13*5%,0)

F14 =IF(D14>4,D14*E14*5%,0)

F15 =IF(D15>4,D15*E15*5%,0)

 

G7  =D7*E7-F7           G12 =D12*E12-F12

G8  =D8*E8-F8           G13 =D13*E13-F13

G9  =D9*E9-F9           G14 =D14*E14-F14

G10 =D10*E10-F10        G15 =D15*E15-F15

G11 =D11*E11-F11

 

【まとめ】

IF関数         2つの処理を使い分けるときに使う

比較演算子(<>=)       2つの値の大小(<,>)あるいは等価(=)を比較するときに使う

 

 


■記号の集計(晴雨表)

記号などの集計方法を晴雨表を利用して解説しましょう。全角文字に含まれている●や■などを記号と呼んでいますが、全角のひらがなや漢字と同じ文字として扱われます。このことから、ワークシート上に記号を入力するということは、文字を入力することになります。つまり文字データを集計することになります。文字データの集計操作は、同じ文字がいくつあるのか、といった集計になります。このような集計は、COUNTIF関数使って行うことができます。

 

1.晴雨表

図Aの晴雨表があります。この表では、晴れの日数、雨の日数、などをCOUNTIF関数で求めています。COUNTIF関数の詳細は以下の通りです。

 

図A

 EX4A779Z


●COUNTIF関数

指定された範囲に含まれるセルのうち、検索条件に一致するセルの個数を返す。

 

書式     COUNTIF(範囲, 検索条件)

 

範囲       セルの個数を求めるセル範囲を指定する。

検索条件    検索の条件を指定する

 

検索条件は、数値、式、または文字列で指定します。関数内に直接引数を入力する場合は、式および文字列を指定は、">32""Windows" のように半角のダブルクォーテーション(")で囲みます。

 

      =COUNTIF(A1:D10,”>32”)

 

2.記号の個数

ある記号を検索条件に指定する場合、COUNTIF関数内に直接入力する場合は上記のようにダブルクォーテイションで囲んで入力します。

 

        =COUNTIF(検索範囲,”●”)

 

他のセルに記号を入力してセル参照で指定するときは、入力する記号をダブルクォーテイションで囲む必要はありません。次の数式を入力して晴れの日数を数えてみましょう。数式は以下のようになります。検索範囲を絶対競る番地で指定している理由は、複写操作で下のセルに続く雨やくもりの数式を入力するためです。

 

        =COUNTIF($B$6:$H$13,K5)

 

r>操作

@数式を入力する

[A]結果が求められる

 

検索範囲に指定したセル範囲内に「○」が12個見つかったということになります。

 

 

 EX4A780Z


 EX4A781Z


次に、セルL5に入力した数式を下へ続くセルL6〜L9に複写して各日数の表示を完成させましょう。

 

r>操作

◆セルL5をドラッグアンドドロップ編集でセルL6〜L9に複写する

[A]結果が求められる

 

 EX4A782Z


ここで、不都合な点が1つ表れました。それは、未記録の数です。検索範囲内には20日と21日が空白になっています。この数はセルL9で空白の数として求めるていますが、正しく数えられていません。この現象は、空白を検索条件にする場合に表れます。空白セルを正しく検索するためには、空白を検索する、ということを明示する必要があります。ただセルを空白にするだけでは、検索条件にならないということです。空白を明示する方法は、ダブルクォーテイションを2つ並べればいいので、条件(記号)を入力するセルK9に=””を入力します。


r>操作

@セルK9に数式「=””」を入力する

[A]空白の数が求められる

 

 EX4A783Z


 EX4A784Z


空白とスペースは、どちらも何も表示されないので見た目には同じですが、別のものとして取り扱われます。次の例は、セルH11にスペースを入力した結果です。未記録の数が1になっています。

 

r>操作

@セルH11にスペースを入力する

[A]空白の数が1つ減って未記録(セルL9)が1になる

 

 EX4A785Z


【まとめ】

●全角の●や■▲などの記号文字は、漢字と同じ文字として扱う

●文字を関数内に引数として記述するときはダブルクォーテイションで囲む

●半角文字の記号もある(キーボード上に並ぶ記号など)。

 

 

 

 

 


 

 

作成手順

 さて、どこから書き始めればいいのでしょう。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Part2

Part2

関数の活用

2-1 集計表

 あるセル範囲に入力された値の合計を求めるためにSUM関数を使いますが、合計を求めるための関数はSUM関数だけではなくいくつかの関数があります。ここでは数種類の集計表を例に、さまざまな合計を求める関数の使い方を解説します。

科目別の小計

 集計を求めるとき、共通する科目ごとの小計を求めて、さらにすべての科目を合計することがあります。このとき、集計表の途中に入れた小計値の扱い方に考慮しなければなりません。

角丸四角形:    
 関数は数式として使用するので、関数=数式ということができます。しかし、関数を使用しない数式もあり、一概に関数=数式ということは適切ではありません。本書では、関数と数式を識別するために、関数そのものは関数といい、関数をセルに入力するために先頭に=を付けた時点で数式と呼ぶことにします。
      
小計にSUM関数を使う
 図Aのような集計を行うとき、小計を求めるセルにSUM関数を入力して、合計欄にセル参照を使った加算式を使うことでしょう。たとえば、図Aの集計表なら、セルD8とセルD17にSUM関数を使った数式を入力して、セルD18の合計欄には、各小計値を加算する数式を入力するのではないでしょうか。各数式は以下のようになります。


セルD8      =SUM(D5:D7)            セル範囲D5:D7の小計
セルD17       =SUM(D10:D16)   セル範囲D10:D16の小計
セルD18       =D8+D9+D17               セルD8,D9,D17の合計


図A

EX4B519Z


次の操作で各セルの数式を入力します。入力する数式はセルD8のSUM関数を使った小計式、セルD17のSUM関数を使った小計式、セルD18のセル単位の加算式です。


r>操作
@セルD8にセル範囲D5:D7を合計する数式を入力する
AセルD17にセル範囲D10:D16を合計する数式を入力する
BセルD18にセルD8,D9,D17を加算する数式を入力する


このような連続しないセルの集計はセル参照の加算式(図EX4B522ZセルD18)で求めますが、小計欄が多くなればなるほど合計を求める加算式が長くなってしまいます。


 EX4B520Z   EX4B521Z


 EX4B522Z


単純な解決策として図Cのように、すべての科目に対して小計値が計算されている場合、合計(セルD19)は、小計値を含めた合計を2で割れば「SUM(D5:D18)/2」求められます。しかし、ここでの例(図A)では科目[旅費交通費]の小計がないので、2で割る方法は使えません。このように小計を追加しなくても小計欄を含めても正しく合計できる関数を次に紹介します。


 図C

  EX4B523Z