【エクセル中級者向け】IF関数の意外な使い方②【定型文を自動生成する】
AさんAさん

いつも同じような文章を入力するのが手間です。。
特に日付や数値などの部分をいちいち手直しするのが面倒ですし、たまに入力ミスすると恥ずかしいです(苦笑)
何か良い方法はないものですかね?

森田森田

ビジネスでは定型文を報告することはけっこうありますよね。
もっとも役立つのはTEXT関数ですが、成績などによってある程度添える文章のパターンが決まっているのであれば、IF関数も組み合わせると面倒な定型文もほぼ自動でつくることができますよ!
それでは、詳しく解説していきますね!

はじめに

本題に入る前に、この記事がおすすめな人を挙げてみます。

  • ワークシートの値をもとに定型文を報告する機会が多い人
  • エクセルを扱う機会がある人
  • 事務職を目指している人

ちなみに、最低限「IF関数の基礎」を把握している想定での記事となります。
※自信がない方はこちらの記事で学んでください。
【エクセル初心者向け】データの条件分岐を自動化してストレスフリー!IF関数の使い方

定型文の手入力は間違えるリスクがある

たとえば、次のようなルールで定型文を日次で報告しなければならない部署があったとします。

  1. ワークシート上で売上・原価・利益・利益率を日次で実績更新
  2. 1の内容を踏まえて定型文の数値やコメントを手修正のうえ上司へメール報告

ワークシートと定型文の具体的なイメージはそれぞれ以下のとおりですね。

ワークシート

売上・原価・利益・利益率を管理するワークシートは以下のとおりで、実績部分のみを更新するとします。

実績を更新すると、右隣の「達成」にて目標達成していたかどうか、自動判定されます。

具体的には、実績が目標以上であれば”〇”、それ以外は”×”となります。

定型文

定型文のイメージは以下のとおりです。

件名の先頭の日付は報告日(=実績の該当日)に修正が必要、本文中の各指標の値は実績の値へ修正が必要とします。

もし、目標未達の指標があれば、実績の数値の右横に”(未達)”という文言を添え、総評のコメントとして、4つの指標中いくつ目標未達であったかのコメントを入力するとします。

なお、4つの指標がすべて目標達成の場合は、”本日は全項目目標達成しています。”というコメントになります。

これらのルールを守った上で、毎日定型文の内容を手修正するとなると、入力ミスを起こす可能性がありますし、何よりも面倒ですね。

IF関数とTEXT関数を使って定型文を自動生成する!

解決方法としておすすめなのは、ワークシートに表示されている値を参照し、エクセルワークシート上で数式を用いて自動的に定型文を作成することです。

ここで自動生成された文章をメールへコピー&ペーストすれば、正しい文章を効率的に送ることができますね。

そのために活躍するのは、主にIF関数とTEXT関数です。

なお、今回の例でワークシートの値によって文章が変更されるように数式を組む必要があるのは6セルあり、数式の種類としては4種類です。

  1. 件名(B9セル)
  2. 本文①:売上・原価・利益(B14セル~B16セル)
  3. 本文②:利益率(B17セル)
  4. まとめのコメント(B19セル)

それぞれ以下の黄色に塗りつぶした部分ですね。

それでは、順番にIF関数やTEXT関数をどう使えば良いかを解説していきますね。

【数式1】件名

メールの件名にあたる部分です。

こちらは件名の先頭の日付部分が、日付が入ったF2セルの内容に応じて自動的に切り替わるにしたいわけですね。

よって、F2セルを参照して残りの件名の文字列と”&”[アンパサンド]でつなげば良いのですが、TEXT関数がない状態だと以下のような状態になってしまいます。

これは、セル参照すると、あくまでも参照しているセルの中身の値だけが参照され、表示形式の情報までは引き継がれないために生じる問題なのです。

