Excelの日付から文字列への変換


125

Excelシートのセルには、次のような日付の値があります。

01/01/2010 14:30:00

その日付をテキストに変換し、テキストを日付のように見せたいです。したがって、日付の値は次の01/01/2010 14:30:00ようになりますが01/01/2010 14:30:00、内部的にはテキストである必要があります。

Excelでそれを行うにはどうすればよいですか?


6
多くの洗練されたプログラマーは、excelはプログラミング環境ではないと主張するので、この質問を閉じるかもしれません。私は彼らがそうしないことを願っていますが、あなたに警告するだけです。
Nick Fortescue

4
Excelは本格的なIDEではないかもしれませんが、Excelでデータが提供され、Excelで結果が必要な場合、一部のVBAプログラミングはあらゆる種類の意味を持ちます。
brichins

回答:


241
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(24時間制)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")

(標準時)


3
特に書式の設定方法を知るためのTEXT関数の完全なリファレンス:このページの日付と時刻の書式に関するガイドラインを参照してください。office.microsoft.com/ en
us /

この変換を行おうとすると、「#AD?」テキストとそれは何かが間違っていると言います。
AloneInTheDark 14年

1
@AloneInTheDark codeaからのリンクをたどると、フォーマットは機能しますが、英語のフォーマットを使用するWindows OSがある場合のみです。Mineはオランダ語の形式を使用します。たとえば、「DD / MM / YYYY hh:mm:ss」は「DD / MM / JJJJ uu:mm:ss」になります。これは、オランダ語では「年」が「jaar」と「hour」であるためです。 「uur」、つまり他の開始文字(「日」、「月」、「分」、「秒」はオランダ語と英語の両方で同じ文字で始まる)。基本的に、フォーマットの最初の文字をOSの言語に翻訳します。
Sem Vanmeenen 14

3
そして、反対の変換が行われますDATEVALUE("01/01/2010")
Zenadix '11

指定することなく、日付表示にすでに使用しているフォーマットを使用する方法はありますか?
palswim 2016

8

VBAアプローチは次のとおりです。

Sub change()
    toText Sheets(1).Range("A1:F20")
End Sub

Sub toText(target As Range)
Dim cell As Range
    For Each cell In target
        cell.Value = cell.Text
        cell.NumberFormat = "@"
    Next cell
End Sub

プログラミングなしのソリューションを探している場合は、質問をSuperUserに移動する必要があります。


6

ここに別のオプションがあります。Excelの組み込みの「テキストから列へ」ウィザードを使用します。Excel 2007の[データ]タブにあります。

1つの列を選択している場合は、ファイルタイプと区切り文字のデフォルトが機能するはずであり、列のデータ形式を変更するように求められます。テキストを選択すると、テキスト形式になり、日付として保存されないようになります。


4

一部のコンテキストでは、 '文字を事前に使用して機能しますが、CSVに保存して再度ロードすると、これは不可能です。

'01/01/2010 14:30:00

4

TEXT()式を機能させることができませんでした

最も簡単な解決策は、メモ帳に貼り付けてからExcelにコピーし、列をテキストに設定してから貼り付けて戻すことでした。

または、あなたはこのような式で同じことをすることができます

=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)


1
私の理解では、これは言語設定の影響を受けない唯一の有効な方法であるため、賛成です。作品を共有したい場合は、TEXT()を使用すると問題が発生します。1つの国(ドイツなど)内であっても、ドイツ語と英語の設定を持つ人々を見つけるでしょう。
V博士

1
大きな感謝と賛成!= TEXT(Pythonライブラリの数式)を使用できないため、それは私にとっては
うまくいき

1

プログラミングを使用していない場合は、次の操作を行います(1)列を選択します(2)右クリックして[セルの書式設定]を選択します(3)[カスタム]を選択します(4)[タイプ:]の直下にdd / mm / yyyy hh:mmと入力します:ss


0

Excel 2010では、margの答えは、スプレッドシートにある(インポートされた)データの一部に対してのみ機能しました。次の解決策はすべてのデータを処理しました。

Sub change()
    toText Selection
End Sub

Sub toText(target As range)
Dim cell As range
Dim txt As String
    For Each cell In target
        txt = cell.text
        cell.NumberFormat = "@"
        cell.Value2 = txt
    Next cell
End Sub

0

質問が発行された年はわかりません。今は古いかもしれません。ですから、私の回答は、投稿後の今後の同様の質問の参考になると思います。

私が与えようとしているのと同じような答えをすでに誰かが与えているかどうかはわかりません。その結果、-私は-最も単純で最も直接的で最も効果的な結果になる可能性があります。誰かがすでに与えた場合は、謝罪します、まだ見たことがありません。ここでは、TEXTの代わりにCStrを使用した私の答え:

セルA1に日付が含まれていると仮定し、VBAコードを使用します。

Dim strDate As String

'Convert to string the value contained in A1 (a date)
strDate = CStr([A1].Value)

その後、文字列関数(MI​​D、LEFT、RIGHT、LEN、CONCATENATE(&)など)を使用して、通常の文字列として操作できます。


-1

Excelがまだテキストを日付に変換していなかったため、選択した答えは私にとってはうまくいきませんでした。これが私の解決策です。

最初の列Aに、タイプのデータ2016/03/25 21:20:00があるが、テキストとして保存されているとしましょう。次に、列Bに書き込み=DATEVALUE(A1)、列Cに書き込み=TIMEVALUE(A1)ます。

次に、列D =B1+C1で、日付と時刻の数値形式を追加します。

最後に、E列を右クリックしてDからE列に値をコピーし、を選択しますPaste Special -> Paste as Values

列Eの数値を強調表示し、データ型を日付に変更しますYYYY-MM-DD HH:MM:SS。フォームのカスタム日付を使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.