9/30/2016

Excel。SUBTOTAL。小計を含まずに、大量のデータから、最大値を見つける方法


Excel。小計を含まずに、大量のデータから、最大値を見つける方法

<SUBTOTAL関数>


Excelにおいて、それほど大きくない表ならば、途中にある小計を除いて範囲選択して、
MAX関数を使うか、あるいは、MIN関数を使えば、
最大値や最小値を求めることができますが、データ量が多い表の場合、
その途中途中にある、小計を外して、範囲選択をして算出するのは、
結構面倒な作業となりますよね。

小計を含めて、範囲選択をしても、算出してくれるのが、一番楽なのですが、
残念ながらMAX関数では、当然小計の値を持ってきてしまいます。

そこで、どうしたら効率よく算出することが出来るのか?
というのが、今回のテーマなのです。

まずは、下記の表をご覧ください。

このような表があります。それぞれの地域で小計があります。
B9の数式は、

=SUM(B2:B8)

というように、それぞれの小計はSUM関数を使って算出してあります。

そこで、確認のため、E3にMAX関数で、B2:B25までを範囲選択して算出してみましょう。

当然、小計も含めてしまいますので、このような結果が算出されますね。

なので、この小計を除きたいとした場合、
MAX関数を使用した場合には、範囲選択で小計を除かないといけないわけです。

しかしながら、データが大量の場合は大変な作業となってしまいます。

そこで、小計をSUM関数ではなくて、

【SUBTOTAL関数】

を使って算出すると、この問題を解決してくれるのです。

では、先程の表にC列を加えてみました。

C列の小計もB列と同じになっていますね。
C9の数式は、

=SUBTOTAL(109,C2:C8)

なお、このSUBTOTAL関数は手入力で作成するのがオススメの関数ですね。

ダイアログボックスでもいいのですが、集計方法の番号がわかりません。

手入力だとこのようになります。

=subtotal と入力した後に、集計方法の番号一覧が登場しますので、
この一覧から選ぶほうが楽ですね。

ちなみにSUMはSUMでも、9番ではなくて109番のSUMを選択しております。
これは、非表示にしても、可視情報のみで算出してくれますので、実務向きですね。

そして、先程は、MAX関数を使いましたが、こちらもSUBTOTAL関数を使って算出します。

MAX関数では変わりません。
E6にSUBTOTAL関数を使って算出させていきましょう。
E6の数式は、

=SUBTOTAL(104,C2:C25)


範囲選択は、C2:C25と小計を含んでいますよね。

つまり、SUM関数の代わりにSUBTOTAL関数で小計を算出させて、
MAX関数の代わりに、SUBTOTAL関数を使うことによって、
作業効率がアップすることが出来ますので、大きなデータで、
小計を含むようなデータの場合は、SUBTOTAL関数を知っているといいかもしれませんね。

9/27/2016

Excel。Graph。グラフの横軸。最大値・最小値で自動的に文字の色を変える方法


Excel。グラフの横軸。最大値・最小値で自動的に文字の色を変える方法

<条件付き書式モドキ横軸>


先日、マーカー付き折れ線グラフのマーカーを
自動的に最大値・最小値の色が変わるようにする方法をご紹介しましたが、
今回はそのアレンジというか、「条件付き書式モドキ」というか、

横軸の文字を、最大値・最小値で色を変える。


さらに自動的に色が変わるというものを紹介しています。


横軸にも、
「条件付き書式」は設定できません。

そこで、色々とアイディアを投入して作成していきます。

まず、下記の表があります。

そして、作成するグラフです。

最高値の上野の横軸が緑。
そして、最低値の渋谷が赤となっていますね。
自分自身で色を付けているわけではありませんよ。

通常の集合縦棒グラフを作ったところで、出来ません。

そこで、次のように、グラフ用の表に変えていきます。

C列:E列を作成していきます。

前回ご紹介したように、ワザとエラーを発生させるようにしております。

C3の数式は、

=IF(B3=MAX($B$3:$B$9),0,NA())

これは、B3がB3:B9の中で最大値だったら、0(ゼロ)。そうでなければ#N/A
という数式です。

ナゼ。0(ゼロ)なのかは、後ほど説明いたします。

続いて、
D3の数式は、

=IF(B3=MIN($B$3:$B$9),0,NA())

こちらは、最小値だったら0(ゼロ)としております。

E3の数式は、

=IF(OR(B3=MAX($B$3:$B$9),B3=MIN($B$3:$B$9)),NA(),0)

これは、最大値でも、最小値でもないものは、0(ゼロ)としております。

あとは、数式をオートフィルで数式をコピーしましょう。


これで、準備完了です。
では、A2:E9を範囲選択して、集合縦棒グラフを挿入していきましょう。

集合縦棒グラフが挿入されましたら、凡例と、
そして、ポイントですが「横軸」も削除しましょう。