いわゆる、表示形式が「標準」になるので、今回のような日付はもちろん、時刻や数値、その他特殊な表示形式にしているセルを参照する際は注意が必要になります。

こういった問題を回避するためにTEXT関数を活用していくわけですね。

TEXT関数とは?

TEXT関数は文字列操作関数の一種で、指定した値を任意の表示形式に変更することができる関数です。

TEXT(値,表示形式)

イメージが湧くように、TEXT関数を単独で使ってみましょう。

それでは、日付が入ったF2セルを”m/d”の表示形式に変えてみます。

TEXT関数の引数「表示形式」へ今回の希望の表示形式である”m/d”を指定したため、TEXT関数の結果は”6/14”という値になりましたね。

TEXT関数の引数「表示形式」は、「セルの書式設定」と同じルールなので、状況に応じて表示形式を自由自在に指定すればOKです!

TEXT関数自体、または表示形式についてもっと詳しく知りたい方はこちらの記事をご参照ください。→こちら

TEXT関数(表示形式”m/d”)が含まれた文章の自動生成

では、TEXT関数の概要を理解したところで、実際に件名の文章を自動生成していきましょう。

H2セルの日付については、「TEXT($F$2,"m/d")」のようにTEXT関数で”m/d”形式に変更し、残りの文章は” _日次採算報告”のように””[ダブルクォーテーション]で囲い、TEXT関数とその文章を”&”[アンパサンド]でつないであげればOKです。

以降の数式も文字列部分については、この内容の応用ですので、文字列部分の解説は省略しますね。

【数式2】本文①:売上・原価・利益

ここからはメール本文にあたる部分です。

売上・原価・利益の3行分ですが、こちらはすべて同じ数式で対応できますね。

なお、数式で自動的に切り替わってほしいのは、次の2点です。

  1. 金額を参照の上、千円単位で表示
  2. 目標未達時のみ”(未達)”という文言追加

この1・2を実際に数式で表すと、以下のようになります。

