■ エクセルの効率化の第一歩はワークシート関数のマスターです。
ところでエクセルのワークシート関数っていくつあるかご存じですか?
Excel2007で340をゆうに超えます。
http://office.microsoft.com/ja-jp/excel/HP100791861041.aspx
ずいぶんたくさんありますね。
ちなみに皆さんはLCMという関数をご存知ですか?この関数は最小公倍数を返す関数です。
知らないって?安心してください。筆者もExcelのヘルプでたった今知りましたから。
このような関数は使わない人にしてみると全く縁のない関数です。
少なくとも私はこの関数を使うことはこの先もないでしょう。
これとは逆に、しょっちゅう使う関数、ワークシート関数の代表とでもいうべき関数たちが存在します。
たとえばSUM、たぶん一番最初に覚える関数の代表がこれではないでしょうか。
そのほかの代表的な関数は後半に紹介します。
皆さんに一つだけ気を付けてほしいことがあります。それは「関数は組み合わせてこそ効果的な使い方ができる」ということです。
単独で使う関数というものはあまり意味がありません。基本的に関数は組み合わせて使用するものなのです。
たとえば、購入品リストから購入単価を拾ってきて表示させるにはどうすればいいでしょう?
すぐに思い浮かぶのがVLOOKUP関数を利用することですね。
=VLOOKUP(A3,konyu_lst1,3,FALSE)
(※ 購入品リストのセル範囲に"konyu_lst1"と名前を付けているものとします)
購入品リストの1列目には購入品番号、2列目には購入品名、3列目には購入単価が入力されています。
これだけでは購入品リストから単に購入品名と購入単価を拾ってくるだけの関数式です。
これはこれでいいのですが「購入先を複数追加してしかも購入単価を瞬時に切り替えたい」なんて要望が出たときはどうしたらいいでしょう?
VBAを使って書き換えるしか方法がないのでしょうか?
実はINDIRECT関数を組み合わせることでVBAを使用しなくても可能になります。
購入品リストをもう一つ追加してみましょう。追加した購入品リストのセル範囲には"konyu_lst2"と名前を付けるものとします。
=VLOOKUP(A3,INDIRECT($A$1),3,FALSE)
として、セルA1にkonyu_lst1、konyu_lst2と、購入先を指定してやれば、瞬時に参照先を変更します。
以降同じ方法で、いくらでも購入先別の購入品リストを追加できます。
さらに購入先一覧を別に作成しておき、セルA1の入力規則からリスト選択し、konyusaki_lstなどとすればもうちょっとしたアプリ並です。VBAを使わなくてもこのくらいのことは関数で十分にできるのです。
ちなみにこのINDIRECT関数は、私の尊敬する田中亨氏(MicrosoftOfficeExcelMVPで膨大な数のExcel関連書籍の著者)がとても興味深い使用方法をご紹介しています。
INDIRECTによる画像の入れ替え 田中亨氏の公式サイト「OfficeTANAKA」
これを応用することで次のようなことが可能になります。
Excelを使用してトランプゲームを作成しているとしましょう。シートに貼り付けられたトランプの画像をVBAで張り替えることは簡単です。
しかしこの方法なら画像の張替処理にVBAは必要ありません。
VLOOKUP式で別表のトランプ画像を拾ってきています。ゲーム側のプログラムは表示するトランプの値を書き換えるだけでOKです。
たとえばプログラムで扱うトランプのカードデータをスペード101〜113、ハート201〜213、クラブ301〜313、ダイア401〜413、ジョーカーは777、裏面は888、カードなしは999にするとします。
ワークシート上は張り替える画像データを別表からVLOOKUP関数で拾ってきて表示領域のカード画像を張り替えます。
ゲームプログラム側はスペードのエースを表示させたければ"101"の数字をセルに入力するだけです。
カードを伏せたければ"888"、カードを非表示にするなら"999"をセルに代入するだけです。
非常に楽ですね。
画像の張替ルーチンが必要ないのでプログラムは純粋にゲーム制御ルーチンだけ用意すればいいのです。
サンプルを用意しました。セルB1〜F1までの数字を101〜113、777、888、999の数字に変更して動作を確認してみてください。 サンプルファイル(c01p02_01.xls 85KB)
(全部用意するのは面倒だったのでスペード、ジョーカー、裏面、カードなし、だけ用意しました)
なお、トランプの画像はこちらのサイトの素材を使用しております。
※ http://www11.ocn.ne.jp/~ugetsu/
■ 重要な関数について一覧リスト
数学/三角関数
・SUM(数値 1,数値 2,...)
合計関数。ありとあらゆる場所で使用します。とりあえずこれだけでも知っていればExcelで表を作っているのに電卓で合計を計算するという愚行を避けることができます。
・SUMIF(範囲,検索条件,合計範囲)
リストの中からある条件に合致するデータの合計を求められます。使用例としては受注一覧表などで、商品部二課の金額だけ合計したいなどといった場合によく用いられます。
・ROUND(数値,桁数)、ROUNDUP(数値,桁数)、ROUNDDOWN(数値,桁数)
四捨五入したり、切り上げたり、切り捨てたり、いたるところで使われる汎用的な数学関数です。
論理関数
・IF(論理式,真の場合,偽の場合)
様々な場面で用いられる基本的な条件判別関数。単独で用いられることはあまりなく他の関数と組み合わせるか、オートフィルして列全体の評価に用いたりします。
文字列関数
・TRIM(文字列)
文字列の先頭と末尾からスペースを削除する文字整形関数。オフコンや他データベースからデータをコンバートしたときに余分に入ってしまった空白をとるのに便利です。
・SUBSTITUTE(文字列,検索文字列,置換文字列,置換対象)
文字列内の指定した文字列を他の文字列に置き換えます。便利といえば便利ですが文字列の置き換え機能自体はエクセルも持っています。会社名で並び替えるときに一時的に前鰍抜いたり、TRIMで削除しきれないスペースを一時的に削除するのに有効です。
・ASC(文字列)、JIS(文字列)
全角−>半角がASCで半角−>全角がJIS。セットで覚えるといいです。全角、半角混合のデータを統一させ、重複入力を防ぐなど応用範囲は広いです。
・RIGHT(文字列,文字数)、LEFT(文字列,文字数)、MID(文字列,開始位置,文字数)
文字列の抜き出し関数。TRIM同様にコンバートしたデータの整形などによくつかわれます。
・UPPER(文字列)、LOWER(文字列)
小文字−>大文字はUPPER、大文字−>小文字はLOWER、これもセットで覚えるべし。
・TEXT(値,表示形式)、VALUE(文字列)
数値−>文字はTEXT、文字−>数値はVALUE、これもセットです。
検索/行列関数
・VLOOKUP(検索値,範囲,列番号,検索の型)
もっともよくつかわれる検索関数。指定された別リストから検索値のデータを探し出し、列番号右側にある値を返します。商品マスタや社員マスタなどを別表で用意する必要があります。
・OFFSET(基準,行数,列数,高さ,幅)
指定されたセル範囲の参照を返します。表引きの元表の大きさが変わるときなどに便利です。
・MATCH(検査値,検査範囲,照合の型)
指定されたセル範囲で特定の値を検索し、何番目に位置するかを返します。VLOOKUPの列位置指定に組み合わせて使うと、将来、表引きの元表構成が変わっても対応できます。
統計関数
・RANK(数値,範囲,順序)
選択されたセル範囲の数値に順位をつけるとき便利です。
・COUNTIF(範囲,検索条件)
選択されたセル範囲にある条件に合致したセルの個数を返します。条件指定やワイルドカードが使えるので、「平均点以上の生徒数」や「東京に住む会員数」などが簡単に調べられます。
日付と時刻の関数
・WEEKDAY(シリアル値,種類)、NOW()
WEEKDAYは予定表などを作った時に「とりあえず土日を抜きたい」なんて時に便利。NOW関数は現在の日付と時刻の挿入。書類の頭によくつけます。ちなみに印刷オプションでヘッダに現在の日付を挿入可能です。
情報関数
・ISBLANK(テストの対象)、ISERR(テストの対象)
VLOOKUPなどで検索値がリストにないと#N/Aエラーが出るのでうっとうしいとき、ISERR関数を使えばエラー値の場合は値を表示させないといったことも可能です。
|