Konwersja daty w formacie Excel na ciąg


125

W komórce arkusza Excela mam wartość daty taką jak:

01/01/2010 14:30:00

Chcę przekonwertować tę datę na tekst, a także chcę, aby tekst wyglądał dokładnie tak, jak data. Zatem wartość Date 01/01/2010 14:30:00powinna wyglądać tak01/01/2010 14:30:00 ale wewnętrznie powinna to być Text.

Jak mogę to zrobić w programie Excel?


6
Wielu snobistycznych programistów powiedziałoby, że Excel nie jest środowiskiem programistycznym, więc może zamknąć to pytanie. Mam nadzieję, że nie, ale tylko po to, żeby cię ostrzec.
Nick Fortescue,

4
Excel może nie być pełnowartościowym IDE, ale jeśli masz dane w Excelu i potrzebujesz wyników w Excelu, niektóre programy VBA mają wszelkiego rodzaju sens.
brichins

Odpowiedzi:


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

(Czas 24-godzinny)

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

(czas standardowy)


3
Pełne odniesienie do funkcji TEKST, zwłaszcza po to, aby wiedzieć, jak ustawić formaty: zobacz Wytyczne dotyczące formatów daty i czasu na tej stronie office.microsoft.com/en-us/excel-help/ ...
codea

Kiedy próbuję wykonać tę konwersję, pojawia się „#AD?” tekst i mówi, że coś jest nie tak.
AloneInTheDark

1
@AloneInTheDark Kiedy podążasz za linkiem z codea, formaty działają, ale tylko jeśli masz system operacyjny Windows, który używa formatów angielskich. Mój używa holenderskich formatów, co oznacza, że ​​na przykład „DD / MM / RRRR gg: mm: ss” staje się „DD / MM / JJJJ uu: mm: ss”, ponieważ w języku niderlandzkim „rok” to „jaar” i „godzina” to „uur”, tj. inne litery początkowe (podczas gdy „dzień”, „miesiąc”, „minuty” i „sekundy” zaczynają się tymi samymi literami w języku niderlandzkim i angielskim). Zasadniczo przetłumacz początkowe litery formatów na język swojego systemu operacyjnego.
Sem Vanmeenen

3
I odwrotna konwersja jest wykonywana zDATEVALUE("01/01/2010")
Zenadix

Jakikolwiek sposób na użycie formatu, którego już używam do wyświetlania daty, bez konieczności określania go?
palswim

8

Oto podejście do 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

Jeśli szukasz rozwiązania bez programowania, pytanie należy przenieść do SuperUser.


6

Oto inna opcja. Użyj wbudowanego kreatora Excela „Tekst na kolumny”. Znajduje się na karcie Dane w programie Excel 2007.

Jeśli masz wybraną jedną kolumnę, ustawienia domyślne typu pliku i ograniczników powinny działać, a następnie pojawi się monit o zmianę formatu danych kolumny. Wybór tekstu zmusza go do sformatowania tekstu, aby upewnić się, że nie jest przechowywany jako data.


4

W niektórych kontekstach użycie znaku „wcześniej” zadziała, ale jeśli zapiszesz do CSV i załadujesz ponownie, jest to niemożliwe.

'01/01/2010 14:30:00

4

Nie udało się uruchomić formuły TEKST ()

Najłatwiejszym rozwiązaniem było skopiowanie wklejania do Notatnika i powrót do programu Excel z kolumną ustawioną na Tekst przed wklejeniem

Lub możesz zrobić to samo z taką formułą

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


1
Głosowano za, ponieważ w moim rozumieniu jest to jedyna metoda pracy, która nie podlega ustawieniom językowym. Jeśli zamierzasz udostępniać swoją pracę, użycie TEKSTU () przyniesie Ci kłopoty. Nawet w jednym kraju (np. W Niemczech) znajdziesz ludzi z konfiguracją niemiecką i angielską.
Dr. V

1
wielkie dzięki i upvote! To działa dla mnie, ponieważ nie mogę używać = TEXT (formuły z biblioteki Pythona)
lestat_kim

1

Jeśli nie używasz programowania, wykonaj następujące czynności (1) wybierz kolumnę (2) kliknij prawym przyciskiem myszy i wybierz opcję Formatuj komórki (3) Wybierz opcję „Niestandardowe” (4) Tuż pod „Typ:” wpisz dd / mm / rrrr gg: mm : ss


0

W programie Excel 2010 odpowiedź marg działa tylko w przypadku niektórych danych, które miałem w arkuszu kalkulacyjnym (został zaimportowany). Poniższe rozwiązanie działało na wszystkich danych.

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

Nie mam pojęcia, w którym roku opublikowano pytanie; teraz może być stary. Tak więc spodziewam się, że moja odpowiedź będzie bardziej odniesieniem do przyszłych podobnych pytań po moim poście.

Nie wiem, czy ktokolwiek tam już udzielił odpowiedzi podobnej do tej, którą zamierzam udzielić, co może skutkować - myślę - najprostszą, najbardziej bezpośrednią i najbardziej skuteczną: jeśli ktoś już ją udzielił, przepraszam , ale tego nie widziałem. Tutaj moja odpowiedź przy użyciu CStr zamiast TEXT:

Zakładając, że komórka A1 zawiera datę i używa kodu VBA:

Dim strDate As String

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

Możesz później manipulować nim jak zwykłym ciągiem za pomocą funkcji smyczkowych (MID, LEFT, RIGHT, LEN, CONCATENATE (&) itp.)


-1

Wybrana odpowiedź nie zadziałała, ponieważ program Excel nadal nie konwertował tekstu. Oto moje rozwiązanie.

Powiedzmy, że w pierwszej kolumnie, A, masz dane typu, 2016/03/25 21:20:00ale są one przechowywane jako tekst. Następnie w kolumnie B napisz, =DATEVALUE(A1)aw kolumnie C napisz=TIMEVALUE(A1) .

Następnie w kolumnie D =B1+C1dodaj formaty liczbowe daty i godziny.

Na koniec skopiuj wartości z D do kolumny E, klikając prawym przyciskiem kolumnę E i wybierz Paste Special -> Paste as Values.

Podświetl wartości liczbowe w kolumnie E i zmień typ danych na bieżąco - wolę używać niestandardowej daty formularza YYYY-MM-DD HH:MM:SS.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.