TEXT関数(表示形式”#,千円”)&IF関数が含まれた文章の自動生成

1の部分は、先ほどの【数式1】のようにTEXT関数を用います。

今回のTEXT関数の引数「表示形式」は、数値を千円単位にするための表示形式となる”#,千円”にしています。

なお、”売上”などの項目名を示すA列も数式中で参照していますが、こちらは純粋な文字列のため、TEXT関数をそもそも使う必要がないですよ。

2の部分は、D列が目標未達を表す”×”の場合に”(未達)”という文字列を、それ以外はブランクとなる””を返すIF関数を数式の最後に”&”[アンパサンド]でつなぎます。

IF関数の内容自体は非常にオーソドックスな内容ですね。

【数式3】本文②:利益率

こちらは【数式2】とTEXT関数の引数「表示形式」の部分のみ違います。

TEXT関数(表示形式”0.0%”)&IF関数が含まれた文章の自動生成

今回表示したいのはパーセンテージなので、TEXT関数の引数「表示形式」は”0.0%”にしています。

あとは、【数式2】とまったく一緒ですね。

【数式4】まとめのコメント

まとめのコメントはIF関数とCOUNTIF関数を用いて、4つの指標中いくつ目標未達であったか調べ、未達項目がある場合は”本日の目標未達項目は●項目でした。”、すべて目標達成の場合は、”本日は全項目目標達成しています。”と、目標達成状況に応じて文章が自動的に切り替わるようにしていきます。

COUNTIF関数とは?

COUNTIF関数は統計関数の一種で、検索条件に指定したセルの個数をカウントする関数です。

COUNTIF(範囲,検索条件)

イメージが湧くように、COUNTIF関数を単独で使ってみましょう。

それでは、4つの指標中いくつ目標未達あるかをカウントしてみます。

D2セル~D4セル中に”×”が3セルあったので、COUNTIF関数の結果は”3”になりました。

IF関数&COUNTIF関数が含まれた文章の自動生成

では、COUNTIF関数の概要を理解したところで、本題に戻ります。

4つの指標中で目標未達であったか調べるために、IF関数の引数「論理式」は「COUNTIF($D$2:$D$5,"×")>0」としています。

結果、未達項目が1つでもある場合は、IF関数の引数「真の場合」に指定した"本日の目標未達項目は"&COUNTIF($D$2:$D$5,"×")&"項目でした。"という文章になります。

もちろん、未達項目の数を示す部分は「COUNTIF($D$2:$D$5,"×")」で数値が変動するようにしていますね。

最後に、すべて目標達成の場合は、IF関数の引数「偽の場合」に指定した"本日は全項目目標達成しています。"という文章になりますよ。

サンプルファイルで練習しよう!

では、今回のテクニックを使ってみましょう!

サンプルの条件

今回の題材は次のとおりです。

「定型文」というシートの1~5行目には売上・原価・利益・利益率の4項目の「目標」・「実績」・「達成」を示す表があります。

そして、9行目以降に上記の表のデータを報告するための定型文があります。
(今までの解説内容ですね。)

9行目以降の黄色に塗りつぶしされたセルは現在文字列ですが、今までの解説をもとに実際にIF関数やTEXT関数、COUNTIF関数を用いて、2~5行目のデータに合わせて文章が自動的に切り替わるように数式をセットしてみましょう!

実際に練習してみよう!

可能であれば、以下のサンプルファイルをダウンロードして実際に操作してみてください。

サンプルファイル_サンプルファイル_IF関数_定型文自動生成
※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ファイルを開いたら次の手順を実施してください。

  1. 「定型文」シートを選択
  2. B9セルの値を「=TEXT($F$2,"m/d")&"_日次採算報告"」へ修正
    ※赤字の部分をコピーして貼り付けてください。
  3. B14セルの値を「="・"&A2&":"&TEXT(C2,"#,千円")&IF(D2="×","(未達成)","")」へ修正
    ※赤字の部分をコピーして貼り付けてください。
  4. B14セルをコピー
  5. B15~B16セルへ貼り付け(ペースト)
  6. B17セルの値を「="・"&A5&":"&TEXT(C5,"0.0%")&IF(D5="×","(未達)","")」へ修正
    ※赤字の部分をコピーして貼り付けてください。
  7. B19セルの値を「=IF(COUNTIF($D$2:$D$5,"×")>0,"本日の目標未達項目は"&COUNTIF($D$2:$D$5,"×")&"項目でした。","本日は全項目目標達成しています。")」へ修正
    ※赤字の部分をコピーして貼り付けてください。

B9セル~B19セルの各セルの数式が以下のとおりであればOKです!

2~5行目の各値を変えてみて、B9セル~B19セルの文章がどう変わるかも試してみてくださいね。

もし、表や数式を加工してしまった場合は、上記手順を実施済みの「定型文 (関数あり)」シートもサンプルファイル内に用意していますので、必要に応じてご活用くださいね。

さいごに

今回の例は、実際はわかりやすさを重視したので、かなり簡易な内容でしたが、ビジネスではこのような定型の文章を良く使います。

IF関数やTEXT関数を工夫すれば、意外と文章の自動生成は可能ですので、お試しくださいね!

他にも、IF関数を便利に使うための応用テクニックを私の書籍で紹介しているので、こちらもご参考にしていただければと思います。

▼IF関数を基本から応用まで体系的に学びたい方向け

▼IF関数の応用テクニックに加えて、その他VLOOKUP関数なども学びたい方向け

ご参考になれば幸いですm(_ _)m

森田森田

今回のテクニックに加えてVBAも覚えれば、この文章を直接Outlookでメール自動生成までできちゃいます!
英語の定型メールを送信する事務作業がたまに発生する業務をしていた際は、それでかなり精神的負荷を下げることができました。
工夫すればするほど業務は楽になるってことなので、少しずつテクニックを身につけていきましょう!