さらに、ポイントが続きますが、系列”最大値”と系列”最小値”と系列”それ以外”をそれぞれ、

【折れ線グラフ】

に変更します。

見た目。縦棒が太くなったように見えますね。

では、続いて、グラフ要素から、
系列”最大値”を選択して、データラベルのその他のデータラベルオプションをクリックして、
データラベルの書式設定ダイアログボックスを表示しましょう。

ラベルの内容を、「分類名」。
ラベルの位置を、「下」。
に変更しましょう。

変更したら、閉じるボタンをクリックしましょう。

最高値の上野のラベルが表示されました。

同じ方法で、「最小値」と「それ以外」もラベルを表示していきます。

実は、横軸をデータラベルで代用させているのです。

なので、プロットエリアを選択して、横軸分上に狭くしましょう。

あと、一息です。

折れ線グラフにした線がうっすらと、見えていますので、
「最大値」・「最小値」・「それ以外」の塗りつぶしを”なし”。
枠線を”なし”。に変更しましょう。

そして、いよいよ、上野と渋谷のデータラベルに色を設定しましょう。

ついでに、太字の設定もしてみましょう。最初は、自分自身で色をつけなければいけません。

これで完成しました。

では、渋谷の数値を800にしてみましょう。

ちゃんと、変わりましたよね。

このように折れ線グラフのデータラベルを使うようにすれば、
このような、条件付き書式モドキ横軸なんてことも出来ちゃうのです。

9/26/2016

今週のFacebookページの投稿 2016/9/19-2016/9/25

今週のFacebookページの投稿 2016/9/19-2016/9/25

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

9月19日
Excel。countif関数は単一条件に合うデータ件数関数です。

9月20日
Excel。countifs関数は複数条件に合うデータ件数関数です。

9月21日
Excel。countblank関数は空白のセル個数件数関数です。

9月22日
Excel。average関数は平均値を求める関数です。

9月23日
Excel。averagea関数は文字列を0として平均値を求める関数です。

9月24日
Excel。averageif関数は単一条件に合うデータの平均値関数です。

9月25日
Excel。averageifs関数は複数条件に合うデータの平均値関数です。

Excelテクニック and  MS-Office recommended by PC training

https://www.facebook.com/exceltechniqueandmsoffice/

9/24/2016

Excel。BOOK。別ブックのデータをSUMIF関数で算出。しかし、別のブックを閉じちゃうと!


Excel。別ブックのデータをSUMIF関数で算出。しかし、別のブックを閉じちゃうと!

<SUMIF関数とSUMPRODUCT関数>


何気なく、出来ることでも、急に出来なくなるということも、Excelでは結構あるようでして、
今回ご紹介するのは、ブック間での集計に関してなんですね。

別のブックにあるデータを、SUMIF関数を使って、算出することは出来るのですが、
元の別のブックを閉じてしまうと…ということで、実際に確認してみましょう。

別ブックには、このようなデータがあります。

また、このブック名は、「元データ.xlsx」です。

そして、集計する別のブックには、

B3に、SUMIF関数を使って、ブック間の集計をしてみましょう。

B3をクリックして、SUMIF関数ダイアログボックスを表示しましょう。

範囲には、[元データ.xlsx]SUMIF!$B$3:$B$21

この[元データ.xlsx]は、ブック名を表しています。
なお、範囲選択をすると自動的に、絶対参照で設定されます。
ここが、ブック間での違いの一つでもあります。

検索条件は、A3。支店名を東京ということですね。

合計範囲には、[元データ.xlsx]SUMIF!$F$3:$F$21

あとは、OKボタンをクリックしましょう。

問題なく算出することが出来ました。

ちなみに、B3の数式は、

=SUMIF([元データ.xlsx]SUMIF!$B$3:$B$21,A3,[元データ.xlsx]SUMIF!$F$3:$F$21)

さて、ここからが、問題なのです。


実務では、元データをいちいち開いておく必要はないわけですね。

つまり、この集計してあるブックのみを開いてみると、どうなるのでしょうか?

Excelをすべて閉じて、このSUMIF関数のブックのみを開いてみましょう。

なんと、エラーになってしまいました!

このSUMIF関数を使ったブック間の算出。
実は、元のデータがあるブックを先に開いておく必要があるのです。
でないと、エラーになってしまうのです。

これをどうにかなりませんか?というご質問があるのです。

確かに、実務では、困りますよね。いちいち、元データを開くのは面倒。

そこで、登場するのが、SUMPRODUCT関数なのです。


とりあえず、作成してみましょう。元データ.xlsxも開いておきます。

B7をクリックして、SUMPRODUCT関数ダイアログボックスを表示しましょう。

配列1には、[元データ.xlsx]SUMIF!$B$3:$B$21
配列2には、[元データ.xlsx]SUMIF!$F$3:$F$21
数式を修正しないといけませんので、まずは、ここでOKボタンをクリックしましょう。

