1.RANK関数の使い方関数の書き方は以下のとうりです。
RANK(値,比較範囲,昇降の順序)
@ A B
引数
@比較する値が入力されているセルを指定する
Aで指定する範囲内の1つの値(セル)を指定する
A値が入力されているセル範囲
指定した範囲内の空白や文字が入力されているセルは無視されます
B昇降の順序は0または1で指定します。
0 降順(大きい順)
1 昇順(小さい順)
EX4D384Z
2.使用例
次のような得点表があるとき、順位は次のように入力します。比較範囲に入力するセル範囲(セル番地)を絶対形式で入力しておくと、下に続くセルに複写することができます。
@セルD6に順位を求める数式を入力する
=RANK(C6,$C$6:$C$20,0) を入力する
A順位が表示される
EX4D385Z EX4D386Z
BセルD6に入力した数式を下へ続くセルに複写する
順位が表示される
C空白は順位からはずされますが、比較する値が空白だとエラーが表示されます。
D同じ値は、同じ順位が付けられ、次の番号が飛ばされます。
1位が2つで、2位がない
EX4D387Z
3.昇降順を切り替える
関数内の昇降順を指定する0または1を書くところをセル番地にして、外部指定できるようにすると、RANK関数を書き換えなくても、一揆に昇降順を切り替えることができます。
@セルD6の関数を書き換える
=RANK(C6,$C$6:$C$20,$E$5) に書き換える
AセルD6を下へ続くセルに複写する
この時点では、昇降順は降順のままです。セルE5に入力した値(0または1)で昇降を指定するようになりましたが、セルE5には何も入力していません。セルが空白のときは、0と判断されるため降順になっるからです。
EX4D388Z
EX4D389Z
●昇降順を換える
昇降順を指定する0または1をセルE5に入力すれば、その値で昇降順が決まります。
r操作
@ セルE5に1を入力する
A 順位が昇順で表示される
◆ セルE5に0を入力すると降順で表示されます。
EX4D390Z
ポイント[絶対番地]
セル番地を絶対形式で入力するときは、キーボードから$を付けて入力する、または、通常の書き方でセル番地を入力してから[f・4]キーを押して絶対形式に変更することができます。
【操作のまとめ】
●関数内の引数(セル番地やセル範囲をのぞく)を外部で指定するときは、関数内の引数を入力する位置にセル番地を入力して、そのセルに値を入力する
●数式を複写したとき、引数に入力したセル番地やセル範囲が自動更新されないようにするときは、絶対番地で入力する
■評価を付ける(ABCランク)
学期末試験の点数などから評価(ABCランク)を求めるには、IF関数を使って80点以上はランクA、79点から60点はランクB、を求めるようにします。点数でけでなく顧客ごとの取引金額でランク付け(得意先のランク付け)することもできます。
1.ABCランクの付け方
データ範囲から、ある値の範囲にランクを付けるような関数は準備されていません。IF関数を使って、比較値が範囲内に入っているかを検査して、その結果でランク(A,B,C)の表示を制御します。考え方として、期末試験などの点数で見てみましょう。
●2位の判断
まず最初に2位の判断(80点を境にランクA、Bに分ける)を考えてみましょう。IF関数の条件式を以下のように書くと、79点以上のときAを表示、それ以外の点数はBを表示になります。
=IF(得点>79,”A”,”B”)
@ A B
引数
@条件式
得点が79点以上かどうかを調べる
79点のとき真(False)、79以下(79を含む)のとき偽(True)になる
A真のときの処理
Aを表示する
B偽のときの処理
Bを表示する
この動作を実際に確認すると、次のようになります。
r操作
@セルD6に数式「=IF(C6>79,”A”,”B”)」を入力する
AランクBが表示される
セルC6に入力されている値が79以下なので、偽(得点>79でない)の処理が実行され、「B」が表示されています。
EX4D391Z EX4D392Z
r操作
@セルC6のデータを80に書き換える
AランクAが表示される
セルC6に入力されている値が79以上なので真(得点>79である)の処理が実行されて「A」が表示されています。
EX4D393Z
●3位の判断
ある値(80点)を境にAとBに分けたIF関数の偽の部分にもう一つのIF関数を入れて、偽の部分を2位に分けます。たとえば、以下のように分けることを考えます。
100点から80点 ランクA
79点から60点 ランクB
59点から 0点 ランクC
先の2位で分割したIF関数の偽の部分に60点を境に2位分割するIF関数を入れます。このようにIF関数の中にIF関数を入れて、2位の片方をさらに分割して3位の判断を行います。
=IF(得点>79,”A”,________) 2位の分割で使った式
↑ ↑
79点以上の処理 その他の得点の処理
=IF(得点>79,”A”,IF(得点>59,”B”,”C”))
↑ ↑
真(59点以上の処理) 偽(その他の得点の処理)
この状態(IF関数の中にIF関数を入れること)をIF関数のネスティングといいます。このネスティングをさらに進めて、4位、5位、・・・n位に分割することも可能です。
2.使用例
以下は、得点を3位にランク付けする数式を使った表です。
@ここに3位の数式を入力する
=IF(C6>79,”A”,IF(C6>59,”B”,”C”)) を入力する
A下へ続くセルに@の式を複写する
それぞれのランクが表示される
複写した後で、表示を中央揃えに設定しています。
EX4D394Z EX4D395Z
ヒント[中央揃え]
セル内で中央表示するときは、そのセルにセルポインタを合わせて、ツールバーの[中央揃え]ボタンをクリックする。もう一度クリックすると解除になる
【操作のまとめ】
●ABCランクはIF関数のネスティングで処理する
●目的の処理を行う組み込み関数が見あたらないときは、関数を組み合わせて実現できないかを考える
■学期末試験の成績表を作る
この章で解説した統計関数(AVERAGE、MIN、MAX)のまとめとして学期末試験の成績表を作ってみることにしましょう。関連するデータベース関数や偏差値を求める関数についての解説を加えています。作成する集計表の全体像をこの章の最後に載せておくので参考にしてください。
1.得点の合計
以下の集計表を作り、合計の列にSUM関数を入力して合計を求めますが、IF関数を利用してゼロ表示を消す工夫を付け足すことにします。ここでの場合、国語から外国語までのデータがあるので、以下のように1つのセルの入力を判断するだけでは、正しく制御できません。
数式例(セルM8の場合) =IF(E8=””,””,SUM(E8:L8))
セルE8が無入力[E8=””]のとき空白[””]を表示、入力があるとき合計[SUM(E8:L8)]を表示を意味する数式になる。
r操作
@ 集計表を作る
A ゼロ表示を消す合計式を入力する
EX4D413Z
実際にデータ(得点)を入力すると、合計が表示されない、ゼロが表示される、といった現象が表れます。これは、数値入力(得点)の判断を1つのセル(E8)だけにしているからです。
r操作
@ 国語以外の点数を先に入力する
A 合計が表示されない
B 入力を判断しているセルE8(国語の欄)に点数を入力する
C 合計が表示される
EX4D414Z
EX4D415Z
この場合、欠席などにより国語の点数を入力しないとき、合計が表示されません。そこで、国語から外国語まですべての入力を判断するようにします。すべての入力を判断するには、COUNT関数を使って数値が入力されたセル数を求め、入力セル数が0のとき、空白を表示するようにします。
=IF(COUNT(E8:L8)=0,””,SUM(E8:L8))
r操作
@ 数式を書き換えるセルにセルポインタを合わせて[F2]キー押す
A 数式を書き替える
B 範囲内の任意の位置にデータを入力する
@ 合計を求める範囲内の1つにデータを入力すると、結果が表示される
EX4D693Z
EX4D417Z
合計の列に同じスタイルの計算式を入力して、合計計算を完成させます。この計算式も複写できるので、[コピー]/[張り付け]やドラッグで下に続くセルにコピーすれば入力の手間を省くことができます。合計値が正しく表示されるかを確かめるために、確認しやすいデータを入力しておきます。データの入力内容は次の平均値をご覧ください。
2.得点の平均値
平均値は、AVERAGE関数を使います。数値が入力されているセルの合計を、数値が入力されているセル数で平均値を求めるので、空白や文字入力(欠席など)のセルは無視されます。合計と同じようにゼロ表示を消すIF関数を付けると以下のようになります。
=IF(COUNT(E8:L8)=0,””,AVERAGE(E8:L8))
r操作
@数式を入力するセルにセルポインタを合わる
A数式を入力する
@ 結果が表示される
入力した計算式を、平均値を求める他のセル(下に続くセル)に複写して平均値を完成させます。
EX4D418Z
EX4D419Z
ポイント[平均値のゼロ表示]
合計が表示されたとき平均値を求めることができる、と考えることができるので、ゼロ表示ほ消すための判断を、=IF(M8=””,””,AVERAGE(E8:L8))とすることができます。
3.科目の偏差値を求める準備
科目ごとの偏差値は以下の式で求めることができます。科目の点数から平均点を引き、その値を標準偏差で割り、値を10倍して、基準値(ここでは50点とする)を加えた値になります。国語を例にすると次のようになります。
((国語の点数−国語の平均点)/標準偏差値)*10+50
現在の段階では、国語の平均点と標準偏差値を求めていないので、以下の集計表を作成して、データをそろえます。科目合計と科目平均のゼロ表示を消す処理は、受験者数で判断するようにしています。
●受験者数・科目合計・科目平均
偏差値を求めるには、科目平均と後の標準偏差値だけでいいのですが、受験者数と科目ごとの合計も入れておくことにします。
@受験者数は、得点表の数値が入力されているセル数を求める数式を入力する
=IF(COUNT(E8:E23)=0,””,COUNT(E8:E23))
A科目ごとの合計を求める数式を入力する
=IF(E30=””,””,SUM(E8:E23))
B科目ごとの平均値を求める数式を入力する
=IF(E30=””,””,AVERAGE(E8:E23))
それぞれ、横に続くセルに数式を複写して、集計表を完成させます。右端の合計にも同じスタイルの数式を複写で入力します。
EX4D420Z
ヒント[空白セルの判断]
IF関数の条件式で、セルの空白を判断するとき、本文ではE30=””、を使っていますが、=””を省いて、数値入力を判断することができます。この場合は、=IF(E30,SUM(E8:E23),””)のように””の入力位置が後ろになります。
●標準偏差値
標準偏差を求めるSTDEV関数があるので利用します。書き方は次のとうりになります。引数を母集団の標本と見なした標準偏差を求めます。
=STDEV(標本データの範囲)
↑
ここでは、科目の点数を入力したセル範囲を指定する
国語を例にすると、以下のようになります。これまでと同じようにゼロ表示を消す処理を付け加えています。
@標準偏差を求める式を入力する
=IF(E30=””,””,STDEV(E8:E23))
A標準偏差が表示される
Bこれまでと同じように、@で入力した数式を横に複写して集計表を完成させます。右端の合計にも同じスタイルの数式を複写で入力します。
EX4D421Z
EX4D422Z
4.科目の偏差値
前説の3で解説したように、科目ごとの偏差値は、以下の数式で求めます。この式に科目の平均点と標準偏差値を代入すると、下側の数式になります。
((国語の点数−国語の平均点)/標準偏差値)*10+50
↓
( (E8−E32) /(E33) *10+50
以下の表を作成して、それぞれの数式を入力します。最初の1目の数式を少しくふうすれば、ここでも数式を複写して集計表を完成することができます。以下の表(偏差値)は、得点表の後ろに続けて作成しています。
@ 偏差値の集計表を作成する
A 偏差値を求める数式を入力する
=IF(COUNT(E8)=0,””,((E8−E32)/(E33)*10+50)
@ 偏差値が表示される
EX4D423Z EX4D424Z
●数式の複写
これまでと同様に、この式を複写すると、移動量に合わせて以下のように変化してしまい、平均点と標準偏差値が正しく指定されなくなります。
=IF(COUNT(E8)=0,””,((E8−E32)/(E33)*10+50)
下へ複写したとき(複写先は国語の2人目)
=IF(COUNT(E9)=0,””,((E9−E33)/(E34)*10+50)
↑ ↑
この2つが正しくない
この現象を解決するには、セル番地を絶対番地に変更して、複写先で変化しないようにします。セル番地を絶対番地にするには、セル番地に記号$を付けて以下のようにします。セル番地を入力した直後または、セル番地にカーソルを合わせてf・4キーを押せば絶対番地に変更することもできます。
=IF(COUNT(E8)=0,””,((E8−$E$32)/($E$33)*10+50)
↑ ↑ ↑ ↑
セル番地に$を付けて入力する
この式で入力すれば、下に続くセルに複写することができます。ただし、横には複写できません。隣の数学へ複写したとき、平均値と標準偏差が国語のままになり正しく計算されません。横へ複写できるようにするには、列番号だけが変化するように列番号に付けた$を取り除けば可能になります。
=IF(COUNT(E8)=0,””,((E8−E$32)/(E$33)*10+50)
↑ ↑
行番号だけを絶対番地にする
右へ複写したとき(複写先は数学の列)
=IF(COUNT(F8)=0,””,((F8−F$32)/(F$33)*10+50)
↑ ↑
列番号だけが変化する
ただし、この方法が使えるのは、偏差値表と科目別の平均点表が同じ項目の並びになっているからです。項目の並びが同じでないと正しい計算式が複写されません。
@ここに入力した計算式を絶対番地の式に変更する
Aこのセルを縦、横に複写して完成させる
EX4D425Z
EX4D426Z
注意
偏差値を求める計算式は、分数(除算)を含むので、得点のデータがすべて同じ値(すべてのデータを50点にするなど)にすると、分母が0になり、計算できないエラー(#DIV/0!)または###が表示されます。すべての得点が同じにならないのがふつうですが、計算結果の確認などで仮入力するデータをすべて同じ値にしたときに起こります。
5.得点の順位
高得点を取った人から順に、順位を求める表を付け足しておくことにしましょう。入力した値のから順位を求めるには、RANK関数を使います。これまでと同じようにゼロ表示の処理を付けると、以下のようになります。
=IF(COUNT(F8)=0,””,RANK(E$8:E$23))
↑
複写を考慮したセル番地にする
@ここに順位を求める数式を入力する
A入力した数式を複写して完成させる
EX4D427Z
EX4D428Z
6.画面を分割する
ここで紹介するような1画面で表示しきれない大きな(長い)集計表を作成するとき、画面上の適当な位置で分割して、項目名などを固定(スクロールを止める)すれば、データと項目の対応が見やすくなります。画面の分割はメニューバーの[ウィンドウ(W)]e[分割(S)]を使います。
r操作
@ 分割する列のラベルをクリックして反転表示にする
A メニューバー[ウィンドウ(W)]をクリックしてプルダウンメニューを表示する
B 最下部の[ EX4C685Z]にマウスポインタを合わせる
@ フルメニュー(隠れていたメニュー項目)が表示される
C[分割(S)]を選択する
A 反転表示にした列の左側に分割線が表示される
D 空白セルをクリックして反転表示を解除する
EX4D430Z
EX4D429Z
EX4D431Z
●分割ウィンドウのスクロール
画面を分割すると、左右のどちらかのウィンドウが固定されます。どちらのウィンドウが固定されるかは、マウスのクリックで決まります。右側のウィンドウ内をクリックすると、右側のウィンドウがスクロールする状態になります。クリックした反対側のウィンドウが固定されます。
@ 移動させる方のウィンドウをクリックする
A 反対側が固定される
B セルポインタを左側へ移動する
◆ [←]キーを押してウィンドウを横方向にスクロールする
@ 画面を固定した側にもセルポインタが表示される
EX4D432Z
EX4D433Z
画面をスクロールさせると、セルポインタが固定している画面にも表示されることがあり、画面上にセルポインタが2つ表れる現象が起こります。固定されている方のセルポインタは正規のセルポインタの陰として表示されています。このとき、スクロールする側のセルポインタが固定した側の領域に割り込んでいます、両方の画面に同じセル(内容)が表示されています、ということを知らせています。
7.画面分割の解除
分割した画面を元に戻すときも、メニューバーの[ウィンドウ(W)]e[分割の解除(S)]を使います。分割設定したときのようにどれかの列を選択しておく、といった操作は必要ありません。
r操作
@[ウィンドウ(W)]をクリックしてプルダウンメニューを表示する
A[分割の解除(S)]をクリックする
@ 分割が解除される
EX4D434Z
EX4D435Z
ポイント[画面のスクロール]
画面の固定は、縦または横の一方向だけです。縦に分割したときは、横方向のスクロールが固定されます。横に分割したときは、縦方向のスクロールが固定されます。
ヒント[縦と横の画面分割]
列ラベルをクリックして列を反転表示にすると、画面を縦に分割します。行ラベルをクリックして行を反転表示にすると画面を横に分割します。セルにセルポインタを合わせ分割すると、そのセルを中心に4分割されます。
【操作のまとめ】
●ゼロ表示を消すためのセル範囲の入力状態を判断するときは、COUNT関数を使う
●数式を複写するとき、セル番地が自動更新されると困るとき、セル番地を絶対形式で入力する
●セル番地の絶対形式は、列と行、列だけ、行だけ、の設定方法があるので、必要に合わせて使い分ける
●ゼロ表示を消す条件は、何を判断すれば良いかを考え、最も効率の良い(数式を短くする)方法を見つけだして使う。
●完成した成績表
EX4D441Z 縦 EX4D442Z 縦
EX4D440Z 横 EX4D439Z 横
■販売履歴簿を作る
販売履歴簿などの入力データを調べると、顧客名や商品名など、ある程度同じ内容が繰り返し入力されています。同じ内容を何度も入力するより、それぞれに顧客番号や商品番号を付けて、その番号で入力できれば、日々の作業量が大幅に削減できます。ここでは、この方法について解説します。データを入力した完成図は「販売履歴から顧客情報を抽出する」で載せていますので、合わせてご覧ください。
1◆販売履歴簿
販売の履歴簿に入力する内容を考えると、販売した日付、販売先(顧客名)、商品名、単価や数量、などが上げられます。その他、使用する会社やお店によりいろんな項目があると思いますが、ここでは、以上の内容に限定することにします。この表はSheet1に作成して、シート名を「履歴簿」に変更します。
r操作
@Sheet1にこの表を作成する。全体のスタイルはこのようになります。
A顧客名や商品名など同じ内容が入力される項目には番号の列を作っておく
B表の長さ(行数)は、最初に決めにくいものなので、適当な長さにしておきます。
C シート名を分かりやすい名前に変更します
EX4D443Z
2.商品テーブル
商品名のようなまとめられるデータは、一覧表を作り一カ所に集めます。同じ種類のデータを集めた表のことをテーブルといいます。このとき、品名ごとに番号を付けておきます。履歴簿に品名を入力するとき、この番号を使うようにするための準備です。このテーブルは、Sheet2に作成して、シート名を「テーブル」にします。商品の情報として必要な項目は、商品名、単価、ですね。これに商品番号を加えて、以下のようにします。
r操作
@商品テーブルの表を作る
A商品番号を決めてデータも入力しておく
商品番号は、履歴簿に入力する内容になるので、長い番号など、入力に手間のかかるような内容は避けるようにします。商品名を入力するのと同じような手間のかかる内容だと、番号で入力して手間を省こうとする目的が無意味になってしまいます。
3.顧客テーブル
顧客名もある程度、限定できるデータです。このデータもテーブルにして、履歴簿に入力するとき、番号で入力できるようにします。
r操作
B顧客名のテーブルを作る
C顧客番号を決めて名前などのデータを入力しておく
D下部を1〜2行空けて、テーブルの終わり分かりやすく示すために罫線を引いておく
EX4D444Z
↑シート名を付け替えて分かりやすくする
ポイント[複数の表]
1枚のシートに複数の表(履歴簿とテーブル)を作成してもいいのですが、表を作り替えるとき、たがいに干渉しないように別のシートに作成します。また、シートボタンをクリックするだけで表示を切り替えられるので便利です。あまり細かく分けすぎると、かえって使いにくくなるので、共通するような表は同じシートに作るようにしましょう。
4.テーブルに範囲名を付ける
作成したテーブルに範囲名(名前)を付けて、以後の操作をやりやすくします。また、名前を付けることで名前からテーブル内容の見当がつき、セル番地で表現するより分かりやすくなります。操作の詳細は「データ範囲に範囲名を使う」をご覧ください。設定する名前は、それぞれ[商品番号][顧客番号]にする。
●商品テーブルに名前を付ける
r操作
@テーブル範囲を選択(反転表示)する
項目名から下部のテーブル範囲の終わりを示す罫線まで範囲指定する。データが増えたときの処理をしやすくするために、テーブルENDを示す罫線までを範囲指定する
A[挿入(I)]e[名前(N)s]e[定義(D)s]をたどり名前の定義ダイアログボックスを開く
@ 範囲の左上角のセルに入力されている内容「商品番号」が仮入力される
◆ 適切な名前に書き替える(ここでは仮入力の名前をそのまま使うことにする)
B[OK]をクリックする
EX4D445Z
EX4D446Z
●顧客テーブルに名前を付ける
r操作
@ テーブル範囲を選択(反転表示)する
A[挿入(I)]e[名前(N)s]e[定義(D)s]をたどり名前の定義ダイアログボックスを開く
@ 範囲の左上角のセルに入力されている内容「顧客番号」が仮入力される
◆ 適切な名前に書き替える(ここでは仮入力の名前をそのまま使うことにする)
B[OK]をクリックする
EX4D447Z EX4D448Z
●テーブルに付けた名前の覚え書き
名前の設定後、後からでも設定した名前が分かるように、範囲名を適当な位置に入力しておきます。このテーブルに付けた名前は何だったかな、と迷わないようにするために入力しておきます。名前と設定したセル範囲の対応は、定義したときのダイアログボックス([挿入(I)]e[名前(N)s]e[定義(D)s])で確認することもできます。
r操作
@商品テーブルに付けた名前を入力する
A顧客テーブルに付けた名前を入力する
EX4D449Z
4.日付の入力
販売履歴簿の最初の項目[日付]に日付データを入力してみましょう。日付形式で入力すれば、表示形式が自動的に日付に設定されます。日付形式にも数種の形式があり、入力データの形で形式が自動選択されます。
@4/16を入力をする
A4月16日形式に設定される
EX4D450Z EX4D451Z
@ 00/4/16を入力する
A セル幅が狭い場合###で表示される
B セル幅を拡げると2000/4/16形式で表示される
EX4D452Z EX4D453Z
EX4D454Z
ヒント[表示形式を変更する]
表示形式が設定されると、データを書き換えても同じ表示形式で表示されます。他の形式に変更するときは、[書式(O)]e[セル(E)]e[表示形式]タブで変更する。
5.番号で顧客名を自動入力する
履歴簿の顧客番号の欄に顧客テーブルで決めた番号を入力して、隣の顧客名の欄に顧客名を自動入力するように設定します。この処理には、VLOOKUP関数を使います。実際の入力方法(手順)は後で解説しています。
=VLOOKUP(検索値,データ範囲,抽出列,検索条件)
@ A B C
引数
@検索値には、顧客番号を入力するセル番地を書きます。
Aデータ範囲には、顧客テーブルに付けた名前「顧客番号」を書きます。
B抽出列には、顧客テーブルの顧客名が入力されている列番号を書きます。
テーブルの先頭を1とした連続番号で指定する。顧客名の列は2になる
C検索条件には、FALSEを書きます。
TRUEを書くと、一致または近似値を検索する
FALSEを書くと、完全一致を検索する
EX4D455Z EX4D472Z
●VLOOKUP関数の入力方法
では、関数を実際に入力してみましょう。以下の手順にそって入力してください。VLOOKUP関数などを利用したこのような数式を、テーブル参照式、といいます。
◆ 結果を表示するセルに関数を入力する
@ セルD6にセルポインタを合わせてVLOOKUP関数を入力する
A 半角文字で=VLOOKUP(C6,を入力する
◆ セル番地C6は、カーソルキー[←]で入力することもできる
B[f・3]キーを押す
@[名前の張り付け]ダイアログボックスが表示される
C 使用する名前(ここでは「顧客番号」)をクリックで選択(反転表示)する
D[OK]をクリックする
A 名前が入力される
E 続きの数式「 ,2,FALSE)」を入力する
◆ ここまでの入力内容は「=VLOOKUP(C6,顧客番号,2,FALSE)」
◆[リターン(Enter)]キーを押して入力を決定する
B エラー(#N/A)が表示される
関数を入力すると、エラー(#N/A)が表示されます。これは「顧客番号に対応する顧客名が見つかりません」を知らせています。顧客番号を入力していないときも表示されます。なお、操作Bで開く名前の張り付けダイアログボックス(図@)に「Print Area」が表示されることがあります。これは、印刷を実行したり印刷範囲を設定した場合に自動的に表れる内容なので気にせずに操作を進めてください。
EX4D456Z EX4D457Z
EX4D458Z
EX4D456Z
EX4D460Z
●エラー表示を消す
ゼロ表示を消す方法と同じIF関数を使ってエラー(#N/A)を消すことができます。IF関数を使った数式に書き換えると、以下のようになります。顧客番号(セルC6)を入力していないとき空白を表示(””)するようにしています。
=IF(C6=””,””,VLOOKUP(C6,顧客番号,2,FALSE))
r操作
@数式を書き換える
Aエラー表示が消える
EX4D461Z
EX4D462Z
●顧客番号を入力する
顧客名の欄(セル)にテーブル参照式を入力すれば、顧客番号の欄に顧客番号を入力するだけで、顧客名が表示されるようになります。顧客番号を入力して確認しておきましょう。
@セルC6に顧客番号を入力する
AセルD6に顧客名が表示される
EX4D463Z
EX4D464Z
6.商品名の自動入力
顧客名のときと同じ操作になります。商品名の欄にVLOOKUP関数を入力して、商品番号を入力すれば、商品名の欄に品名が自動的に表示されます。顧客名と違っているところは、商品テーブルに単価を入れているので、同じVLOOKUP関数を単価の欄にも入力する、ところにあります。単価の欄に入力するVLOOKUP関数は抽出列が3になります。
@商品名の欄に入力する式
=IF(E6=””,””,VLOOKUP(E6,商品番号,2,FALSE))
↑
商品名を入力している列
A単価の欄に入力する式
=IF(E6=””,””,VLOOKUP(E6,商品番号,3,FALSE))
↑
単価を入力している列
EX4D465Z
EX4D466Z
●商品番号を入力する
商品番号を入力して商品名と単価が正しく表示されるかを確認します。
@ここに商品番号を入力する
A商品名と単価が正しく表示される
EX4D467Z
●数式をコピーする
正しく表示されることが確認できれば、入力した数式を下へ続く必要な範囲にコピーして顧客名、商品名、単価の自動入力処理を完成させます。
r操作
◆セルD6に入力した顧客名の参照式を下へ複写する
◆セルF6に入力した商品名の参照式を下へ複写する
◆セルH6に入力した単価の参照式を下へ複写する
また、金額(Iの列)を求める数量×単価の数式「=G6*H6」をセルI6に入力して下に続くセルに複写して完成させます。参考、ゼロ表示を消すなら以下の数式を使います。
=IF(COUNT(G6),G6*H6,””)
7.テーブルのデータを追加する
商品名や顧客が増えたとき、テーブルに追加することになります。このとき、追加の操作を以下のようにすれば、範囲名として設定したセル範囲が自動的に更新(範囲を拡げる)されます。以下の操作を行わずにデータを追加入力しても範囲名(設定した名前)には反映されません。名前の設定をやり直さなければなりません。
@下部の空白行と罫線を引いた行を選択(反転表示)する
◆ マウスポインタが矢印に変わる位置に合わせます
A選択範囲の下部あたりにマウスポインタを合わせてドラッグで下へ1行移動してドロップする
B移動した行数分だけ名前の設定範囲が広がる
EX4D468Z EX4D469Z
EX4D470Z
●設定範囲を確かめる
範囲名(名前)に設定されているセル範囲が変化(ここでは増加)したのかは、名前の定義ダイアログボックスを開いて確認することができます。
r操作
◆ メニュー[挿入(I)]e[名前(N)s]e[定義(D)s]を選択する
@ 名前の定義ダイアログボックスが開く
@ 確認する名前をクリックで選択(反転表示)する
A 参照範囲の欄に設定さけているセル範囲が表示される
A 見終わるときは[閉じる]をクリックする
EX4D471Z
ヒント[データのソート]
テーブルなどのデータを並べ替えることができます。データの範囲を選択(反転表示)して、[データ(D)]e[並べ替え(S)s]で操作する。項目名を範囲に含めると、項目名も並べ替えられてしまうので、含めないように注意すること。
ポイント[範囲の途中に追加する]
テーブルにデータを追加するとき、本文7−@の操作で入力済みデータを範囲に含めてABを操作すると、テーブルの途中に空きを作ることができます。
【操作のまとめ】
●内容(プロジェクト)の中心的な集計表とテーブルはシートを分けて作成する
●テーブルには範囲名(名前)を付けて、操作しやすくする
●テーブルは、データの追加を考慮したスタイルで作成する
■販売履歴から顧客情報を抽出する
販売履歴簿などの帳簿から、顧客別の情報(取引回数や取引金額など)を抜き出す(抽出する)とき、販売履歴簿をデータ範囲として、データベース関数を使ってさまざまな情報を抽出します。個々のデータベース関数の使い方は、それぞれ該当する項で解説していますので、そちらをご覧ください。ここでは、このように使う、という手法を紹介しています。
1.販売履歴簿
ここで使うデータ(販売履歴簿)は、「販売履歴簿を作る」で作成したものを利用しています。内容の詳細は該当ページをご覧ください。なお、ここでは、データベース関数を使いやすくするために販売履歴簿に範囲名を設定して、シート名を次のように変更しています。
@データ範囲に名前「販売履歴」を設定する
セルB5:I21に名前を設定しています。
A設定した名前を注釈としてこのあたりに入力する
範囲に設定した名前を確認できるように、操作のじゃまにならないような位置に書いておきます。
@ 名前の定義ダイアログボックスで確認しているようす
Bシート名を「履歴簿」に変更しています。
シートタブを右クリックしてショートカットメニューの[名前の変更]で設定します。
操作の詳細は「データ範囲に範囲名を使う」をご覧ください。
利用するデータ 作例 1-4E
EX4D473Z
EX4D474Z EX4D475Z
2.顧客情報
ここでは、次の情報をデータから抜き出すようにします。販売履歴簿とは別のシートに作成して、シート名を「顧客情報」に設定しています。顧客番号を入力すると、顧客名が表示され、その顧客のそれぞれの情報が自動的に表示されるようにします。
@セルB6に顧客番号を入力する
AセルC6に顧客名やその他の情報が表示される
B顧客情報を作成するシートのシート名を「顧客情報」に変更する
EX4D476Z
3.顧客名の表示
顧客名を入力するのではなく、顧客番号を入力して自動的に顧客名を表示するようにします。顧客番号で顧客名を自動表示するには、顧客番号と顧客名の対応表(テーブルという)が必要です。このテーブルは、「販売経歴簿を作る」で作成済みなので、そのまま利用します。シート名は「テーブル」に変更しています。
@シート名を「テーブル」に設定する
EX4D477Z
●顧客名表示に使う関数
販売履歴簿の顧客名の入力に使った同じ関数をここでも利用します。セルB6に顧客番号を入力して、セルC6に関数を入力します。
r操作
@ セルB6に顧客番号を入力する
◆ 顧客テーブルに入力してある番号の1つを入力しておきます。
A セルC6に数式
「=IF(B6=””,””,VLOOKUP(B6,顧客番号,2,FALSE))」
を入力する
@ 顧客番号に対する顧客名が表示される
EX4D478Z
EX4D479Z
4.顧客ごとの合計額
合計を求めるにはDSUM関数を使います。関数に付いては、「商品ごとの合計」で解説しているので参考にしてください。ここでは、以下のように使います。
=DSUM(販売履歴,8,B5:B6)
↑ ↑
↑ 抽出条件(顧客番号と顧客名)を入力したセル範囲
販売履歴の8列目(金額)を指す
※セル範囲に名前を設定している場合、同じセル範囲をセル番地で入力すれば自動的にシート名が付加される場合があります。以下の図では抽出条件のセル範囲をシート名を付けて(顧客情報!B5:B6)入力しています。同一シート内のセル番地を指定する場合はシート名を省略することができるので、通常は省略して、本文で記述した数式を使います。
r操作
@ セルE5に数式を入力する
@ 指定した顧客番号の金額データだけが合計される
EX4D480Z
EX4D481Z
5.取引回数
取り引きした回数を調べるには、DCOUNT関数を使って、数量や金額の欄に入力されている数値の数を数えることで求められます。ここでは、金額の入力されているセル数を数えています。たとえば、相殺などの処理で金額が0だとしても、0は数値なのでカウントされます。当然、返品などの処理で−(負数)でも数値なのでカウントされます。
=DCOUNT(販売履歴,8,B5:B6)
↑ ↑
↑ 抽出条件(顧客番号)を入力したセル範囲
販売履歴の8列目(金額)を指す
※以下の図では抽出条件のセル範囲をシート名を付けて(顧客情報!B5:B6)入力しています。
r操作
@ セルE6に数式を入力する
@ 同じ顧客番号の金額が入力されているセル数が表示される
EX4D482Z
EX4D483Z
6.取引金額の平均・最大・最小
合計や取引回数とおなじように、それぞれデータベース関数を使って、以下の関数を入力します。関数を入力すると、それぞれの値が表示されます。
r操作
@金額の平均値を求める関数を入力する
セルE7に入力する
=DAVERAGE(販売履歴,8,B5:B6)
A金額の最大値を求める関数を入力する
セルE8に入力する
=DMAX(販売履歴,8,B5:B6)
B金額の最小値を求める関数を入力する
セルE9に入力する
=DMIN(販売履歴,8,B5:B6)
EX4D484Z
【操作のまとめ】
●顧客番号をセルB6に入力すると、すべての情報が自動的に表示されます。
●抽出条件の項目(セルB5)は、販売経歴簿に入力している項目名と同じ内容を入力しないと正しく作動しません。