■ワークシート関数とは
複雑な計算式で算出しなければならない解を、定められた文法に従って記述することで簡単に求められるよう、あらかじめ定義された数式です。
エクセルではExcel2007で340を超える関数が用意されています。
VBAの関数と同じ名前のワークシート関数もたくさん存在しますが、記述ルールが若干異なるので注意が必要です。
関数を使用するには直接記述する方法と、関数の挿入(関数貼り付け)ダイアログを使用する方法があります。数式バーの左隣に"fx"と書かれているところがあるのでクリックしてみましょう。(Excel2000ではツールバーの"fx"ボタン)
関数の貼り付けダイアログが表示されたと思います。この中の関数の分類をみてみましょう。関数が統計や検索/行列など、種類によって分類されています。
ワークシート関数の分類は10項目です。
・財務
|
財務計算に使用する関数群 |
PV,FV,PMT,NPER,RATEなど |
・日付/時刻
|
日付や時刻を計算する関数群 |
TODAY,NOWなど |
・数学/三角 |
数値計算や標準偏差などに利用する関数群 |
SUM,SUMIF,ROUND,INT,RANKなど |
・統計 |
数値グループから統計データを求める関数群 |
AMX,MIN,AVERAGE,COUNT,COUNTIFなど |
・検索/行列 |
セル範囲やリストからデータを抽出する関数群 |
VLOOKUP,HLOOKUP,INDEXなど |
・データベース
|
データベースとして利用する関数群 |
DAVERAGE,DCOUNTなど |
・文字列操作 |
文字列を処理する関数群 |
LEFT,MID,RIGHT,LEN,FIND,SEARCHなど |
・論理 |
条件判定や条件式に利用する関数群 |
IF,AND,ORなど |
・情報
|
セル情報を取得する関数群 |
ISERROR,ISBLANKなど |
・エンジニアリング |
N進法の変換や科学技術計算に利用する関数群 |
DEC2BIN,HEX2BINなど |
次に関数名を選択してみましょう。下に関数の記述ルールと簡単な説明が表示されます。さらに"この関数のヘルプ"をクリックすると引数の詳細な説明や使用例などをヘルプ画面で見ることができます。(Excel2000ではヘルプボタン)
関数を選択し、OKクリックしていくとウィザード形式で数式を入力できます。大変便利な機能なのですが、この機能を使って数式を入力することはあまりお勧めしません。
前述「ワークシート関数をつかいこなそう」でも記述しましたが、関数は基本的に組み合わせて使用するものです。
つまり"手で書く"習慣をつけてほしいのです。関数の貼り付け機能ばかり使っていると、ネストして関数を使用する習慣が身に付きませんし、関数名もなかなか覚えられません。
ではこの関数の挿入(関数貼り付け)機能、役に立たない機能なんでしょうか?
そんなことはありません。関数のスペルを忘れてしまったり、関数の機能をうろ覚えのときなどには最高の「ヘルプ機能」として役立ちます。
正直、冴子先生やカイル君に尋ねるよりも、ずっと簡単に目的の関数を見つけだすことができます。ぜひ試してみてください。
ワークシート関数の記述ルール
ワークシート関数には共通した基本的な記述ルールが存在します。
例:=関数名(引数1,引数2,…)
この基本的な記述ルールを無視すると関数として認識されませんので注意が必要です。
以下簡単に記述ルールを説明します。
・必ず等号"="から始めます。等号を入力することで、これから関数を記述するとエクセルに宣言しています。
・関数名()。関数名は半角英数字で入力します。引数を除くその他の記号もすべて半角文字です。全角では関数として認識されないので注意してください。
・(引数1,…)。引数は関数に渡すデータです。結果は返り値(戻り値)で返ります。
引数 => 関数 => 返り値 このようなイメージになります。
引数の数は0〜複数個で関数によって異なります。引数に使える型は、数値、文字列など、これも関数によって異なります。
引数の種類(型)
・数値 |
整数・小数・負数・シリアル値、など |
・文字列 |
"Microsoft"・"Excel"、などの文字列、必ず半角のダブルクォテーションで囲む |
・論理値 |
TRUE(真)・FALSE(偽) |
・配列 |
複数データをもつもの |
・エラー値 |
#VALUE・#DIV/O!、など8種類のエラー値 |
・セル参照 |
A1:A9・$A$1、などのセル範囲 |
・数式 |
=2+2、などの計算式 |
・関数 |
引数に関数を使用する |
・その他 |
セル範囲に定義された名前など |
特に引数に関数の返り値を使用する場合をネスト(入れ子)と呼びます。(ネストできる階層は7階層までです)
また数式で使用する計算演算子は、基本的にVBAと同じものを使用します。
・算術演算子 |
+加算 -減算 *乗算 /除算 %パーセンテージ ^べき算(例4^2は4*4) |
・比較演算子 |
=等号 >超過 <未満 >=以上 <=以下 <>不等号 |
・文字列演算子 |
&文字列連結(例"エク" & "セル"は"エクセル") |
・参照演算子 |
:連続したセル範囲の参照(例A1:A9)
,連続しないセル範囲の参照(例A1,B2,C3) |
※ 参照演算子はワークシート特有です。
それではIF関数を例にして実際の関数の使用法を紹介していきましょう。
・IF関数:=IF(論理式,真の場合,偽の場合)
論理式が真(TRUE)の場合、真の処理を、偽(FALSE)の場合に偽の処理を行います。
論理式は比較演算子を用いて左辺と右辺を比較したり、AND、OR関数を用いた複数の式の論理積・論理和を使用することができます。
真のケース、偽のケースにはさらに関数を用いることもできます。ここにIF関数を用いるとネスト(入れ子)の条件判定ができます。
例:=IF(YOSOKU<JISSEKI,"目標達成",IF(JISSEKI>ZENJISSEKI),"目標未達","前月割れ"))
例ではYOSOKUセルの値よりJISSEKIセルの値が大きければ"目標達成"を表示し、そうでない場合はJISSEKIセルとZENJISSEKIセルを比較し、JISSEKIセルの値がZENJISSEKIセルの値より大きければ"目標未達"を、小さければ"前月割れ"を表示します。
例:=IF(AND(YOSOKU<JISSEKI,JISSEKI>ZENJISSEKI),"目標達成","目標未達")
この例ではYOSOKUセルの値よりJISSEKIセルの値が大きく、かつJISSEKIセルの値がZENJISSEKIセルの値より大きい場合のみ"目標達成"を表示し、そうでない場合は"目標未達"を表示します。
このように、関数には引数を渡し、返り値を利用する使用法が一般的になります。引数のいらない関数も存在しますが、返り値は必ず返ります。
複数の関数をネストして使用することで、より複雑な機能をユーザーに提供します。ネストは一つの数式内に記述することもできますし、作業セルに分けて記述することも可能です。どちらがよいかはケースによって異なりますが、あまり複雑な構造をもつ数式を使用するのはメンテナンスのことを考えると、実用的とはいえないでしょう。
複数の人物が管理する必要のあるワークシートでは、マジックナンバーを避け(きちんと名前を定義する)、見通しのよいワークシート設計が必要になります。関数の適用範囲もできるだけ局所的であるべきです。
このあたりの考え方は、VBAプログラミングと何ら変わることはありません。
|