スポンサーリンク

集計例でいろんな関数を見つけよう

関数の応用

例題を使って、色々な関数で遊ぼうのコーナー!

今回は1年間のエサ代集計を題材に表を作っていきます。

 

各種データについて

まず、今回のお題の各シートについて。

 

各月のシート

1~12のシートがあり、各シートにその月の氏名とエサ代が入力されています。

毎月、全員の名前があるとは限らず、今回は3月と4月でアシカ吾郎とアザラシ聖子を不在としてます。

 

集計シート

各月のシートからエサ代を読み込み、色々な集計をして遊ぶためのシートです。

全員分の氏名と、項目名だけを用意したところからスタートします。

 

集計開始

途中、失敗例を挟みながら作業を進めていきましょう。

 

エサ代を読み込む

まず、各月のエサ代を読み込みましょう。

今回はVLOOKUP関数を使って読み込みます。

VLOOKUP関数についての解説はコチラをご覧ください。

VLOOKUP関数 - 表から値を探し出し、その右側にある内容を表示させる
表から値を探し出し、その右側にある内容を表示 エクセルには、表から検索したい文字・値を探し出し、その右側にある内容を表示させることができる、VLOOKUP関数というものがあります。 どういう事かは文で説明するより、図を見ていただいたほうが早...

 

式:=VLOOKUP(A5,'1'!A:B,2,FALSE)

これで、セイウチ太郎の1月のエサ代、10万円が読み込めました。

ではこの式を、オートフィルを使ってセイウチ太郎の1月~アザラシ聖子の12月まで反映させましょう。

オートフィルとは、元になる式を用意したら、あとはドラッグするだけで式を広範囲に展開できたりする便利機能です。

オートフィルとは何? 自動で連続したデータを入力してくれる便利機能です!
オートフィルとは何か。 というより、普段使ってるあの、セルの右下をダブルクリックしたり、ドラッグしたりすると、自動で番号とか日付とか、連続したデータを入力してくれるあの機能って、なんていう名前なの? と、思われる人の方が多い気がします。 そ...

 

一気に最後までオートフィルできないので、まずは縦にB5~B8セルまでオートフィルで展開し、B5:B8が範囲選択されたまま、更にM列までオートフィルで展開しましょう。すると・・・

上手くいきませんね、原因を探るためにC5セル(セイウチ太郎の2月)がどうなっているか調べてみましょう。

セイウチ太郎2月の式:=VLOOKUP(B5,'1'!B:C,2,FALSE)

下記の3つの問題が見つかりました。

  1. 検索値が氏名(A列)ではなくB列にズレてしまった
  2. 2月分のエサ代を表示したいのに探しにいくシートが1月のまま
  3. 検索先の範囲もA:BがB:Cにズレてしまった

これを1ずつ解決していきましょう。

 

読み込み時の問題を解決していく

3つの問題を1つずつ潰していきましょう。

 

検索値がA列からB列にズレてしまう対策

これは、検索値を絶対参照で固定することで解決できます。

絶対参照と相対参照($マークがある場合、ない場合の事)
絶対参照と相対参照を、できるだけわかりやすく解説 数式内でセルを参照するやり方には、絶対参照と相対参照があります。 今回は、これらの違いがいま一つよくわからないという方のために、例を混ぜずつ解説していきます。 絶対参照、相対参照とは そもそ...

 

検索値(氏名)は、縦方向(1,2,3,4行目)には変わってほしいですが、横方向(A、B、C、D列)には変わってほしくありません。

ですので、A5のAの前にドルマークを着けて、Aを固定します。

直接ドルマークを入力しても良いですが、式内のA5部分を選んでる時にF4キーを押すと、$A$5→A$5→$A5の順に切り替えられます。

式:=VLOOKUP($A5,'1'!A:B,2,FALSE)

 

探しにいくシートが1月のまま

次に、エサ代を探しにいくシートが1月シートから変わらない問題を解決します。

今回は項目にある月とシート名が同じになるようにしているので、’1’!の部分を、セル参照するようにします。

式:=VLOOKUP(A5,'B4'!A:B,2,FALSE)

一見、シート名にB4セルの1を使おうとしているように見えますが、これではダメです。

理由はここでは省きますが、INDIRECT関数を組み合わせる必要があります。

