web-dev-qa-db-ja.com

テキストの日付/時刻をExcelで実際の日時に変換する

私のデータはアプリケーションから抽出され、Excelの日付/時刻のようなテキストが含まれています。 「2016年3月24日午後11時22分07秒」(テキスト)を実際の日付/時刻変換に実際に変換するにはどうすればよいですか?セルをフォーマットしようとしましたが、機能しません。

5
user3085606

日付変換の場合:

=DATEVALUE(TEXT(A1,"MM/DD/YYYY"))

時間変換の場合:

=TIMEVALUE(TEXT(A1,"HH:MM:SS"))

日時変換の場合:

=DATEVALUE(TEXT(A1,"MM/DD/YYYY"))+TIMEVALUE(TEXT(A1,"HH:MM:SS"))

A1に変換したいデータがある場合。

ちなみに、セルを日付/時刻などにフォーマットすることをお勧めします。

お役に立てば幸いです。

4
PaulG

1)DATEVALUE関数を使用してみて、それが機能するかどうかを確認してください。

2)datevalueが常に機能するとは限らないため、より信頼性の高い方法は、テキストを手動で削除し、Excelの日付値に挿入することです。次の機能を組み合わせて使用​​する必要があります。

  • 日付
  • 時間
  • IF
  • 見つける
  • MID
  • 正しい
  • レン

私の意見では、これを行う最も簡単な方法は、複数のヘルパー列を使用してすべてのステップを構築することです。ステップごとに1列。最終的な答えが得られたら、1つの変数が残るまで、ヘルパー列から最終的な数式に数式を置換またはコピーして貼り付けることができます。私がこれを言う理由は、1つの変数のみを参照する最終的な式はかなり長く/醜くなり、タイプミスをしたり、角かっこを忘れたり、何かがうまくいかなかったりすると、トラブルシューティングが非常に難しくなるためです。このアプローチを行ったとき、合計14列を使用しました(最終式を含む)。すべてを1つの数式にまとめると、次のようになります。

DATE(RIGHT(LEFT(A3,FIND(" ",A3)-1),4),LEFT(LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))-1),MID(LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))+1,FIND("/",LEFT(A3,FIND(" ",A3)-1),FIND("/",LEFT(A3,FIND(" ",A3)-1))+1)-FIND("/",LEFT(A3,FIND(" ",A3)-1))-1))+TIME(LEFT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1)+IF(AND(LEFT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1)<12,RIGHT(RIGHT(A3,LEN(A3)-FIND(" ",A3)),2)="AM"),0,12),MID(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1,FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1)-FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))-1),MID(RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)),FIND(":",RIGHT(A3,LEN(A3)-FIND(" ",A3)))+1)+1,2))

セルA3を、フォーマットが必要なテキストとしての時間を含むセルとして設定されていることに注意してください。

3)データリボンの約半分にあるExcelのテキストから列への関数も使用できるはずです。

4)そしてもちろん、オプションとしてVBAを介してコーディングする方法もあります。

1
Forward Ed

唯一の方法はDATEVALUE()経由です。

つまり.

=DATEVALUE(TEXT([@DATE],"YYYY-MM-DD")) + TIMEVALUE(TEXT([@TIME],"HH:MM"))
0
Fandango68