数式は、
=SUMPRODUCT([元データ.xlsx]SUMIF!$B$3:$B$21,[元データ.xlsx]SUMIF!$F$3:$F$21)



=SUMPRODUCT(([元データ.xlsx]SUMIF!$B$3:$B$21=A7)*[元データ.xlsx]SUMIF!$F$3:$F$21)
というように修正します。

配列1をカッコで囲み、$B$21のあとに=A7をいれて、カンマ(,)とアスタリスク(*)を置換します。

すると、このように算出されました。

先程のSUMIF関数と同じ数値になっています。
では、Excelをすべて閉じて、この算出用のブックのみを改めて開いて確認してみましょう。

ブックを開くと、次のようなメッセージが表示されますが、"更新する"をクリックします。

ちゃんと、SUMPRODUCT関数は算出してくれていることが確認できました。

このように、ケースバイケースですが、SUMIF関数よりも、
SUMPRODUCT関数を使った方が効率がいいということもありますので、
知っておくと、いざという時、いいかもしれませんね

9/21/2016

Excel。COUNT。COUNTA関数が空白も数える?この時はCOUNTIF関数が登場します。


Excel。COUNTA関数が空白も数える?この時はCOUNTIF関数が登場します。

<COUNT関数&COUNTA関数&COUNTIF関数>


オートSUMボタンにある、COUNT関数。
この関数は、数値を数えることが出来る関数なのですが、
では、文字を数える場合には、どうしたらいいでしょうか?
なんてことを、初心者さん向けの講座の時に、よくお話したりします。

では、次の表でまずは、確認してみましょう。

G3に、A3:A7を範囲選択して、COUNT関数で算出してみましょう。

同じように、G4に、A3:A7を範囲選択して、今度はCOUNTA関数で算出してみましょう。

G3の数式は、=COUNT(A3:A7)
G4の数式は、=COUNTA(A3:A7)

このように、COUNT関数は文字を数えることができません。

次に、B3:B7の範囲を使って、
それぞれ、COUNT関数とCOUNTA関数で算出してみましょう。

H3の数式は、=COUNT(B3:B7)
H4の数式は、=COUNTA(B3:B7)
今回の範囲は、数値なので、COUNT関数でも算出できました。

このような違いがあるわけですが、ここからが、
今回のポイントになるのですが、D列に、筆記と実技のどちらか、一つが70点以上なら○。
そうでなければ、×という判断の数式を作成してみましょう。

なお、念のために、D3:D7を使って、
COUNT関数とCOUNTA関数でどのように算出されるのか確認しておきましょう。

I3の数式は、=COUNT(D3:D7)
I4の数式は、=COUNTA(D3:D7)
という数式が設定されています。当然のことながら、空白なので、0(ゼロ)ですよね。

COUNTA関数は、文字を数えるというよりも、
空白以外のセルを数えると、よくテキストに書かれています。

実は、この書き方では、問題があるのです。それを確認していきましょう。

では、D3に先ほどの条件で数式を作成してきましょう。
D3にIF関数ダイアログボックスを表示しましょう。

今回は、どちらか、一方がOKなら、○ということなので、IF+OR関数で作成してきます。

このような場合、ダイアログボックスで作成する場合は、
先に、真の場合と、偽の場合を埋めてしまってから、論理式を作る方がいいでしょう。

これは、OR関数を作成後にIF関数に戻ってくる手間暇を避けるためですね。

なので、
真の場合には、”○”
偽の場合には、””
を入力して、論理式にOR関数を作っていきましょう。

論理式1には、B3>=70
論理式2には、C3>=70
あとは、OKボタンをクリックしましょう。

D3の数式は、

=IF(OR(B3>=70,C3>=70),"○","")

あとは、オートフィルで数式をコピーしましょう。

D列に○が表示されてきましたね。
が、しかし、この表をよく見てみましょう。先程作成したI列。

I3は、COUNT関数なので、0(ゼロ)なのは、OKなのですが、I4。
COUNTA関数が設定されているので、文字を数えるはずなのに、
5という数値が算出されていますよね。○の数は、3なのに、5。

COUNTA関数は、空白を除く文字を数えるのではなくて、
計算式の結果で算出された空白を含めた、文字を数えるのです。

要するに、数式も文字も何も入力されていない【空白】を除くセルを数える関数なのです。

なので、このような場合には、COUNTIF関数を使わなければいけないわけです。

I5にCOUNTIF関数ダイアログボックスを表示しましょう。

範囲には、D3:D7
検索条件には、”○”
と入力しましょう。あとはOKボタンをクリックしましょう。

I5の結果は、3になりましたね。

このように、状況によっては、COUNTA関数ではダメなことがありますので、
COUNTIF関数を使う方がいい場合がありますので、ご注意のほど。

