「20200910」のような数字の羅列でも、見るぶんには日付として認識できますので問題ないのですが、日付の計算をしたいときや、表示形式を〇月〇日に変更したいとき等は、このままでは上手くできません。
日付としてきちんとExcelに認識してもらわないといけません。
以下のように「関数を使わない」方法と「関数を使う」方法の2通りをご紹介します。
「20200910」のような数字の羅列でも、見るぶんには日付として認識できますので問題ないのですが、日付の計算をしたいときや、表示形式を〇月〇日に変更したいとき等は、このままでは上手くできません。
日付としてきちんとExcelに認識してもらわないといけません。
以下のように「関数を使わない」方法と「関数を使う」方法の2通りをご紹介します。
日数を数える基本の関数は「DATEDIF関数」です。
こちらはExcelの関数の挿入ダイアログからは表示されませんので、手入力となります。
しかし難しく考えることはありません。
「=DATEDIF(開始日,終了日,単位)」のように入力するだけです。
ここで「単位」について説明しておきたいと思います。
年数を出したい、月数を出したい、日数を出したい、という条件に応じて以下のようになります。
単位 | 戻り値 |
Y | 期間の年数を求めます。 |
M | 期間の月数を求めます。 |
D | 期間の日数を求めます。 |
MD | 開始日から終了日までの日数です。 日付の月数および年数は無視されます。※既知の問題あり |
YM | 開始日から終了日までの月数です。 日付の日数および年数は無視されます。 |
YD | 開始日から終了日までの日数です。 日付の年数は無視されます。 |
実際に関数を作成してみましょう。
Excel2016やOffice365 Proplusになってから、オプションのユーザー設定リストにアルファベットを登録しても、小文字で入力できずに難儀している人も多いと思います。
そういった場合に便利なのが関数で挿入する方法です。
以前こちらでも紹介させて頂きました【オートフィルコピーでアルファベットを連続挿入したい】が、これを少し工夫して小文字に変化させます。
時間の表示を例えば「98:30」(98時間30分)と表示してるとします。(セルの書式設定のユーザー定義で[h]:mmとしてます)
これを「98.5」と小数点表示にしたい、かつ30分未満なら0.5で、30分以上なら1として表示したい場合です。
「98.5」なら分が30分以上になるので「99」の表示になります。
以下のようになります。
例えば2つの比較したいデータがある時に、「〇〇〇」というものがもう片方のデータの中のどこにあるのか?を探すときに便利です。
ここでは式の作りを分かりやすく把握するために、同ファイル同シート内に2つのデータを作成して比較しています。
別シートや別ファイルでももちろん作成可能です。
画像はExcel2016を使用していますが、古いバージョンでもMATCH関数はあるので互換性があります。
下図のような場合
Excel2016やoffice365 Pro Plus で使えるようになったMAXIFS関数MINIFS関数です。
従来は条件を指定した中で最大値や最小値を出すのは結構大変でした。
※古いExcelバージョンでは以下の式を使ってください。
指定した条件の中から最大値を抽出する(MAX)
指定した条件の中から最小値を抽出する(MIN)[0]を無視する
MAXIFS関数MINIFS関数を使ってみます。
下図のような表があり、その中から条件を指定して「最大値」「最小値」を求めていきます。
Excel2016やoffice365 Pro Plusで使える関数で、FILTER関数というものです。
選択範囲内で検索値が重複してある場合、VLOOKUPでは検索した一番最初の結果しか返してくれませんので、2個目以降の値を返してくることができません。
今までは配列関数を使って「VLOOKUPではできない、検索値が範囲内で重複している場合」のように複雑でしたが、FILTER関数を使えば非常に簡単に抽出できるようになりました。
フィルター機能で抽出するような感じで取り出すことができます。
例えば以下のように表があります。
Excel2016やoffice365 Pro Plusで使える便利な関数です。
今まで条件によって答えを変える場合、例えばAという条件なら答えは◎、Bという条件なら答えは△・・・などと振り分けるとき、
=IF(A2="A","◎",IF(A2="B","△",IF(A2="C"・・・
とIF関数を何度も何度もネスト(入れ子)しないといけませんでした。
Excelのバージョンによってはネストできる個数も少なくなりますし、結構面倒でした。
あらたに使えるようになったIFS関数ではこの煩わしさが解消しました。
条件のネストも127個まで指定できるようになりました。
例えば以下のような表があったときの条件式を作成してみます。
抽出したいものが数値で合計を出したい場合はSUMIFS関数を使えば簡単にできますが、抽出したい値が文字列だった場合はどうしたら良いか?
VLOOKUPをそのまま使うと検索値はひとつだけしか指定できません。
これを応用して、複数列の中から検索値に合致する値の文字列を抽出する方法です。
例えば下図のような表があります。
左端には必ず番号を振っておくのがポイントです。
ここから下図のようなデータに一致するE列の値を抽出してみます。