Chuyển đổi ngày thành chuỗi Excel


125

Trong một ô trong bảng Excel tôi có giá trị Ngày như:

01/01/2010 14:30:00

Tôi muốn chuyển đổi Ngày đó thành Văn bản và cũng muốn Văn bản trông giống hệt Ngày. Vì vậy, giá trị Ngày 01/01/2010 14:30:00sẽ giống như 01/01/2010 14:30:00nhưng bên trong nó phải là Văn bản.

Làm thế nào tôi có thể làm điều đó trong Excel?


6
Rất nhiều lập trình viên hợm hĩnh sẽ cho rằng excel không phải là môi trường lập trình nên có thể đóng câu hỏi này. Tôi hy vọng họ không, nhưng chỉ để cảnh báo bạn.
Nick FortesTHER

4
Excel có thể không phải là một IDE toàn diện, nhưng nếu bạn được cung cấp dữ liệu trong Excel và cần kết quả trong Excel, một số chương trình VBA có ý nghĩa.
brichin

Câu trả lời:


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

(Thời gian 24 giờ)

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

(giờ chuẩn)


3
Tham khảo đầy đủ về chức năng TEXT đặc biệt là để biết cách đặt định dạng: xem Hướng dẫn về định dạng ngày và giờ trên trang này office.microsoft.com/en-us/excel-help/ Lỗi
codea

Khi tôi cố gắng thực hiện chuyển đổi này, có "#AD?" văn bản và nó nói điều gì đó sai.
AloneInTheDark

1
@AloneInTheDark Khi bạn theo liên kết từ codea, các định dạng hoạt động nhưng chỉ khi bạn có hệ điều hành windows sử dụng các định dạng tiếng Anh. Mine sử dụng các định dạng tiếng Hà Lan, có nghĩa là "DD / MM / YYYY hh: mm: ss" trở thành "DD / MM / JJJJ uu: mm: ss" bởi vì trong tiếng Hà Lan, 'năm' là 'jaar' và 'giờ' là 'uur' tức là các chữ cái bắt đầu khác (trong khi 'ngày', 'tháng', 'phút' và 'giây' bắt đầu bằng cùng một chữ cái bằng cả tiếng Hà Lan và tiếng Anh). Về cơ bản, dịch các chữ cái bắt đầu của các định dạng sang ngôn ngữ của hệ điều hành của bạn.
Sem Vanmeenen

3
Và việc chuyển đổi ngược lại được thực hiện vớiDATEVALUE("01/01/2010")
Zenadix

Có cách nào để sử dụng định dạng mà tôi đã sử dụng cho hiển thị Ngày mà không phải chỉ định nó không?
palswim

8

Đây là một cách tiếp cận 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

Nếu bạn đang tìm kiếm một giải pháp mà không cần lập trình, Câu hỏi nên được chuyển sang SuperUser.


6

Đây là một lựa chọn khác. Sử dụng thuật sĩ 'Chuyển văn bản thành cột' được tích hợp sẵn trong Excel. Nó được tìm thấy trong tab Dữ liệu trong Excel 2007.

Nếu bạn có một cột được chọn, mặc định cho loại tệp và dấu phân cách sẽ hoạt động, sau đó nó sẽ nhắc bạn thay đổi định dạng dữ liệu của cột. Việc chọn văn bản buộc nó thành định dạng văn bản, để đảm bảo rằng nó không được lưu trữ dưới dạng ngày.


4

Trong một số bối cảnh sử dụng ký tự 'trước sẽ hoạt động, nhưng nếu bạn lưu vào CSV và tải lại thì điều này là không thể.

'01/01/2010 14:30:00

4

Không thể làm cho công thức TEXT () hoạt động

Giải pháp dễ nhất là sao chép dán vào Notepad và quay lại Excel với cột được đặt thành Văn bản trước khi dán lại

Hoặc bạn có thể làm tương tự với một công thức như thế này

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


1
Theo tôi, đây là phương pháp làm việc duy nhất không tuân theo cài đặt ngôn ngữ. Nếu bạn có ý định chia sẻ công việc của mình, sử dụng TEXT () sẽ mang đến cho bạn rắc rối. Ngay cả trong một quốc gia (ví dụ Đức), bạn sẽ tìm thấy những người có cấu hình tiếng Đức và tiếng Anh.
Bác sĩ V

1
cảm ơn và upvote lớn! Nó hoạt động với tôi, vì tôi không thể sử dụng = TEXT (công thức thư viện python)
lestat_kim

1

Nếu bạn không sử dụng lập trình thì hãy làm như sau (1) chọn cột (2) nhấp chuột phải và chọn Định dạng ô (3) Chọn "Tùy chỉnh" (4) Chỉ dưới "Loại:" nhập dd / mm / yyyy hh: mm : ss


0

Trong Excel 2010, câu trả lời của lề chỉ hoạt động đối với một số dữ liệu tôi có trong bảng tính của mình (nó đã được nhập). Các giải pháp sau đây làm việc trên tất cả các dữ liệu.

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

Tôi không có ý tưởng về năm xuất bản của câu hỏi; bây giờ nó có thể cũ Vì vậy, tôi hy vọng câu trả lời của tôi sẽ có nhiều tài liệu tham khảo cho các câu hỏi tương tự trong tương lai sau bài đăng của tôi.

Tôi không biết có ai ở ngoài đó đã đưa ra câu trả lời tương tự như câu tôi sắp đưa ra hay không, điều này có thể dẫn đến - Tôi nghĩ - là đơn giản nhất, trực tiếp nhất và hiệu quả nhất: Nếu ai đó đã đưa ra, tôi xin lỗi Nhưng tôi chưa thấy nó. Ở đây, câu trả lời của tôi bằng CStr thay vì TEXT:

Asuming ô A1 chứa một ngày và sử dụng mã VBA:

Dim strDate As String

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

Sau đó, bạn có thể thao tác nó như bất kỳ chuỗi thông thường nào bằng cách sử dụng các hàm chuỗi (MID, LEFT, RIGHT, LEN, CONCATENATE (&), v.v.)


-1

Câu trả lời được chọn không hoạt động với tôi vì Excel vẫn không chuyển đổi văn bản thành ngày. Đây là giải pháp của tôi.

Nói rằng trong cột đầu tiên, A, bạn có dữ liệu thuộc loại 2016/03/25 21:20:00nhưng được lưu dưới dạng văn bản. Sau đó trong cột B viết =DATEVALUE(A1)và trong cột C viết =TIMEVALUE(A1).

Sau đó, trong cột D làm =B1+C1để thêm các định dạng số của ngày và thời gian.

Cuối cùng, sao chép các giá trị từ D vào cột E bằng cách nhấp chuột phải vào cột E và chọn Paste Special -> Paste as Values.

Đánh dấu các giá trị số trong cột E và thay đổi kiểu dữ liệu thành ngày - Tôi thích sử dụng ngày tùy chỉnh của biểu mẫu YYYY-MM-DD HH:MM:SS.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.