Преобразование даты Excel в строку

в ячейке на листе Excel у меня есть значение даты, например:

01/01/2010 14:30:00

Я хочу преобразовать эту дату в текст, а также хочу, чтобы текст выглядел точно так же, как дата. Таким образом, значение даты 01/01/2010 14:30:00 должен выглядеть как 01/01/2010 14:30:00 но внутренне это должен быть текст.

как я могу сделать это в Excel?

9 ответов


=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.

Если у вас выбран один столбец, должны работать значения по умолчанию для типа файла и разделителей, затем он предложит вам изменить формат данных столбца. Выбор текста принудительно переводит его в текстовый формат, чтобы убедиться, что он не хранится как дата.


в некоторых контекстах использование символа " заранее будет работать, но если вы сохраните в CSV и загрузите снова, это невозможно.

'01/01/2010 14:30:00

Если вы не используете программирования выполните следующие действия (1) Выберите столбец (2) щелкните правой кнопкой мыши и выберите Формат ячеек (3) Выберите "Custom" (4) как раз под "типом:" тип dd / mm / yyyy hh: mm: ss


В Excel 2010 ответ Марг работал только для некоторых данных, которые у меня были в моей электронной таблице (она была импортирована). Следующее решение работало со всеми данными.

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

Я понятия не имею о годе публикации вопроса; теперь он может быть старым. Итак, я ожидаю, что мой ответ будет больше ориентиром для будущих подобных вопросов после моего поста.

ячейка A1 Asuming содержит дату и использует код VBA:

Dim strDate As String

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

после этого вы можете манипулировать им как любой обычной строкой, используя строковые функции (MID, LEFT, RIGHT, LEN, CONCATENATE ( & ) и т. д.)


не удалось заставить формулу TEXT() работать

самым простым решением было скопировать вставить в блокнот и обратно в Excel со столбцом, установленным в текст перед вставкой

или вы можете сделать то же самое с формулой такой

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


выбранный ответ не работал для меня, поскольку Excel все еще не преобразовывал текст на сегодняшний день. Вот мое решение.

скажем, что в первом столбце, A, у вас есть данные типа 2016/03/25 21:20:00 но хранится как текст. Затем в столбце B пишите =DATEVALUE(A1) и в столбце C напишите =TIMEVALUE(A1).

затем в столбце D делать =B1+C1 для добавления числовых форматов даты и времени.

наконец, скопируйте значения из D в столбец E, щелкнув правой кнопкой мыши в столбце E и выберите Paste Special -> Paste as Values.

выделите числовые значения в столбце E и измените тип данных на дату - я предпочитаю использовать пользовательскую дату формы YYYY-MM-DD HH:MM:SS.