式:=VLOOKUP($A5,INDIRECT("'" & B$4 & "'!A:B"),2,FALSE)

このように、INDIRECT関数の中で、'B$4'!A:Bという文字を組み立てるようにします。

見にくいですが、この時シングルクオーテーションを付け漏れないように注意しましょう。

INDIRECT関数についてや、VLOOKUP関数との組み合わせについては、コチラの記事をぜひご覧ください。

VLOOKUPの検索範囲を間接的に指定する(セル参照させる)
VLOOKUPを使う際、検索範囲は基本、直接指定するしかありません。 例:=VLOOKUP(F6,A:B,2,FALSE) 検索範囲というのはこれでいう、A:Bにあたる部分になります。 ですが、式に直接検索範囲を書き込むと、違う範囲を検索し...
VLOOKUPで複数の別シートを参照する時、式の作成楽をする方法
VLOOKUP関数で、他のシートを参照したい時ってありますよね。 1つ2つなら、まぁ手入力でいいかなってなりますが、これが10シート、20シートとなると、手入力なんてやってられません。 この作業、楽にしちゃいましょう。 その前にもし、VLO...
INDIRECT関数 - 指定したセルを参照する関数
INDIRECT関数とは INDIRECT関数とは、指定したセルの内容を返す関数です。 エクセル上での説明もほぼ同じ書き方をされていて、下記のようになってます。 指定される文字列への参照を返します。 だって他に言い方が無いんだもの。 IND...

 

検索先の範囲がA:BからB:Cにズレてしまう

最後に、検索先の範囲がズレてしまう件ですが、何もしなくていいです。

というか、先のINDIRECT関数を使った時に解決できています。

検索値にINDIRECT関数を使ったことで、=VLOOKUP($A5,INDIRECT("'" & B$4 & "'!A:B"),2,FALSE)という式になったわけですが、INDIRECT関数内でダブルクオーテーションで囲まれた部分については、オートフィルをしても変わらないのです。

なので、おしまい。

 

直した式でもう一度挑戦

ここまでで、VLOOKUP関数の式を直してきましたので、もう一度オートフィルをしてみましょう。

だいぶ良い感じになりましたが、あと一歩ですね。

今回の例題では、3月と4月のシートでは、アシカ吾郎とアザラシ聖子が不在になっています。

そこで、VLOOKUP関数の結果が#N/A(対象が見つかりませんでした)になってしまいましたね。

 

VLOOKUP関数の#N/A対策

それでは最後にもう一押し、VLOOKUP関数に手を入れていきましょう。

先ほど作ったVLOOKUP関数の式を、IFERROR関数で囲みます。

式:=IFERROR(VLOOKUP($A5,INDIRECT("'"&B$4&"'!A:B"),2,FALSE),"")

これで、VLOOKUP関数でエラーになった場合は""が、つまり空欄が表示されるようになりました。

今回のように、#N/Aなどのエラーを表示させない方法についての詳しい内容はコチラ。

#N/Aなどのエラーを表示させず、代わりにコメント文を出す
#N/Aを表示させたくない VLOOKUP関数などを使っていると、よく#N/Aのようなエラーが表示されること、ありませんか? 例:VLOOKUPでは検索した文字が表から見つからないと、#N/Aが表示されてしまう。 エラーがあると、自分で使用...

 

今度こそオートフィル成功

IFERROR関数でエラー対策もしたら、もう一度オートフィルで式を展開しましょう。

色々ありましたが、今度こそ完成ですね!

 

いろいろ集計

ようやく、基になるデータが揃いましたので、いろいろ集計して遊んでみましょう。

今回は合計、平均、順位、最大、最小の5つを求めてみます。

 

合計 SUM関数

SUM関数で数値を合計してみましょう。

使い方は簡単で、合計したい範囲を指定するだけです。

月合計の式:=SUM(B5:B8)

個人合計の式:=SUM(B5:M5)

N8セルは総合計になるわけですが、月合計や個人合計の延長線で式を作るのも良いですが、=SUM(B5:M8)のような範囲指定のやり方もあります。

 

平均 AVERAGE関数

平均値を計算するのには、AVERAGE関数を使います。

式:=AVERAGE(B5:M5)

