時々質問を受けますので、M&Aアドバイザリーファーム(FAS)で使用する関数をまとめることにしました。読み進めていただくと分かると思いますが、おそらく既に皆さんがご存知の関数がたくさん並んでいます。FASで財務モデリング業務等に従事するからと言って特段難しい関数を使用することはありません。むしろ簡単な関数で誰でも理解できるようなモデルを作成することが重要です。組織内で数名しか理解・解読できない関数を使用してしまうと、レビューが滞り、プロジェクト全体の進捗にも影響を及ぼします。そういうわけなので、見たことも聞いたこともない関数が続々と解説されるわけではありません。肩の力を抜き、リラックスして当記事を読んでいただければと思います。
これから、厳選したEXCEL関数を30個紹介していきますが、次の3つの章に分けました。
財務モデル作成に必須の関数である15個は実務上頻繁に使用されていると認識しているもので、こちらは使いこなせる必要があると思っています。一方で、残りの15個については、あくまで知っておくと便利だという位置づけのものであり、正直知らなくても何とかなるものです。聞いたことがない関数も出てくるかもしれませんが、この記事を読みながら一気に覚えるのではなく、必要に迫られた時に覚えるというスタンスで個人的には問題ないと考えています。
FAS内定者/転職者が覚えておきたいEXCEL関数30選
財務モデル作成に必須の関数15選
SUM
EXCELユーザーなら使わない人はいませんよね。特に解説することはありませんが、「Alt, H, U, S」の順でキーボードを触ってSUM関数を使うと、ちょっとできる人感が出ます!
= SUM(数値1, 数値2, …)
AVERAGE
SUM関数と同様、EXCELの基礎的な関数になります。この関数を召喚するショートカットキーは「Alt, H, U, A」です。
= AVERAGE(数値1, 数値2, …)
MEDIAN
MEDIAN関数は、参照数値における中央値を返す関数です。フィナンシャルアドバイザリー業務/バリュエーション業務に従事する方は、比較的よく使用する関数になります。マーケットデータは統計値であり、異常値が含まれることもあります。こうした異常値を計算から除外する趣旨でAVERAGE関数よりもMEDIAN関数が使用される傾向にあります。
= MEDIAN(数値1, 数値2, …)
SUMIF
IF関数を使ってSUMIF関数でできることをやろうとしている人を見たことがあります。そんな風にならないようにしっかり使い方を覚えておきましょう。
= SUMIF(範囲, 検索条件, 合計範囲)
SUMIFS
SUMIFではひとつの条件のみの指定ですが、SUMIFSでは複数条件を指定し、条件に合致した数値の合計を求めることができます。関数の引数はEXCEL上でガイドしてくれるので間違える可能性は低いですが、SUMIFで第三引数となっていた合計範囲がSUMIFSにおいては第一引数となっている点に注意が必要です。
= SUMIFS(合計対象範囲, 条件範囲1, 条件1, …)
MIN
次のMAX関数と合わせて覚えておきたい関数です。引数に設定する数値のうち、最小の数値を返す関数になります。数値間の比較であればIF関数を使うよりもシンプルな式になるので、レビューする側もチェックしやすくなります。
= MIN(数値1, 数値2, …)
MAX
MIN関数が最小値を返す関数であったのに対し、MAX関数は最大値を返します。キャッシュフロー計算の際にEBITがマイナスの年は税金を考慮しない取り扱いとすることがありますが、そのような場合に「=MAX(EBIT*税率, 0)」と引数の1つを「0」にして使用したりします。
= MAX(数値1, 数値2, …)
INDEX
INDEX関数は、範囲または配列から行と列を指定することで、VLOOKUPやHLOOKUP関数と類似の機能を実現する関数です。次に紹介するMATCH関数と組み合わせることでLOOKUP関数よりも高いトレーサビリティを得られるとの理由から、使用を推奨するプロジェクトマネジャーもいますので是非押さえておきましょう。
= INDEX(配列, 行番号, 列番号)
MATCH
MATCH関数は、第二引数で指定した範囲内において、第一引数で指定した検査値を検索し、その位置を数字として返す関数です。上でINDEX関数はMATCH関数と組み合わせて使用すると書きましたが、INDEX関数の第二引数と第三引数である行番号と列番号のところにMATCH関数を入れて使用します。具体的に示すと「= INDEX(配列, MATCH関数, MATCH関数)」となります。
= MATCH(検査値, 検査範囲, 照合の種類)
VLOOKUP
VLOOKUP関数は、指定した範囲から検査値を検索し、条件に一致した値を返す関数です。プロフェッショナルファームに限らず業務上よく利用されているので、ご存知の方も多いはずです。一方で、学生時代にこの関数を多用している人はそう多くないと思いますので、使い方に不安のある方は是非この機会に覚えてみてください。
= VLOOKUP(検査値, 範囲, 列番号, 検索方法)
HLOOKUP
HLOOKUP関数も基本的にはVLOOKUP関数と同じ機能を持っています。違いは、VLOOKUP関数が縦方向の検索であるのに対し、HLOOKUP関数が横方向の検索であるという部分です。なので、第三引数が列番号ではなく行番号となっています。
= HLOOKUP(検査値, 範囲, 行番号, 検索方法)
CHOOSE
CHOOSE関数は、財務モデリング業務に従事する方には必須の関数です。ケースを複数用意している場合に、インプットとなるセル(インデックス)を変更するだけで各ケースのシミュレーションを回すことが可能です。
= CHOOSE(インデックス, 値1, 値2, …)
EOMONTH
EOMONTH関数は、モデル上の日付計算に役立ちます。財務モデリングの際に月次で財務数値を追うこともありますが、そんな場合は第二引数に「1」と入力してコピペすれば月末日付を取得して返してくれるため、とても便利です。「EDATE関数」派の人もいますが、月末日付を取得する関数ではないため、取り扱いに注意が必要です。
= EOMONTH(開始日, 月)
IF
IF関数は特に解説不要と思いますが、条件分岐をさせる場合に使用する関数です。実務上注意したい点としては、可能な限りネストしないようにしましょう。レビュースピードが著しく低下し、ミスも多くなります。
= IF(論理式, 値が正の場合, 値が偽の場合)
ネスト:IF関数の中にIF関数を入れたマトリョーシカのような状態。クライアント提供資料で10個以上ネストされたIF文を見たことがありますが、解読に膨大な時間を要しました。
ROUND
ROUND関数は、値を四捨五入するための関数です。特に解説することはありませんが、小数点以下が続いているからと言ってむやみにROUND関数を使用するのはやめましょう。計算過程に使用すると値が少しずつずれていったりするため、計算後の数値に適用されるケースが多いです。
= ROUND(数値, 桁数)
データチェック/加工/分析に便利な関数7選
EXACT
EXACT関数は、2つの文字列(値)の一致を確認するための関数です。返り値は「TRUE」もしくは「FALSE」です。貸借対照表における貸借一致の確認等に使用可能です。
= EXACT(文字列1, 文字列2)
TEXT
TEXT関数は、表示形式を変更する際に使用する関数です。表示形式変更の際には書式設定を触る場合が多いため、頻繁に使う関数ではありませんが覚えておくと便利です。
= TEXT(値, 表示形式)
MID
MID関数は、文字列を加工するための関数です。データベースで利用するTickerの編集やデータの名寄せをする時等に利用すると便利です。
= MID(文字列, 開始位置, 文字数)
TRIM
TRIM関数は、余分なスペースを削除するための関数です。データベース等からBusiness Descriptionを日本語で抽出した際に変なところにスペースが入っている場合があり、そういったものを削除するのに便利です。また、MID関数と同様データの名寄せにも利用できます。
= TRIM(文字列)
CONCATENATE
CONCATENATE関数は、文字列を結合するための関数です。「&」を使ってつなげても良いのですが、結合対象が複数ある場合には関数を利用する方が便利です。
= CONCATENATE(文字列1, 文字列2, …)
COUNTA
COUNTA関数は、選択範囲において空白以外のセルの個数をカウントして返す関数です。「数値」が含まれるセルの個数を返す「COUNT」関数と混同しないよう注意が必要です。類似企業選定プロセスの過程で、一定の基準を設けて当てはまったものに「〇」をつけていく場合がありますが、複数の基準に対してそれぞれの類似会社がいくつ「〇」となっているか等をカウントするときに活用できます。
= COUNTA(値1, 値2, …)
COUNTIF
COUNTIF関数は、選択範囲のうち、検索条件に一致したセルの個数をカウントして返す関数です。類似企業選定プロセスにおけるロングリストからショートリストへの絞り込みの際に便利です。具体的には、ロングリスト上の企業のBusiness DescriptionやProductsに特定のワードが含まれているかどうかを機械的に調べる際に利用できます。ワイルドカードを上手に使えば、以下のような結果を得ることが可能となります。以下の例におけるB3セルの関数は「=COUNTIF($A3,”*”&B$2&”*”)」という関数になっています。
= COUNTIF(範囲, 検索条件)
その他覚えておくと便利な関数8選
ROW
ROW関数は、行数をカウントする関数です。QA表等を作成する際に横に質問番号を振りますが、そういった場合に利用します。
= ROW(参照)
AVERAGEIF
AVERAGEIF関数はSUM関数のAVERAGEバージョンだと思ってください。私はあまり利用しませんが、遭遇する場合もあるのでどんな関数なのかは理解しておくのが無難です。
= AVERAGEIF(範囲, 条件, 平均対象範囲)
SUMPRODUCT
SUMPRODUCT関数は、引数に渡した配列の数値を掛け算し、その結果を合計するというプロセスを一気に実現することができる関数です。一定の信者がいる関数であると認識していますが、私は計算プロセスが一目でわかるワークシートを好むのであまり利用しません。
= SUMPRODUCT(配列1, 配列2, …)
INDIRECT
INDIRECT関数は、指定したセル番地に含まれたセルの文字列(値)を返す関数です。上手に利用すればリンクを切った外部ファイルのセルを参照できるようになるため(指定したディレクトリから外部ファイルを開いている時のみ参照可能)、私は分析作業の時等に好んで使っています。
= INDIRECT(参照文字列, 参照形式)
TRANSPOSE
TRANSPOSE関数は、配列の行と列を入れ替える関数です。配列を取り扱う関数になるため、式入力後に「Ctrl」+「Shift」+「Enter」を押下する必要がある等少し特殊な関数です。
= TRANSPOSE(配列)
OFFSET
OFFSET関数は、第一引数である基準セルから第二引数及び第三引数で指定する縦横移動先のセルまたはレンジを返す関数です。レンジを指定する場合は、第四引数と第五引数を利用します。一定のファンがいる関数だと理解していますが、この関数でないと実現できないというケースに当たったことがないため私はほとんど利用しません。
= OFFSET(参照, 行数, 列数, 高さ, 幅)
EDATE
EDATE関数は、開始日から起算して何ヶ月前もしくは何ヶ月後かの日付を返す関数です。EOMONTH関数と区別して覚えておきましょう。
= EDATE(開始日, 月)
IFERROR
IFERROR関数は、セルの値がエラーで返った時に特定の値を表示させることができる関数です。ワークシートの体裁を整える時に利用することが多いですが、エラーを見落とす原因にもなるため、使用には注意が必要です。
= IFERROR(値, エラーの場合の値)
まとめ
ここまで読んでくださってありがとうございます。馴染みのある関数もあったと思いますが、30個も関数が並ぶと結構ボリューミーで読むのも大変だったのではないかと推察します。
冒頭にも書きましたが、上で紹介した関数すべてを完璧に使いこなせる必要はありません。私もすべての使い方を完全に覚えているわけではありませんし、自分にとって使いやすい関数がある程度確立されているため、どうしてもそれらを優先的に使ってしまいがちです。一方で、それはそれで良いと思っていて、結果としてメンテナビリティが高く、かつレビューのしやすいワークシートが作成できれば良いと考えています。
当記事で紹介した記事を参考に、ご自身のEXCELワークシート作成スタイルを確立していただければ幸いです。
TIPS:関数説明においては「=」から書き始める形で紹介しましたが、EXCEL関数は「+」から書き始めることも可能です。「+」の方がキーボードの配置の都合上押しやすいと思うので、私は「+」スタートを推奨しています。
NOTEでEXCELショートカットキーの紹介をしていますので、関心のある方はそちらもご参照ください!
以上です!
コメント