Đổi chuỗi số sang ngày/tháng/năm

Liên hệ QC

mapmaptoto

Thành viên mới
Tham gia
16/10/10
Bài viết
9
Được thích
1
@#!^% một bài tập thế này cho
10101989
1989
7101989
đổi sang dạng ngày/tháng/năm dùng hàm chuỗi như:left, right, len... để làm.
ví dụ:
10101989 sẽ thành 10/101989
1989 sẽ thành 1989
7101989 sẽ thành 7/10/1989

 

File đính kèm

Lần chỉnh sửa cuối:
Hồi nẫy đưa bên kia là lộn tiệm

Mã:
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]
--=0 --=0 --=0 --=0
 
Chuyện đó trong các ký số mà tác giả đưa ra chưa có

để 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
Đó là bạn khẳng định thôi, chứ chủ topic chưa đề cập đến mà;

Còn hàm trên thì, khi ta nhập 3139999 sẽ cho kết quả là 3/31/9999;
Còn nếu cung cấp cho hàm tham số 3149999 sẽ cho ta kết quả 5/1/9999 (. . )
Nhưng với 3159999 sẽ cho ra 5/31/9999
& các bạn thử với 3128888 xem sao?

Vấn đề ở đây là người nêu vấn đề (người chủ topic) chưa thấu đáo khi dưa vấn đề ra xem xét mà thôi.


Hạ hồi fân giải!
 
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?
 
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?

Nếu dữ liệu dạng text, 4 hoặc 8 ký tự thì xem thử công thức này, nếu dữ liệu không có qui chuẩn nào thì "thua".
 

File đính kèm

cám ơn BaTe nhiều! nhưng nếu mình không dùng hàm if thì có cách nào khác không? hjhj
 
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!
 
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!

Xài thử củ khoai này xem sao:
=IF(LEN(A9)<5,A9,IF(LEN(A9)=8,DATE(RIGHT(A9,4),MID(A9,3,2),LEFT(A9,2)),IF(LEN(A9)=7,DATE(RIGHT(A9,4),MID(A9,2,2),LEFT(A9,1)),"Error") ))
 
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.
 
em có thể dùng hàm if kết hợp với công thức dạng này được hông a!
LEFT(B3,2)&"/"&MID(B3,3,2)&"/"&(RIGHT(B3,4))
 
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.
 
Lần chỉnh sửa cuối:
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.

Đó là bạn nghĩ thế thôi chứ đề bài của "Ông Thầy" có nói điều kiện gì đâu? Nếu đề bài cho cụ thể thì đây chỉ là một bài toán đơn giản thôi. Lỗi là ở người ra đề!
 
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!)
 
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!)
Thì bạn dùng thế này đi
PHP:
=IF(LEN($A1)<5,$A1,DATE(RIGHT($A1,4),LEFT(RIGHT($A1,6),2),LEFT($A1,LEN($A1)-6)))
Chuổi 4, 7 hay 8 chữ số cũng đâu có sao
 

File đính kèm

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!)
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 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à!
 
cá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à!
Không phải là NHIỀU CÁCH GIẢI ---> Vì đàng nào cũng VỀ LA MÃ thôi
Chỉ là mọi người "bu" vào phân tích vì hơi "bực" 1 chút, chẳng biết ở đâu ra lại có ông thầy "tào lao", cho 1 đề bài Excel cũng "tào lao" không kém (ngày từ đầu đã không dạy người ta NHẬP LIỆU CHUẨN mà lại bắt người ta nghiên cứu CHUYỆN TÀO LAO)
Hic...
 
Ây, bạn nên xem hết các cách giải quyết vấn đề. Như tui nè, hiện tại sử dụng mấy công thức ngày tháng nhiều lắm. Bạn mà nhớ hết công thức, bạn làm việc khỏe lắm.
 
=IF(LEN(H12)=8,DATEVALUE(LEFT(H12,2)&"/"&MID(H12,3,2)&"/"&RIGHT(H12,4)),IF(LEN(H12)=7,DATEVALUE(LEFT(H12,1)&"/"&MID(H12,2,2)&"/"&RIGHT(H12,4)),TEXT(H12,0)))

theo tui .... chắc ông thầy này đang cho bạn ấy làm quen với công thức left right mid và datevalue .... theo tui phiến cáo thì dùng công thức trên cho vui .

còn tui thì tui chọn công thức của huynh ndu96081631 đi ...rất gọn !!
 
có cao thủ nào ra tay chỉ giáo dùm . Mình có : 20110601 bạn nào có cô ng thức chuyển thành ngày 01 tháng 06 nă m 2011.
 
Web KT

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

Back
Top Bottom