Xin giúp chèn ký tự "/" vào dãy ký tự (2 người xem)

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

Người dùng đang xem chủ đề này

quanloc

Thành viên mới
Tham gia
18/7/07
Bài viết
27
Được thích
3
Mình có 01 file dữ liệu ngày tháng năm, nhưng nó bị biến dạng thành như một dãy số liên tục . Ví dụ : 020307 - là ngày 02 tháng 03 năm 2007. Bây giờ mình muốn thêm ký tự "/" vào giữa thành : 02/03/07. Tôi có gởi file đính kèm.
Rất mong các bạn giúp đỡ tôi.
Xin chân thành cảm ơn các bạn.!$@!! !$@!! !$@!!
 

File đính kèm

Lần chỉnh sửa cuối:
Chào bạn
Bạn có thể dùng công thức này tại B2 và copy xuống
=IF(LEN(A2)=7,"0","")&LEFT(A2,2)&"/"&MID(A2,3,2)&"/"&RIGHT(A2,2)

TDN
 
Bó tay rồi. Bạn để dịnh dạng là số, bây giờ chuyển về ngày tháng thì chuyển thế nào được nữa.Bạn chỉ có cách chèn thêm ký tự vào thôi. Nhưng không dùng để tính toán được
 
quanloc đã viết:
Mình có 01 file dữ liệu ngày tháng năm, nhưng nó bị biến dạng thành như một dãy số liên tục . Ví dụ : 020307 - là ngày 02 tháng 03 năm 2007. Bây giờ mình muốn thêm ký tự "/" vào giữa thành : 02/03/07. Tôi có gởi file đính kèm.
Rất mong các bạn giúp đỡ tôi.
Xin chân thành cảm ơn các bạn.!$@!! !$@!! !$@!!
Bạn xem nhé (có 2 TH đấy)

TH1
: Chỉ có các năm >=2000:
PHP:
=DATE(RIGHT(A2;2)+2000;MID(A2;LEN(A2)-3;2);LEFT(A2;LEN(A2)-4))


TH 2:
Nếu có các năm <2000:
PHP:
=DATE(RIGHT(A2;2)+IF(VALUE(RIGHT(A2;2))<10;2000;1900);MID(A2;LEN(A2)-3;2);LEFT(A2;LEN(A2)-4))


Chào bạn
Bạn có thể dùng công thức này tại B2 và copy xuống
=IF(LEN(A2)=7,"0","")&LEFT(A2,2)&"/"&MID(A2,3,2)&"/"&RIGHT(A2,2)

TDN
Cái này sẽ cho ra ký tự, như vậy không tính toán được.

Thân!
 

File đính kèm

Lần chỉnh sửa cuối:
Bác xem thêm bài này nữa nè: (cập nhật)

=DATE(IF(VALUE(RIGHT(A2,2))<10,"20","19")&RIGHT(A2,2),MID(A2,IF(LEN(A2)<>6,2,3),2),LEFT(A2,IF(LEN(A2)<>6,1,2)))

TP.
 

File đính kèm

Lần chỉnh sửa cuối:
Sao mà IF, với RIGHT, LEFT làm chi cho tôn công quá nhỉ... 1 hàm INT và 1 hàm DATE nữa là ra... chắc chắn nó là dạng số nên có thể dùng nó tính dc dễ dàng... Các bạn thử xem...
INT với số 10000 lấy ra dc ngày
INT với số 100 lấy ra dc tháng
Năm thì... quá dễ
 
  • Tôi sẽ giúp bạn vì tôi mới lam cho trường của tôi có gì sai xin gọi số 0902088990 :
=concatenate(left(địa chỉ ô,2),"/",mid(địa chỉ ô,3,2),"/",right(địa chỉ ô,2))
Chúc bạn hạnh phúc !!!}}}}}
 
Lần chỉnh sửa cuối:
Bạn mà chèn mấy cái "/" này vào thì cell chỉ là TEXT thôi bạn à... Làm sao nó có thể là ngày tháng dc chứ
 
anhtuan1066 đã viết:
Sao mà IF, với RIGHT, LEFT làm chi cho tôn công quá nhỉ... 1 hàm INT và 1 hàm DATE nữa là ra... chắc chắn nó là dạng số nên có thể dùng nó tính dc dễ dàng... Các bạn thử xem...
INT với số 10000 lấy ra dc ngày
INT với số 100 lấy ra dc tháng
Năm thì... quá dễ

