第4回 - 2008/10/27
データ処理に便利な関数
条件判断を行う関数
IF(条件式, TRUEのときの値, FALSEのときの値)
- 条件式に使われる演算子:< > = <= >= <>
- 例:値1 > 値2 → 値1が値2よりも大きい場合はTRUE、それ以外はFALSE
- 演算子の両辺は、定数、セル参照を指定できる
その他に条件式に使われる関数
- AND(条件1, 条件2, ...):2つ以上の条件を指定し、条件がすべてTRUEなら、結果がTRUEになる。そうでない場合はFALSE
- OR(条件1, 条件2, ...):2つ以上の条件を指定し、条件が1つでもTRUEなら、結果がTRUEになる。条件が全部FALSEの場合のみFALSE
- ISERROR(セル):セルがエラーならTRUE
セル検索を行う関数
VLOOKUP(検索値, 範囲, 列番号[, 検索の型])
- 指定した「範囲」は一覧表の形式になっている
- 「範囲」の1列目から、「検索値」を探す(大文字小文字は無視)
- その行の「列番号」で指定した列の値を返す
- 検索の型は検索値が1列目にない時の挙動を指定する(ただし、数値以外は動作が複雑になるので注意)
- TRUEないしは省略:一致しない場合は検索値に一番近い最大の値を戻すが、1列目で並べ替えが必要
- FALSE:完全に一致した値しか返さない
- 見つからない場合は「エラー」を返す
利用例:伝票作成→デモ(以下の表は左上をA1にしてください)
商品コード | 単価 | 商品名 |
12994 | 250 | クッキー |
12995 | 280 | ポップコーン |
PG34 | 350 | オレンジジュース |
PS92 | 450 | マンゴージュース |
RRR2 | 340 | トマトジュース |
XD001 | 230 | コーヒーS |
XD002 | 280 | コーヒーM |
XD003 | 400 | コーヒーL |
MATCH(検査値, 検査範囲[, 照合の型])
- 検査値が検索範囲内で何番目に出てくるかを求める
- 照合の型によって一致するものがないときの挙動が決まる
INDEX(範囲, 行番号, 列番号[, 領域番号])
- いろいろな記述があるので、完全なリファレンスはヘルプを参照
- 範囲の中から、指定した行番号、列番号のセルの値を取り出す
- 行番号や列番号は1から範囲内の数値を指定する
利用例:2つの表から異なっている部分を抽出する→デモ(以下の表は左上のセルをA14にしてください)
商品コード | 単価 | 商品名 |
12994 | 280 | クッキー |
12995 | 280 | ポップコーン |
PG34 | 400 | オレンジジュース |
RRR3 | 300 | トマトジュース |
XD001 | 230 | コーヒーS |
XD002 | 280 | コーヒーM |
XD003 | 400 | コーヒーL |
3422 | 320 | ホットドッグ |
45223 | 640 | ハンバーグ定食 |
INDIRECT(セル)
- セルに入力されている文字列をセル範囲と見なす
- 利用例:伝票に支店を追加する→デモ
文字列を処理する関数
- LEFT(セル, 文字数):セルの中の文字列について、左から指定した文字数を取り出す
- RIGHT(セル, 文字数):セルの中の文字列について、右から指定した文字数を取り出す
- MID(セル, 開始位置, 文字数):セルの中の文字列について、指定した位置から文字数分の文字を取り出す
- LEN(セル):セルにある文字列の文字数
- SEARCH(検索文字列, 検索対象[, 開始位置]):検索対象から検索文字列を探し、何文字目にあるかを得る
本日の演習
練習問題4-1
あるセルに名前が入っていて、姓と名の間は半角のスペースが入力されていると決まっているとする。別にセルに、姓と名を表示する式を入力する事。姓と名は必ず入力されているとするが、文字数は一定しないことを考慮して式を作る。いくつかの名前について
練習問題4-2
VLOOKUPとほぼ等価な式を、MATCHとINDEX関数だけで作成できる。作成してみること(インターネットで検索するとすぐに出てくると思われるが、とりあえず自分で考えてみて、セルにいろいろ試しに入力して検証すること)。ちなみに、VLOOKUPはいちばん左の列の検索しかできないが、表の中の左端ではない列から検索してデータを取り出すような場合には、この方法を使って解決ができる。
練習問題4-3
デモでは、A1から始まる表に、もう一方の表に同じ商品があるかどうか、あるなら単価は同じかどうかを判断する式を追加した。もう1つの表にも同じ式を付け加えること。このとき、最終的な表示結果は「ない」「あるが単価は違う」「あって単価も同じ」のいずれかの文字列を表示すること
練習問題4-4
2つの店舗でそれぞれ単価テーブルを作っているが、1つの表にまとめたい。単価と店舗を無視して、「商品コード」と「商品名」の組について重複しない表を作ること。とりあえず、両方の表の内容を別のワークシートにでもコピーして、つなげた状態から何をすればいいかを考えてみよう