Excel。ピリオドで区切られた日付では計算でつかえない!どうしたらいいの?
<DATE・LEFT・MID・RIGHT関数>
見た目、日付とわかるからという感じで、何も考えないで入力している場合、Excelの機能を使えないということが、ちょこちょこあります。
例えば、次のような日付計算。
B4には、B2-B3。
C4には、C3-C3という数式が設定してあります。
B4には、#VALUE!というエラーが表示されていますが、C4は、普通に減算された結果が算出しています。
何が違うのかというと、B列の日付は、「.(ピリオド)」で区切られた日付になっています。
「.(ピリオド)」で区切られいる日付は、見た目が日付なだけで、Excelとしては、日付と認識していません。
「文字」として認識されているので、#VALUE!というエラーが表示されてしまっているのです。
最初から「/(スラッシュ)」で区切っていれば、問題はなかったのです。
今回のように、2件程度のデータならば、入力し直すことも容易ですが、件数が多い場合は、絶望的な作業となってしまいます。
そこで、「.(ピリオド)」を「/(スラッシュ)」に変換する方法を紹介していきます。
とても単純ですが、現場レベルとしては重要な作業です。
C2には、次の数式を設定してあります。
=DATE(LEFT(B2,4),MID(B2,6,2),RIGHT(B2,2))
年月日を別々のセルに算出するならば、YEAR関数やMONTH関数などをつかって、抽出するわけです。
ところが、「.(ピリオド)」で区切ってしまっていると文字型になってしまっているので、YEAR関数などの日付系の関数を使うことができません。
文字型のデータならば、LEFT関数・MID関数・RIGHT関数をつかうことで、対応することができます。
そして、DATE関数をつかうことで、日付にすることができます。
DATE関数の最初の引数は、「年」の設定です。
左から4文字が年ですから、
LEFT(B2,4)
と設定することで、「年」を抽出することができます。
次の引数ですが、左から6文字目からの2文字を抽出する必要があります。
文字列の途中の文字を抽出したいので、MID関数を使います。
MID(B2,6,2)
と設定することで、「月」を抽出することができます。
最後の引数ですが、MID関数を使うよりも、右から数えた方が簡単なので、RIGHT関数を使います。
RIGHT(B2,2)
と設定することで、「日」を抽出することができます。
あとは、オートフィルで数式をコピーしています。
ただし、日付にはなるのですが、「0(ゼロ付)」の日付になっていません。
そのため、表示形式のユーザー定義をつかって、「0(ゼロ付)」の日付にしてあげるといいですね。
なお、TEXT関数をつかってしまうと、「0(ゼロ付)」の日付にすることはできるのですが、日付文字型になってしまうので、注意が必要です。
入力するという作業では、今回のように、もったいないというか、あとで、面倒な作業が発生することもありますので、ちょっと気を遣う必要がありますね。