Cách của bác khá hay đó. Tuy nhiên phải nói rõ hơn:
VD : 80906
Tháng = int(80906;100)=809.
(như vậy phải thêm 1 hàm nữa bên trong hàm int phải không bác ??)

Năm cũng thế .

Thân!
 
Nói thế cho mọi người nghiên cứu chứ.. hi.. hi... Tóm lại tôi làm chỉ có 2 hàm: INT và DATE, vài phép công trừ nhân chia nữa là OK
Gợi ý chút cho mọi người nha:
Ngày = INT(A1/10000)
Tháng =INT((A1-B1*10000)/100)
Năm thì... tự suy nghĩ đi... he.. he.. Thế mới thú vị chứ
 
chèn dấu cách

Rất cảm ơn bạn . Nhưng công thức của bạn nó sẽ sai khi dãy ký tự có 5 số : ví dụ : 90507 : ngày 9 tháng 05 năm 2007 nó lại thành 90/05/07. Do vậy những cel có ngày nhỏ hơn 10 thì đều bị sai.
Tuy nhiên cũng nhờ công thức của bạn mà mình phát triển ra công thức sau - Nó sẽ hoàn toàn đúng trong mọi trường hợp :
= IF(LEN(A2)=6,LEFT(A2,2)&"/"&MID(A2,3,2)&"/"&RIGHT(A2,2),LEFT(A2,1)&"/"&MID(A2,2,2)&"/"&RIGHT(A2,2)).
Rất cảm ơn sự hợp tác của bạn.
/-*+/ /-*+/
tedaynui đã viết:
Chào bạn
Bạn có thể dùng công thức này tại B2 và copy xuống
=IF(LEN(A2)=7,"0","")&LEFT(A2,2)&"/"&MID(A2,3,2)&"/"&RIGHT(A2,2)

TDN
 
chèn thêm dấu cách

Công thức của bạn nó làm sao ấy, mình không dám nói sai, nhưng mà không sử dụng để tính toán được. Mình thấy khi cộng trừ ngày tháng khác thì nó không cho kết quả đúng.
Cảm ơn bạn nhiều !
ttphong2007 đã viết:
Bác xem thêm bài này nữa nè:
=DATE(RIGHT(A13,2),MID(A13,IF(LEN(A13)<>6,2,3),2),LEFT(A13,IF(LEN(A13)<>6,1,2)))

TP.
 
Công thức của bạn cũng rất hay, nhưng cũng không đúng như bạn Tedaynui , nó cũng chỉ đúng đối với 6 ký tự, còn 5 ký tự là sai ngay.
Rất cảm ơn bạn, từ công thức này tôi cũng có thể làm được nhiều chuyện rồi đây.
}}}}}
tuanhungnguyen đã viết:
  • Tôi sẽ giúp bạn vì tôi mới lam cho trường của tôi có gì sai xin gọi số 0902088990 :
=concatenate(left(địa chỉ ô,2),"/",mid(địa chỉ ô,3,2),"/",right(địa chỉ ô,2))

Chúc bạn hạnh phúc !!!}}}}}
 
chèn thêm dấu cách

Công thức của bạn cũng rất hay đó, nhưng chưa chắc gì đơn giản đâu, cần phải đảm bảo nó đúng trong mọi trường hợp : có 5 ký tự và có 6 ký tự. Nó cũng rất dễ sai giống như các bạn khác mà thôi.
Còn để cho nó đúng thì cũng phải if, cũng phải & không làm sao tránh khỏi.
Rất cảm ơn bạn .
////// ////// //////
anhtuan1066 đã viết:
Nói thế cho mọi người nghiên cứu chứ.. hi.. hi... Tóm lại tôi làm chỉ có 2 hàm: INT và DATE, vài phép công trừ nhân chia nữa là OK
Gợi ý chút cho mọi người nha:
Ngày = INT(A1/10000)
Tháng =INT((A1-B1*10000)/100)
Năm thì... tự suy nghĩ đi... he.. he.. Thế mới thú vị chứ
 
Đã bảo là dùng INT mà cứ ko nghe... cứ IF với LEFT hoài... Sai ráng chịu...
A1 là dử liệu---->
Ngày là B1 =INT(A1/10000)
Tháng là C1 =INT((A1-INT(A1/10000)*10000)/100)
Năm là D1 =A1-B1*10000-C1*100
Từ 3 dử liệu ngày tháng năm này, dùng hàm DATE đễ ráp lại thành ngày tháng năm hoàn chỉnh
 