9/20/2016

今週のFacebookページの投稿 2016/9/12-2016/9/18

今週のFacebookページの投稿 2016/9/12-2016/9/18

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

9月12日
Excel2013。新しく追加された関数は50個を数えますね。

9月13日
Excel。sum関数は合計値を求める関数です。ちなみにアイディアで累計も出せます。

9月14日
Excel。sumif関数は単一条件での合計値関数です。

9月15日
Excel。sumifs関数は複数条件での合計値関数です。

9月16日
Excel。subtotal関数は抽出データの集計関数です。

9月17日
Excel。count関数は数値件数関数です。

9月18日
Excel。counta関数は空白以外のセル個数件数関数です。

Excelテクニック and  MS-Office recommended by PC training

https://www.facebook.com/exceltechniqueandmsoffice/

9/18/2016

Excel。Graph。折れ線グラフのマーカー。最高値最低値が変わったら自動的に色が変わるグラフ


Excel。折れ線グラフのマーカー。最高値最低値が変わったら自動的に色が変わるグラフ

<折れ線グラフ>


Excelのグラフ。いろいろな表現が出来るようになれば、もっと現場レベルにおいて、
いい資料が作れるようになるのではと思い、今回は、折れ線グラフのマーカー。

最高値と最低値だったら、マーカーの色を変えるマーカー付き折れ線グラフを紹介します。

当然汎用性ということも考慮して、データが変わって最高値が変われば、
新たな最高値のマーカーの色が変わるというグラフです。

このようなマーカー付き折れ線グラフを作っていきます。

では、次の表があります。これを使って作成していきましょう。

当然のことですが、この表からマーカー付き折れ線グラフを作っても、
自力で最高値と最低値を見つけて、色を変えて…というわけではありません。

この表だけでは、表現できませんので、次のように表をアレンジしていきましょう。

C列とD列を作成していくわけですが、
#N/Aというエラーが表示されていますが、これは、後ほど。

C列には、最高値を求める数式が、D列には、最低値を求める数式がそれぞれ、
設定されています。まずは、C2の数式をご紹介してきます。

C2には、次の数式が設定さています。

=IF(B2=MAX($B$2:$B$13),B2,NA())

これは、B2がB2:B13の中で最高値かを判断させて、
最高値ならば、B2の値を、そうでなければ、NA()を。

このNA()というのは、#N/Aというエラーを表示させる関数です。
なぜ、””の空白や、0(ゼロ)ではないのかは、これまた後ほどご紹介するとします。

また、D2には、

=IF(B2=MIN($B$2:$B$13),B2,NA())

というMIN関数を使って、最低金額を算出出来るようにしてあります。

A1:D13を範囲選択して、マーカー付き折れ線グラフを挿入しましょう。

挿入タブの折れ線からマーカー付き折れ線グラフを選択すると、グラフが作成されます。

まぁ、実質はこれで完成なのですが、見栄えが良くないので、修正していきます。

まず、凡例は、売上高を残して削除します。

最高金額の赤いマーカーを次のようにアレンジしていきます。

最高金額の赤いマーカーをクリックして、
データ系列の書式設定ダイアログボックスを表示させましょう。

マーカーのオプションにして、マーカーのオプションを「組み込み」に変更して、
サイズを大きくしております。今回は10ptです。

さらに、マーカーの塗りつぶしから、塗りつぶし(単色)で今回は色を変更しております。

すると、グラフはこのように変わっております。

続いて、データラベルを追加します。

データラベルの「その他のデータラベルオプション」をクリックして、
データラベルの書式設定ダイアログボックスを表示させましょう。

ラベルオプション。
ラベルの内容は、系列名と値にチェックマークをつけます。
ラベルの位置は、上。
区切り文字は、(改行)
を選択して、閉じるボタンをクリックしましょう。

最高金額が変わりましたので、最低金額も同じように修正します。

最低金額は、マーカーの形と、ラベルの位置を下にしてあります。

では、12月の売上高を500に下方修正してみましょう。

変わりましたね。なお、わかりやすいように、少しグラフを横長にしております。

このようにすると、最高値・最低値を自動的に色分けすることが出来るようになります。

さて、なぜ、#N/Aというエラーを出したのでしょうか?
C2の数式を

=IF(B2=MAX($B$2:$B$13),B2,NA())


=IF(B2=MAX($B$2:$B$13),B2,””)

と、最大値でなければ、空白とするように数式を修正してみましょう。

このように、ゼロでプロットしてしますのです。
ただ、数式を削除してしまえば、プロットはされません。
しかしそれでは、値が変わったときに連動してくれません。

つまり、空白は空白でも、数式の空白は、ただの空白ではないのです。

しかしながら、エラーだと、プロットされることなないので、ワザとエラーを発生させています。