• 締切済み

日付を抜き出したい

画像のようにA2~A3に文字列で日付が入力されています。 B2:C3に日付形式でA2に入力されている日付を”ー"で分けて西暦をつけて表示したいと考えています。 D2には開始日の日付の前日の日付を表示したいと考えています 年が変わった場合には翌年の日付を表示するにはどのような式を入力すればいいでしょうか。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.6

以下のようなことを心配する必要はないかもしれませんが、算式の使い方が不明なので、参考にしてください。質問の意図とは合っていないかもしれません。 このような月・日の入力の年を算式で補完しようとするのは、検証が大変でしょう。 実際、業務実績を月日の入力で作っている部署がありました。「年」は未入力なので頑張って算式で補完していたようでした。 しかし、業務実績は年間通じての累積データで、会議報告月の前月に作ったり、報告月月初めに作るので、年なしのExcelの日付がシステム日付に左右されて年月がおかしくなっていました。まずかったのは、年が変われば過去実績の年月が変わってしまうのと、12月から1月にかけての日付が、どちらの年を表すかExcel任せ(算式)になっていることでした。担当者にとっては、「年」が見えないので正しく入力されていると思ってしまっていたわけです。業務案件の期間には数年を要する案件もあり、「年なし」の月日データでは算式では判断できない訳です。[No.2]さんの書かれている通りでしょう。さらに、質問のように「年月」を文字列で入力していると、「年の判定」や「-の前後のどちらの月日が年またぎをしているか、していないかの判定やその期間」の計算はほぼ不可能でしょう。ただし、そのようなデータはないのならば関数の対応も可能でしょう。 例えば、質問の事例で、[2018/]12/24-[2019/]9/10 の場合、どう判定するか難しいところです。算式を使う場合は、過去の計算結果も検証が必要になります。特に年が変わるときは詳しく調べることが必要です。算式は、全ての場合に関しての検証が必要になります。フィルターや並べ替えでおかしなことが起きたりします。 上記の部署の処理を正確にするようにとの指示があったんですが、「入力(年月)の都合で、(不正確な)算式を作っている」ことが問題だと明らかなので、「月日」の入力を「年月日」に変更し、その日付を使っている箇所の関数を削除したり、簡略化し、処理も機能を使うようにしました。報告書の月日を年月日に変換する(検証も必要)ことが本来の仕事なのか、年月日を入力することで(検証などの)負荷も減ることを納得してもらい処理の変更を行いました。 ご参考に。

  • SI299792
  • ベストアンサー率47% (777/1627)
回答No.5

年はシステム年を使います。 >年が変わった場合には翌年の日付 これを実現するため、C2の式は長くなりました。 B2 =LEFT(A2,FIND("-",A2&"-")-1)+0 C2 =(YEAR(TODAY())+(LEFT(A2,FIND("-",A2&"-")-1)+0>(MID(A2,IFERROR(FIND("-",A2),0)+1,99)+0))&"/"&MID(A2,IFERROR(FIND("-",A2),0)+1,99))+0 D2 =B2-1 問題は、今日が2020/1/1の場合です。 当然、開始日 20201201 になります。 B2 =LEFT(A2,FIND("-",A2&"-")-1)+0 C2 =(YEAR(TODAY())+(LEFT(A2,FIND("-",A2&"-")-1)+0>(MID(A2,IFERROR(FIND("-",A2),0)+1,99)+0))&"/"&MID(A2,IFERROR(FIND("-",A2),0)+1,99))+0 D2 =B2-1 セルの書式設定、ユーザー定義で「YYYYMMDD」にします。

  • msMike
  • ベストアンサー率20% (364/1805)
回答No.4

[No.3]への補足、 全セルを yyyymmdd に書式設定しておくこと。

  • msMike
  • ベストアンサー率20% (364/1805)
回答No.3

B2: =IFERROR(IF(FIND("-",A2),LEFT(A2,FIND("-",A2)-1)*1),IF(ISNUMBER(A2),A2,A2*1)) C2: =IFERROR(IF(FIND("-",A2),MID(A2,FIND("-",A2)+1,9)*1),"") D2: =IFERROR(IF(FIND("-",A2),B2-1),"") 範囲 B2:D2 を下方にオートフィル

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルの基本的な知識の勉強不足による無理な要求です。 エクセルのシートで日付を文字列で持つことが、素人的です。 コンピュター的に、年を加えると、別の日付を、シートに同居させておいて、区別しろと言うのはおかしいでしょう。 関数しかできないレベルだろうから、現在日付を勘案することもできない。 エクセルの日付は「日付シリアル値」でシートに持って、表示形式で、好みの 書式に(年を省くも含め)するのです。

  • okwavey3
  • ベストアンサー率19% (147/761)
回答No.1

そもそもA列の値だけで年はわからない。 日付型のデータの表示項目が月日しかないのとは違い、単純に年を表す情報がその文字列にはない。 ないものをあることにする事は出来ません。 特定のルールに基づいて捕捉するならルールが必要で、そのルールに関しては何ら説明がないので出来ません。

関連するQ&A

専門家に質問してみよう