Dù là 5 hay 6 ký tự gì thì cũng chắc chắn đúng... Nếu sai tôi xin chịu CHẶT ĐẦU... ha... ha... Chỉ yêu cầu đừng có cắc cớ nhập 4 ký tự thôi (như 6599---> ngày 6 tháng 5 năm 99 thì bó bột)
Thử xem
 
Xin Code trợ giúp nhập dữ liệu DD/MM/YY ?

anhtuan1066 đã viết:
Đã bảo là dùng INT mà cứ ko nghe...

A1 là dử liệu---->
Ngày là B1 =INT(A1/10000)
Tháng là C1 =INT((A1-INT(A1/10000)*10000)/100)
Năm là D1 =A1-B1*10000-C1*100
Từ 3 dử liệu ngày tháng năm này, dùng hàm DATE đễ ráp lại thành ngày tháng năm hoàn chỉnh

Chào bác Anhtuan1066 và toàn thể các pác!
Em đang rất cần công cụ làm được như trên, để hỗ trợ tốt hơn nhập liệu hàng ngày ! Bác giúp em Code mà khi người dùng tại các ô ở cột "Ngày tháng năm" chỉ cần nhập DDMMYY nhưng ra kết DD/MM/YY (Ko cần làm thêm cột phụ).
Cám ơn các bác !
LTMCustoms
 
anhtuan1066 đã viết:
Đã bảo là dùng INT mà cứ ko nghe... cứ IF với LEFT hoài... Sai ráng chịu...
A1 là dử liệu---->
Ngày là B1 =INT(A1/10000)
Tháng là C1 =INT((A1-INT(A1/10000)*10000)/100)
Năm là D1 =A1-B1*10000-C1*100
Từ 3 dử liệu ngày tháng năm này, dùng hàm DATE đễ ráp lại thành ngày tháng năm hoàn chỉnh
cách này em dùng với số 150507 thì B1 = 15,C1 = 5, D1= 7, nhưng sau khi dùng hàm date thì nó lại ra là 5/15/1907, mà nếu em gõ 1 ô là 5/22/07 thì nó ra đúng là 5/22/2007. Cho em hỏi tại sao lại thế ạ?
= IF(LEN(A2)=6,LEFT(A2,2)&"/"&MID(A2,3,2)&"/"&RIGHT(A2,2),LEFT(A2,1)&"/"&MID(A2,2,2)&"/"&RIGHT(A2,2)

dùng cách này của bác quanloc thì em lại không tính toán được bác ah
Mong các bác chỉ giáo
 
Mở 1 file mới, right click trên sheet tab, chọn View code... Paste code này vào:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim StrVal As String
Dim dDate As Date
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub

With Target
StrVal = Format(.Text, "000000")
If IsNumeric(StrVal) And Len(StrVal) = 6 Then
Application.EnableEvents = False

If Application.International(xlDateOrder) = 1 Then 'dd/mm/yy
dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Right(StrVal, 2))
Else 'mm/dd/yy
dDate = DateValue(Mid(StrVal, 3, 2) & "/" & Left(StrVal, 2) & "/" & Right(StrVal, 2))
End If

.NumberFormat = "dd/mm/yyyy"
.Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate)))

End If
End With

Application.EnableEvents = True
End Sub

Đóng VBE lại và thử nhập 010105 vào xem...
Chú ý: Vùng hoạt động của macro là A1:A100 và Format Date là dd/mm/yyyy... Cái này bạn có thể sửa lại theo ý mình
Mến
ANH TUẤN
 
Với bạn Connhangheo: Thứ nhất, máy tính bạn đang định dang mm/dd/yy, cái này là tùy chọn có thể sửa dc... Thứ 2: Do Windows lấy móc thời gian từ 1 thời điểm nào đó, cụ thể trên máy tính của tôi là từ năm 1930... Điều này có nghĩa là nếu nhập 2 số cuối cùng < 30 thì nó sẽ hiểu năm là 20XX, ngược lai, 2 số cuối >= 30 thì nó sẽ hiểu năm là 19XX ... Có thể sửa lại ở cell D1 cho chính xác như sau:
D1= =IF(A1-B1*10000-C1*100<30,A1-B1*10000-C1*100+2000,A1-B1*10000-C1*100)
Mến
ANH TUẤN
 
Web KT

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

Back
Top Bottom