mapmaptoto
Thành viên mới
- Tham gia
- 16/10/10
- Bài viết
- 9
- Được thích
- 1
Option Explicit
[B]Function StringToDate(Num As Long) As Date[/B]
Const Mu4 As Long = 10 ^ 4: Const Mu6 As Long = 10 ^ 6
If Num > 10 ^ 7 Then
StringToDate = DateSerial(Num Mod Mu4, Num \ Mu4 Mod 100, Num \ Mu6)
ElseIf Num >= Mu4 Then
If Num \ Mu4 Mod 100 < 13 Then
StringToDate = DateSerial(Num Mod Mu4, Num \ Mu4 Mod 100, Num \ Mu6)
Else
StringToDate = DateSerial(Num Mod Mu4, Num \ Mu4 Mod 10, Num \ 10 ^ 5)
End If
ElseIf Num < Mu4 Then
StringToDate = Num
Else
StringToDate = 0
End If
[B]End Function[/B]
Đó là bạn khẳng định thôi, chứ chủ topic chưa đề cập đến mà;để phân biệt 2121989 là 2/12/1989 chứ không phải là 21/2/1989.
Đây là điều rất đơn giản nhưng nhiều bạn bỏ qua
cám ơn các anh nhưng em không biết làm sao nữa. đề này thầy cho về suy nghĩ và làm thử, nhưng em làm hoài không ra. thầy yêu cầu làm bài với những hàm như left, right... em xài hàm right để tách năm nhưng còn ngày, tháng thì có câu có câu không. 10101989 em làm ra là 10/10/1989. em làm là =date(right(a2,4),mid(a2,3,2),left(a2,2)). thì dòng đầu ra kết quả, nhưng còn những dòng sau thì đâu đủ ngày, tháng đâu để cắt chuỗi. vậy phải làm sao?
mình thử lại hàm của BaTe thì trường hợp 7101989 không ra kết quả đúng bạn giúp lại mình nha!
Đã nói trước là dữ liệu không theo qui chuẩn nào thì "thua" mà, ví dụ 1111989 làm sao hiểu được ngày mấy tháng mấy mà viết công thức. Chờ Thầy Bạn giải đi cho chắc ăn.mình thử lại hàm của BaTe thì trường hợp 7101989 không ra kết quả đúng bạn giúp lại mình nha!
Giả sử ở Ô A3 bạn nhập 10209
thì hàm chuyển sang ngày tháng như sau:
=IF(A3="","",DATE("20"&RIGHT(A3,2),MID(A3,LEN(A3)-3,2),LEFT(A3,LEN(A3)-4)))
Kết quả 1/02/2009.
Khuyết điểm là tháng luôn phải nhập 2 số.
Ví dụ ngày 1 tháng 12 năm 2009 nhập là 1122009.
Ngày 11 tháng 2 năm 2009 nhập là 11022009.
Thì bạn dùng thế này đicám ơn Mail07 nhiều, dù cách của bạn chưa giải quyết hết vấn đề nhưng làm mình ngộ ra rất nhiều điều. mình sẽ kết hợp cả cách của Mail07 và Bate để làm thử. có lẽ sẽ làm được! (chỉ không biết là đúng như thầy hông thui! hihi)
à! mà chuỗi số Thầy cho chỉ là 7,8 hoặc 4 chữ số và ngày thì 1 hoặc 2 số (hoặc không có ngày), tháng là 2 số(hoặc không có tháng), năm là 4 số. ví dụ như:10101989,1989,7101989. mình sẽ đổi 1 số chỗ trong công thức của Mail07 và Bate rồi kết hợp lại. hi vọng sản phẩm của sự kết hợp này sẽ đúng! (nghe 2 chữ "sản phẩm" lớn lao ghê ha! hihi). iu cà nhà lắm. cám ơn cả nhà nhìu! ^_^ ((khi nào Thầy giải đề mình sẽ up lên ha!)
=IF(LEN($A1)<5,$A1,DATE(RIGHT($A1,4),LEFT(RIGHT($A1,6),2),LEFT($A1,LEN($A1)-6)))
Mấy cái tô đỏ đậm này lại càng làm khó thêm, chuỗi Thầy cho chắc Thầy mới hiểu.cám ơn Mail07 nhiều, dù cách của bạn chưa giải quyết hết vấn đề nhưng làm mình ngộ ra rất nhiều điều. mình sẽ kết hợp cả cách của Mail07 và Bate để làm thử. có lẽ sẽ làm được! (chỉ không biết là đúng như thầy hông thui! hihi)
à! mà chuỗi số Thầy cho chỉ là 7,8 hoặc 4 chữ số và ngày thì 1 hoặc 2 số (hoặc không có ngày), tháng là 2 số (hoặc không có tháng), năm là 4 số. ví dụ như:10101989,1989,7101989. mình sẽ đổi 1 số chỗ trong công thức của Mail07 và Bate rồi kết hợp lại. hi vọng sản phẩm của sự kết hợp này sẽ đúng! (nghe 2 chữ "sản phẩm" lớn lao ghê ha! hihi). iu cà nhà lắm. cám ơn cả nhà nhìu! ^_^ ((khi nào Thầy giải đề mình sẽ up lên ha!)
Không phải là NHIỀU CÁCH GIẢI ---> Vì đàng nào cũng VỀ LA MÃ thôicám ơn Dnu nha! mình thấy càng ngày bài này càng có nhiều cách giải, hông biết nên dùng cách nào đây! thật là khó xử hihi! nhưng dù sao cũng cảm ơn tất cả vì đã nhiệt tình giúp mình ha! chúc sức khoẻ cả nhà!