AVERAGE関数 – エクセルで平均値を計算する
エクセルの関数を使って平均値を計算 エクセルではAVERAGE関数を使う事で、複数の数値の平均値を計算する事ができます。 AVERAGE関数とは 引数の平均値を返します。引数には、数値、数値を含む名前、配列、セル参照を指定できます。 AVE...

 

セイウチ太郎の年間累計は178なので、12カ月で割って、平均は14.833・・・となります。

今回、アシカ吾郎とアザラシ聖子は3,4月が空欄になっていますので、この場合は10カ月で割るようになります。

ここは好みが割れるのですが、12カ月で割りたい場合はAVERAGEA関数を使うことで、空欄があるセルも分母に含んでくれます。

ややこしいですが、空欄があるのと、なんの式も入力されていない無では扱いが違い、無の場合はAVERAGEA関数を使っても分母に含まれません。

他にも、IFERROR関数の式で、エラーの場合の値を""から0に変更し、AVERAGEIF関数で0超の場合のみを対象にして、0を表示しつつも10カ月で割るといった方法もあります。

アシカ吾郎のIFERROR式:=IFERROR(VLOOKUP($A7,INDIRECT("'"&B$4&"'!A:B"),2,FALSE),0)

アシカ吾郎のAVERAGEIF式:=AVERAGEIF(B7:M7,">0")

AVERAGEIF関数 - 条件に合う行のみの平均値をとる
条件に一致した行のみで平均値を計算 エクセルでは平均値を計算する関数として、AVERAGE関数というものあり、これは表全体の平均値を計算するものになります。 それに対しAVERAGEIF関数は、条件に一致した行のみの平均値を計算することがで...

 

 

順位 RANK関数

指定した値が、範囲内で何番目に大きいかを求める事ができる、RANK関数を使います。

今回は、年間累計が大きい順に順位をつけてみます。

セイウチ太郎の式:=RANK(N5,$N$5:$N$8)

順位を知りたい値、範囲の順に設定するのですが、オートフィルで他の人にも式を展開する際、順位を知りたい値はもちろん変動させたいのでドルマークはつけません。

ですが、範囲は固定させたいので、絶対参照にして動かないようにしておきます。

また、式の最後に,1を付けることで、小さい順の順位を求める事もできます。

小さい順を求める式:=RANK(N5,$N$5:$N$8,1)

 

最大 MAX関数

MAX関数を使って、その人の1年間のエサ代の内、一番エサ代が高かった月の金額を求めてみましょう。

セイウチ太郎の式:=MAX(B5:M5)

範囲を指定するだけなので簡単ですね。

MAX関数 - 最大値を探しだす
MAX関数とは MAX関数とは、指定した数値の中から、最も大きい数値、いわゆる最大値を探し出すことができる関数です。 公式説明では下記のようになっています。 引数の最大値を返します。論理値および文字列は無視されます。 なので、あいうえおやA...

 

最小 MIN関数

今度はMIN関数を使って、その人の1年間のエサ代の内、一番エサ代が低かった月の金額を求めてみましょう。

セイウチ太郎の式:=MIN(B5:M5)

MAX関数同様、こちらも範囲を指定するだけなので簡単ですね。

MIN関数 - 最小値を探しだす
MIN関数とは MIN関数とは、指定した数値の中から、最も小さい数値、いわゆる最小値を探し出すことができる関数です。 公式説明では下記のようになっています。 引数の最小値を返します。論理値および文字列は無視されます。 なので、あいうえおやA...

 

番外編:ミニグラフ(スパークライン)

あまり注目されることがないのですが、エクセルには、セル内にミニグラフを表示させる、スパークラインという機能があります。

セル内に表示させる以上、どうしても小さいグラフになってしまうので、細かい情報までは拾えませんが、なんとなくの数値の傾向を見たりするには便利です。

あと、なんか楽しい。

 

使い方は簡単で、挿入タブ→スパークライン→表の種類の順に選び、最後にデータの範囲を選んであげるだけで完成です。

 

実戦から得るものは多い

今回のようなシンプルな集計表だけでも、多くの関数が登場しました。

この事から、使いたい関数を探すのではなく、実際の表から、こういう関数や使い方もあるんだぞと逆引きするのも有りなんじゃないかと思い、勉強用に記事を書いてみました。

何か1つでも、あーなるほどねって思ってもらえれば幸い。

 

コメント

タイトルとURLをコピーしました