Преобразование Excel в формат строки

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

01/01/2010 14:30:00

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

Как это сделать в Excel?

Ответ 1

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

(24-часовое время)

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

(стандартное время)

Ответ 2

Вот подход 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.

Ответ 3

Вот еще один вариант. Используйте Excel, встроенный в мастер "Text to Columns". Он найден на вкладке "Данные" в Excel 2007.

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

Ответ 4

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

'01/01/2010 14:30:00

Ответ 5

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

Ответ 6

В 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

Ответ 7

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

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

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

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

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

Ответ 8

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

Я не знаю, дал ли кто-нибудь такой ответ, подобный тому, который я собираюсь дать, что может привести к тому, что я считаю самым простым, самым прямым и эффективным: если кто-то уже дал это, Прошу прощения, но я этого не видел. Здесь мой ответ с использованием CStr вместо TEXT:

Аксиальная ячейка 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 (&) и т.д.)