Ngày tháng trong excel

  • Thread starter Thread starter rosy84
  • Ngày gửi Ngày gửi
Liên hệ QC

rosy84

Thành viên hoạt động
Tham gia
15/3/09
Bài viết
170
Được thích
38
Các anh cho em hỏi về ngày tháng trong excel,
có anh nào có cách gì để chuyển ngày tháng từ dạng mm/dd/yyyy hh:mm:ss sang dạng mm/dd/yyyy mà không còn hh:mm:ss không?

Em đã dùng cả hàm left, mid và format rồi nhưng không được. Ai có thể viết cho em cái Macro không? hoặc the nao cung duoc.
 
Các anh cho em hỏi về ngày tháng trong excel,
có anh nào có cách gì để chuyển ngày tháng từ dạng mm/dd/yyyy hh:mm:ss sang dạng mm/dd/yyyy mà không còn hh:mm:ss không?

Em đã dùng cả hàm left, mid và format rồi nhưng không được. Ai có thể viết cho em cái Macro không? hoặc the nao cung duoc.

Ví dụ Ô A1 = 01/01/2009 8:09:10 AM
=TEXT(A1,"dd/mm/yyyy") = 01/01/2009
 
Cái này có thể dùng macro để viết không? ý em muốn hỏi là có thể sử dụng hàm text(,) trong macro không?

Em thử làm rồi nhưng không dùng hàm text trong macro được, mà bài của em thì có rất nhiều ngày tháng, mà lại muốn so sánh với nhau, nhưng không quan tâm tới hh:mm:ss thế em mới cần 1 macro để chạy tự động, em làm macro bằng hàm left nhưng chạy thì lúc thừa lúc thiếu. Các anh giúp em với!!! thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Ví dụ Ô A1 = 01/01/2009 8:09:10 AM
=TEXT(A1,"dd/mm/yyyy") = 01/01/2009
Làm kiểu này thì hết đường tính toán với cái kết quả, vì khi đó kết quả là dạng Text, không còn là dạng ngày tháng năm nữa.

Có hai vấn đề cần quan tâm: "thấy" và "lấy"

Nếu như các giá trị ban đầu theo đúng quy tắc dd/mm/yyyy hh:mm:ss, và nếu muốn chỉ "thấy" phần ngày, "không thấy" phần giờ (nghĩa là chúng vẫn có đó nhưng không thấy), thì chỉ cần Format Cell lại theo dạng ngày tháng năm (dd/mm/yyyy), chẳng cần công thức gì hết.

Còn nếu muốn chỉ "lấy" phần ngày, bỏ hẳn cái phần giờ đi, và vẫn tính toán được, thì dùng hàm INT() và Format cho ô chứa kết quả với dạng ngày tháng năm.
=INT(A1)​
Xin nói thêm, hàm INT() không hẳn là phần giờ đi đâu, mà chỉ xóa giá trị giờ hiện có, và thay vào đó cái giá trị 12:00:00 AM.

----------------------------------------------------

rosy84 đã viết:
Em thử làm rồi nhưng không dùng hàm text trong macro được, mà bài của em thì có rất nhiều ngày tháng, mà lại muốn so sánh với nhau, nhưng không quan tâm tới hh:mm:ss thế em mới cần 1 macro để chạy tự động, em làm macro bằng hàm left nhưng chạy thì lúc thừa lúc thiếu. Các anh giúp em với!!! thanks
Trong VBA, người ta không dùng hàm TEXT, mà dùng hàm FORMAT. Ví dụ:
- công thức ở công thức Excel: =TEXT(ABC, "dd/mm/yyyy")

- thì trong VBA dùng cái này: =Format(ABC, "dd/mm/yyyy")
với ABC là cái giá trị ngày tháng + giờ cần chuyển đổi.
 
Ngày tháng trong excell

Nhờ các anh em chỉ giúp dùm làm thế nào để khi kéo(copy) từ dòng trên 01/01/2009 xuống dòng dưới kết quả là 02/01/2009. Cảm ơn...
 
Nhờ các anh em chỉ giúp dùm làm thế nào để khi kéo(copy) từ dòng trên 01/01/2009 xuống dòng dưới kết quả là 02/01/2009. Cảm ơn...
Tự nhiên nó phải thế mà không cần giải pháp gì cả ---> Còn như khi kéo lại không ra đúng ý, chứng tỏ ngày tháng bạn đã nhập sai (sai về quy định nhập liệu đã định sẳn trong Control Panel)
 
Cám ơn các anh nha, em cũng dùng thử rồi nhưng không được, em dung hàm year()&"/"&month()&"/"& day() là ok rồi. nhưng khi gặp ký tự dạng ABC ở một ô nào đó thì die ngay, các anh có cách khắc phục không?
như thế này nè

cells(irow,icol).value=month(cells(irow,icol).value) &"/"&day(cells(irow,icol).value)&"/"& year(cells(irow,icol).value)
 
Cám ơn các anh nha, em cũng dùng thử rồi nhưng không được, em dung hàm year()&"/"&month()&"/"& day() là ok rồi. nhưng khi gặp ký tự dạng ABC ở một ô nào đó thì die ngay, các anh có cách khắc phục không?
như thế này nè

cells(irow,icol).value=month(cells(irow,icol).value) &"/"&day(cells(irow,icol).value)&"/"& year(cells(irow,icol).value)
Đây là phương pháp BUỒN CƯỜI nhất mà tôi từng biết
Bạn đưa file lên đi, sẽ biết có ngay cho bạn 1 giải pháp chính thống!
 
Er = [A65536].End(xlUp).Row
Sub layngay()
dim idate as date
For i = 2 To Er
idate = Mid(Cells(i, 9), 1, 10)
Cells(i, 1) = idate
next
End sub
mình test thử ngon mà
Cho dù là thế cũng đâu cần phải FOR
Thêm nữa: Chúng ta không thể dùng các hàm xử lý text cho các dử liệu thời gian, vì sẽ có 2 trường hợp xảy ra:
- Nếu ra kết quả đúng ---> Chứng tỏ dử liệu của ta không phải thuộc dạng DATE hoặc TIME
- Nếu dử liệu của ta đúng chuẩn ---> Kết quả sẽ sai ngay!
Tôi dùng cách khác để Convert (như BNTT đã nêu ở trên)
PHP:
Sub Test()
 With Range([A1], [A65536].End(xlUp))
   .Offset(, 2).Value = "=INT(" & .Address & ")"
   .Offset(, 2).Value = .Offset(, 2).Value
   .Offset(, 2).NumberFormat = "dd/mm/yyyy"
 End With
End Sub
Xem file
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom