Excelシートのセルには、次のようなDate値があります。
01/01/2010 14:30:00
その日付をテキストに変換し、そのテキストを日付とまったく同じものにしたいと思います。したがって、01/01/2010 14:30:00
のDate値は01/01/2010 14:30:00
のようになりますが、内部的にはTextになります。
Excelでそれを行うにはどうすればいいですか。
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")
(24時間制)
=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")
(標準時)
これが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に動かされるべきです。
これは別の選択肢です。 Excelの「テキストから列へ」ウィザードを使用します。 Excel 2007の[データ]タブにあります。
1つの列を選択している場合は、ファイルの種類と区切り記号のデフォルトが機能します。その後、列のデータ形式を変更するように求められます。テキストを選択するとテキスト形式になり、日付として保存されないようになります。
コンテキストによっては、前もって '文字を使用しても機能しますが、CSVに保存して再度ロードした場合、これは不可能です。
'01/01/2010 14:30:00
TEXT()式が機能しない
最も簡単な解決策は、貼り付ける前に、列をテキストに設定してメモ帳にコピーし、Excelに戻すことでした。
あるいは、このような式でも同じことができます。
=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)
プログラミングを使用していない場合は、次の手順を実行します。(1)列を選択し(2)右クリックしてセルの書式設定を選択します。(3)[カスタム]を選択します。 :ss
質問が発行された年についてはわかりません。今は古いかもしれません。それで、私の答えは私のポストの後の将来の同様の質問のためのもっと参考になることを期待します。
誰かが私がやろうとしているのと同じような答えをすでに出しているのかどうかはわかりません。しかし、私はそれを見たことがありません。ここで、私の答えはTEXTの代わりにCStrを使っています:
セルA1が日付を含み、VBAコードを使用しているとします。
Dim strDate As String 'Convert to string the value contained in A1 (a date) strDate = CStr([A1].Value)
その後、文字列関数(MID、LEFT、RIGHT、LEN、CONCATENATE(&)など)を使用して通常の文字列として操作できます。
Excel 2010では、 marg's answer スプレッドシートに含まれていた(インポートされた)データの一部に対してのみ機能しました。次の解決策はすべてのデータに対して機能しました。
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