Перетворення дати в Excel до рядка


125

У комірці на аркуші Excel у мене є значення дати на зразок:

01/01/2010 14:30:00

Я хочу перетворити цю дату в текст, а також хочу, щоб текст виглядав точно як дата. Отже, значення Date 01/01/2010 14:30:00має виглядати, 01/01/2010 14:30:00але внутрішньо воно повинно бути Text.

Як я можу це зробити в Excel?


6
Багато програвачів-снобістів стверджують, що excel - це не програмне середовище, тому це може закрити це питання. Я сподіваюся, що вони цього не роблять, а просто для того, щоб попередити вас.
Nick Fortescue

4
Excel може не бути повноцінним IDE, але якщо вам надані дані в Excel і потрібні результати в Excel, деякі програми VBA мають усілякий сенс.
бричін

Відповіді:


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/excel-help / ...
Codea

Коли я намагаюся зробити це перетворення, з'являється "#AD?" текст, і він говорить, що щось не так.
AloneInTheDark

1
@AloneInTheDark Коли ви переходите за посиланням з кодексу, формати працюють, але лише якщо у вас ОС Windows, що використовує англійські формати. Шахта використовує голландські формати, що означає, що, наприклад, "DD / MM / YYYY год / год: мм: ss" стає "DD / MM / JJJJ uu: mm: ss", оскільки в голландській мові "рік" - "яар" і "година" є "uur", тобто інші початкові букви (в той час як "день", "місяць", "хвилини" і "секунди" починаються з однакових букв на голландській та англійській мовах). В основному, перекладіть початкові літери форматів на мову вашої ОС.
Сем Ванменен

3
І зворотне перетворення робиться зDATEVALUE("01/01/2010")
Zenadix

Будь-який спосіб використовувати формат, який я вже використовую для відображення дати, не вказуючи його?
palswim

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.

Якщо у вас вибрано один стовпець, типові типи файлів і роздільники повинні працювати, то він запропонує змінити формат даних стовпця. Вибір тексту примушує його до текстового формату, щоб переконатися, що він не зберігається як дата.


4

У деяких контекстах використання символу 'заздалегідь буде спрацьовувати, але якщо ви збережете в CSV і знову завантажте це неможливо.

'01/01/2010 14:30:00

4

Не вдалося змусити формулу TEXT () працювати

Найпростішим рішенням було скопіювати пасту в Блокнот і повернутися в Excel зі стовпцем, встановленим на Text, перш ніж вставляти назад

Або ви можете зробити те ж саме з такою формулою

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


1
Захищений, тому що, наскільки я розумію, це єдиний робочий метод, який не підлягає мовним налаштуванням. Якщо ви маєте намір поділитися своєю роботою, використання TEXT () доставить вам проблеми. Навіть в одній країні (наприклад, Німеччина) ви знайдете людей з німецькою та англійською конфігураціями.
Доктор V

1
велика подяка та підтримка! Це працює для мене, тому що я не можу використовувати = TEXT (формули бібліотеки python)
lestat_kim

1

Якщо ви не використовуєте програмування, виконайте наступне (1) виберіть стовпчик (2) клацніть правою кнопкою миші та виберіть «Форматування комірок» (3) Виберіть «Користувацький» (4) Тільки під «Тип:» введіть dd / mm / yyyy hh: mm : сс


0

У 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

0

Я не маю уявлення про рік публікації питання; це може бути старим зараз. Тож я очікую, що моя відповідь буде більше орієнтиром для майбутніх подібних питань після моєї публікації.

Я не знаю, чи хтось там уже дав відповідь, аналогічну тій, яку я збираюся дати, що може призвести до того, що я думаю, що є найпростішим, найбільш прямим та найефективнішим: Якщо хтось уже дав це, я вибачаюся , але я цього не бачив. Ось моя відповідь, використовуючи 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 (&) тощо)


-1

Вибрана відповідь не спрацювала для мене, оскільки Excel досі не перетворював текст на сьогоднішній день. Ось моє рішення.

Скажіть, що у першому стовпці "А" у вас є дані типу, 2016/03/25 21:20:00але вони зберігаються як текст. Потім у стовпчик B пишіть =DATEVALUE(A1)і у стовпчик C пишете =TIMEVALUE(A1).

Потім у стовпчик D зробіть, =B1+C1щоб додати числові формати дати та часу.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.