\r\n\r\n
ビジネスデータの分析では、"今日はいくら儲かったのか"、"先週の同じ日と比べてどうなのか "などの質問に答えるために、Excelで日付の値を使うことがよくあります。?「Excelがこれらの値を日付として認識しない場合、これは困難です。
特に、複数のユーザーがこの情報を入力し、他のシステムからコピー&ペーストし、データベースからインポートしている場合、残念ながらこのようなことは珍しいことではありません。
今回は、テキストを日付の値に変換するための4種類のシナリオと解決策を説明します。
Excelで日付を入力する際に、初心者が陥りやすい間違いのひとつに、日、月、年の区切りにフルストップ(半角)を使ってしまうことがあります。
Excelはこれを日付の値として認識せず、テキストとして保存し続けます。しかし、この問題を解決するために、検索と置換ツールを使用することができます。フルストップをスラッシュ(/)に置き換えることで、Excelはこれらの値を自動的に日付として識別します。
検索と置換を実行する列を選択します。
ホーム」→「検索と選択」→「置換」をクリックするか、Ctrl+Hキーを押します。
検索と置換」ウィンドウで、「検索するもの」フィールドにフルストップ(.)を入力しますと入力し、「置き換え」の欄にスラッシュ(/)を入力します。次に、"すべて置き換え "をクリックします。
すべてのフルストップはスラッシュに変換され、Excelは新しいフォーマットを日付として認識します。
スプレッドシートのデータが定期的に変更され、このシナリオの自動化ソリューションが必要な場合、代替関数を使用することができます。
=VALUE(SUBSTITUTE(A2,".","/"))置換関数はテキスト関数であるため、単独で日付に変換することはできません。VALUE関数はテキスト値を数値に変換する関数です。
結果は以下のようになります。値は日付としてフォーマットする必要があります。
ホーム」タブの「番号形式」リストで行うことができます。
ここではフルストップのセパレータを例に挙げましたが、同じ手法であらゆるセパレータを置き換えたり、代用したりすることができます。
以下のような形式で日付を受信する場合は、別の方法が必要です。
このフォーマットは技術的に極めて標準的なものであり、国によって異なる日付の保存方法に関する曖昧さを排除しているためです。しかし、Excelは当初は理解できないだろう。
手動で素早く解決するには、text-to-columnを使用することができます。
変換する値の範囲を選択し、「データ」→「テキストを列に」をクリックします。
テキストを列に変換するウィザードが表示されます。最初の2つのステップで「次へ」をクリックすると、次のような3つ目のステップに進みます。日付を選択し、セルで使用する日付形式をリストから選択します。この例では、YMD形式を扱っています。
数式で解決したい場合は、Date関数で日付を構成することができます。
これをテキスト関数の左、中、右と一緒に使って、セルの内容から日付の3つの部分(日、月、年)を抽出する。
下の式は、例のデータを使ってこれを示している。
=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))この2つのテクニックのどちらかを使えば、どんな8桁の値でも変換することができます。例えば、ddmmyyyフォーマットやmmddyyyyフォーマットで日付を受け取ることができます。
デリミタが原因ではなく、テキスト形式で保存されているため、日付構造がぎこちないことが原因である場合もあります。
以下は、さまざまな構造の日付のリストですが、私たちはこれらを日付として認識することができます。
このようなシナリオの場合、さまざまなテクニックを使って簡単に変換することができます。
今回は、このようなシナリオを処理するための関数として、DATEVALUEとVALUEの2つを紹介したい。
DATEVALUE関数はテキストを日付の値に変換し(見たことがあるかもしれません)、VALUE関数はテキストを一般的な数値に変換するものです。両者の違いはごくわずかです。
上のグラフでは、値の1つに時間情報も含まれている。これは、関数のニュアンスを証明するものだろう。
以下のDATEVALUE式は、各値を日付値に変換する。
=DATEVALUE(A2)4行目の結果から時間が削除されていることに注目してください。この式は厳密に日付の値のみを返しますが、結果は日付としてフォーマットされる必要があります。
以下の式では、VALUE関数を使用しています。
=VALUE(A2)この式は、4行目の結果以外は同じ結果になり、時間値も変わりません。
この結果は、日付と時刻としてフォーマットされるか、または日付としてフォーマットされて時刻の値が隠されます(ただし、削除はされません)。