การแปลงวันที่ของ 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

5
Excel อาจไม่ใช่ IDE เต็มรูปแบบ แต่ถ้าคุณได้รับข้อมูลใน Excel และต้องการผลลัพธ์ใน Excel การเขียนโปรแกรม VBA บางอย่างก็มีเหตุผล
brichins

คำตอบ:


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 เมื่อคุณไปตามลิงค์จาก codea รูปแบบจะใช้ได้ แต่ถ้าคุณมีระบบปฏิบัติการ Windows ที่ใช้รูปแบบภาษาอังกฤษเท่านั้น Mine ใช้รูปแบบภาษาดัตช์ซึ่งหมายความว่าตัวอย่างเช่น "DD / MM / YYYY hh: mm: ss" กลายเป็น "DD / MM / JJJJ uu: mm: ss" เนื่องจากในภาษาดัตช์ "year" คือ "jaar" และ "hour" คือ 'uur' คืออักษรเริ่มต้นอื่น ๆ (ในขณะที่ 'วัน', 'เดือน', 'นาที' และ 'วินาที' เริ่มต้นด้วยตัวอักษรเดียวกันทั้งในภาษาดัตช์และภาษาอังกฤษ) โดยทั่วไปแปลตัวอักษรเริ่มต้นของรูปแบบเป็นภาษาของระบบปฏิบัติการของคุณ
Sem Vanmeenen

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

นี่เป็นอีกทางเลือกหนึ่ง ใช้ตัวช่วยสร้าง 'Text to Columns' ในตัวของ Excel อยู่ใต้แท็บข้อมูลใน Excel 2007

หากคุณเลือกคอลัมน์ไว้หนึ่งคอลัมน์ค่าเริ่มต้นสำหรับประเภทไฟล์และตัวคั่นควรใช้งานได้ระบบจะแจ้งให้คุณเปลี่ยนรูปแบบข้อมูลของคอลัมน์ การเลือกข้อความบังคับให้เป็นรูปแบบข้อความเพื่อให้แน่ใจว่าไม่ได้จัดเก็บเป็นวันที่


4

ในบางบริบทการใช้อักขระ "ล่วงหน้าจะได้ผล แต่ถ้าคุณบันทึกเป็น CSV และโหลดอีกครั้งจะเป็นไปไม่ได้

'01/01/2010 14:30:00

4

ไม่สามารถรับสูตร TEXT () เพื่อใช้งานได้

วิธีแก้ปัญหาที่ง่ายที่สุดคือการคัดลอกวางลงใน Notepad และกลับเข้าไปใน Excel โดยตั้งคอลัมน์เป็นข้อความก่อนที่จะวางกลับ

หรือจะใช้สูตรแบบนี้ก็ได้

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


1
เนื่องจากตามความเข้าใจของฉันนี่เป็นวิธีการทำงานเดียวที่ไม่อยู่ภายใต้การตั้งค่าภาษา หากคุณตั้งใจจะแบ่งปันงานของคุณการใช้ TEXT () จะทำให้คุณมีปัญหา แม้แต่ในประเทศเดียว (เช่นเยอรมนี) คุณจะพบคนที่มีการกำหนดค่าภาษาเยอรมันและภาษาอังกฤษ
ดร. วี

1
ขอบคุณมากและโหวตโหวต! มันใช้ได้ผลสำหรับฉันเพราะฉันไม่สามารถใช้ = TEXT (สูตรไลบรารี python)
lestat_kim

1

หากคุณไม่ได้ใช้การเขียนโปรแกรมให้ทำดังต่อไปนี้ (1) เลือกคอลัมน์ (2) คลิกขวาแล้วเลือกจัดรูปแบบเซลล์ (3) เลือก "กำหนดเอง" (4) อยู่ใต้ "ประเภท:" พิมพ์ dd / mm / yyyy hh: mm : ss


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:

Asuming เซลล์ 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 ยังไม่ได้แปลงข้อความเป็นวันที่ นี่คือทางออกของฉัน

สมมติว่าในคอลัมน์แรก 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ฉันชอบใช้วันที่กำหนดเองของแบบฟอร์ม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.