Excel Tarihinden Dize dönüştürme


125

Excel sayfasındaki bir hücrede aşağıdaki gibi bir Tarih değerine sahibim:

01/01/2010 14:30:00

Bu Tarihi Metne dönüştürmek ve ayrıca Metnin tam olarak Tarih gibi görünmesini istiyorum. Bu nedenle, bir Tarih değeri 01/01/2010 14:30:00gibi görünmeli, 01/01/2010 14:30:00ancak dahili olarak Metin olmalıdır.

Bunu Excel'de nasıl yapabilirim?


6
Pek çok züppe programcı, excel'in bir programlama ortamı olmadığını savunabilir, bu yüzden bu soruyu kapatabilir. Umarım yapmazlar, ama sadece sizi uyarmak için.
Nick Fortescue

4
Excel tam gelişmiş bir IDE olmayabilir, ancak size Excel'de veri verilirse ve Excel'de sonuçlara ihtiyacınız varsa, bazı VBA programlamaları her türlü anlam ifade eder.
brichins

Yanıtlar:


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

(24 saatlik zaman)

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

(standart zaman)


3
Özellikle biçimlerin nasıl ayarlanacağını öğrenmek için METİN işlevine tam referans: Bu sayfadaki tarih ve saat biçimleri yönergelerine bakın office.microsoft.com/en-us/excel-help/…
koda

Bu dönüşümü yapmaya çalıştığımda "#AD?" metin ve bir şeylerin ters gittiğini söylüyor.
AloneInTheDark

1
@AloneInTheDark Codea'daki bağlantıyı takip ettiğinizde, formatlar çalışır, ancak yalnızca İngilizce formatları kullanan bir Windows işletim sisteminiz varsa. Benimki, Hollandaca biçimlerini kullanır; bu, örneğin "GG / AA / YYYY ss: dd: ss" nin "GG / AA / JJJJ uu: mm: ss" olduğu anlamına gelir, çünkü Felemenkçe'de "yıl" "jaar" ve "saat" dir "uur" yani diğer başlangıç ​​harfleri ("gün", "ay", "dakika" ve "saniye" hem Hollandaca hem de İngilizce'de aynı harflerle başlarken). Temel olarak, formatların başlangıç ​​harflerini işletim sisteminizin diline çevirin.
Sem Vanmeenen

3
Ve tersi dönüşüm ile yapılırDATEVALUE("01/01/2010")
Zenadix

Tarih görüntüsü için zaten kullandığım formatı belirtmek zorunda kalmadan kullanmanın bir yolu var mı?
palswim

8

İşte bir VBA yaklaşımı:

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

Programlama olmadan bir çözüm arıyorsanız, Soru SuperUser'a taşınmalıdır.


6

İşte başka bir seçenek. Excel'in yerleşik 'Sütunlara Metin' sihirbazını kullanın. Excel 2007'de Veri sekmesinin altında bulunur.

Bir sütun seçtiyseniz, dosya türü ve sınırlayıcılar için varsayılanlar çalışmalıdır, bu durumda sizden sütunun veri formatını değiştirmenizi ister. Metni seçmek, tarih olarak kaydedilmediğinden emin olmak için metni metin biçimine zorlar.


4

Bazı bağlamlarda önceden bir 'karakteri kullanmak işe yarayacaktır, ancak CSV'ye kaydedip tekrar yüklerseniz bu imkansızdır.

'01/01/2010 14:30:00

4

TEXT () formülünün çalışması sağlanamadı

En kolay çözüm, yapıştırmayı Not Defteri'ne kopyalayıp Excel'e geri yapıştırmadan önce Sütunu Metin olarak ayarlayarak geri vermekti.

Ya da aynısını böyle bir formülle yapabilirsiniz

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


1
Olumlu oy verildi, çünkü benim anlayışıma göre, dil ayarlarına tabi olmayan tek çalışma yöntemi bu. Çalışmanızı paylaşmak niyetindeyseniz, TEXT () kullanmak size sorun çıkarır. Tek bir ülkede (örneğin Almanya) bile, Almanca ve İngilizce yapılandırmaları olan insanlar bulacaksınız.
Dr. V

1
büyük teşekkürler ve olumlu oy! Benim için çalışıyor, çünkü = TEXT (python kitaplığı formülleri)
kullanamıyorum

1

Programlamayı kullanmıyorsanız, aşağıdakileri yapın (1) sütunu seçin (2) sağ tıklayın ve Hücreleri Biçimlendir'i seçin (3) "Özel" i seçin (4) "Tipin Altında:" yazın gg / aa / yyyy ss: dd : ss


0

Excel 2010'da, marg'ın cevabı yalnızca elektronik tablomda sahip olduğum bazı veriler için işe yaradı (içe aktarıldı). Aşağıdaki çözüm tüm veriler üzerinde çalıştı.

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

Sorunun yayınlanma yılı hakkında hiçbir fikrim yok; şimdi eski olabilir. Bu nedenle, cevabımın gönderimden sonra gelecekteki benzer sorular için daha fazla referans olmasını bekliyorum.

Benim vermek üzere olduğuma benzer bir cevap daha önce vermiş mi bilmiyorum, bu da -bence- en basit, en doğrudan ve en etkili sonuç olabilir: Birisi zaten verdiyse, özür dilerim ama ben görmedim. İşte cevabım TEXT yerine CStr kullanarak:

A1 hücresinde bir tarih bulunur ve VBA kodu kullanılır:

Dim strDate As String

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

Bundan sonra, dize işlevlerini (ORTA, SOL, SAĞ, UZUNLUK, BİRLEŞTİR (&), vb.) Kullanarak herhangi bir sıradan dize olarak işleyebilirsiniz.


-1

Excel hala metni bugüne kadar dönüştürmediğinden, seçilen yanıt benim için işe yaramadı. İşte benim çözümüm.

Diyelim ki ilk sütunda, A, türüne ait verilere sahipsin 2016/03/25 21:20:00 ama metin olarak depolanıyor. Sonra B sütununa yazın =DATEVALUE(A1)ve C sütununa yazın =TIMEVALUE(A1).

Sonra D sütununda =B1+C1tarih ve saatin sayısal formatlarını ekleyin.

Son olarak, E sütununa sağ tıklayarak değerleri D sütunundan E sütununa kopyalayın ve Paste Special -> Paste as Values .

E sütunundaki sayısal değerleri vurgulayın ve veri türünü tarihe göre değiştirin - Formun özel bir tarihini kullanmayı tercih ederim YYYY-MM-DD HH:MM:SS.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.