Xin giúp chèn ký tự "/" vào dãy ký tự (1 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

Vấn đề này đơn giản thôi mà. Nếu mục đích thực sự chỉ chèn "/" vào thôi thì quá đơn giản hãy dùng công thức =LEFT(RIGHT(A2,6),2) & "/" & LEFT(RIGHT(A2,4),2) & "/" &RIGHT(A2,2). Còn sử dụng mục đích khác thì hồi sau sẽ phân giải
 
anhtuan1066 đã viết:
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
anhtuan1066 đã viết:
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)

anhtuan ơi bây giờ mà sai thì mới chịu CHẶT ĐẦU. Hì... hì... Cảm ơn. Thân.
 
Sao lại sai chứ? Dù bạn làm bằng hàm date thì cũng thế thôi... Thử đi: DATE(07,05,15) là = mấy?
 
Code này thật kỳ diệu -"Không nhập (/) mà có kết quả như ý!"

anhtuan1066 đã viết:
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
Dear Mr Tuấn !
Code thật kỳ diệu -"Không nhập (/) mà có kết quả như ý!"
Em gửi file đính kèm - nhờ sư phụ Anhtuan1066 sửa lại chút và chỉ giáo!
Đa tạ!
Thân!
LTMCustoms
 

File đính kèm

Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
Sao lại sai chứ? Dù bạn làm bằng hàm date thì cũng thế thôi... Thử đi: DATE(07,05,15) là = mấy?
máy của em ra là 5/15/1907
còn nếu em gõ 5/15/07 thì nó sẽ hiện ra là 5/15/2007
Vấn đề em hỏi là tại sao em tự gõ thì ra năm 2007, còn dùng hàm date(07,05,15) hoặc lấy year là 1 ô tham chiếu nào đó thì lại ra là năm 1907.
Mong các bác giải thích giúp
 
Với connhangheo: Điều này tôi cũng ko biết, nhưng bạn cứ tự nghĩ đi.. Nếu bạn là.."Excel" thì bạn sẽ hiểu số 07 là cái gì? Là 1907 hay 2007?... Đó là do cách viết tắc của chúng ta, đáng lý ra phải gõ 2007 thì chúng ta lại gõ 07... Vậy nếu máy có hiểu sai thì là lỗi của chúng ta chứ ko phải do máy... bạn đồng ý về điều này chứ...
Với hàm DATE này, nếu bạn muốn ra 2007 thì có 2 cách: hoặc là ghi rõ 2007 hoặc là ghi 107 cũng dc
Mến
 
Bạn có thể thử với file này nha! Cho phép bạn nhập tùy ý từ 4 số đến 8 số...
Mến
ANH TUẤN
 

File đính kèm

Code nhập "giùm" dấu cách ngày/tháng/năm !

Dear Mr Tuấn !
Nhận đc hồi âm của bác, em rất vui - đặc biệt là vào dịp "pà con cả nước đang đi chơi ...", nhân đây em tỏ lòng cám ơn và kích chúc bác cùng những người thân và các thành viên của diễn đàn mạnh khỏe, may măn và thành đạt!
Còn về em đang test File "NhapDate" thấy vẫn còn mấy vấn đề nhỏ nhưng rất khó (Liên quan đến ngày tháng mà !), cụ thể như sau ạ:
- Nhập những ngày từ 20->31 trong tháng không được!? Chẳng lẽ đối với các ngày này (nhều wa!) lại nhập thủ công thì cực wa giời!
- Chương trình cho phép người sử dụng nhập tùy ý từ 4 số đến 8 số rất tiện vì đỡ công quy ước, hướng dẫn với trường hợp nhiều người đổi ca sử dụng! nhưng lỗi: nếu nhập (dạng 8 số) lại 1 ngày mà bên trên đã nhập (dạng 6 số) thì báo lỗi "#######- Notvalid date" - nhập 6 số thì OK, đặc biệt là sau khi xuất hiện MsgBox rồi thì nhập một số ngày hựp lệ khác lại ####### hoặc bị quy đổi ngày khác làm em fát hoảng?!
- Liệu sau khi nhập xong 1 ô, cho ra kết quả dạng ngày d/m/yyyy hoặc dd/mm/YYYY không ạ !? Trước em có diễn đạt ko rõ! hi hi (Cquan em Win "buộc phải" là m/d/yyyy (theo Tây) còn trong Excell em muốn là theo Ta !
- Trong 1 Sheet em cần can thiệp vào 2 cột ko liền kề, Code của bác em chỉ biết thay là Range("A1:C100") và MsgBox là rất hay nhưng khi nhập dữ liệu cột B thì cực wa !
* Các vấn đề trên theo em có thể là do hiệu ứng thông minh của Excel !? Liệu có các nào khi nhập liệu ở các vùng này thì Disable (tắt) hiệu ứng này đi đc ko các bác nhỉ!?
Hiện tại em mới chỉ phát hiện được như vậy! hy vọng đưa vào thực tế chỉ thế thôi nhỉ, không thì tốn sức các bác quá!. Khả năng của em hiện tại thì còn mầm non wa! nhất là vấn đề "dữ liệu thời gian" - lỗi nhỏ nhưng nhiều khi "bó bột". Dữ liệu này ai cũng gặp phải nhưng chỗ em thì 1 thay nhau ngồi gõ hết ngày này sang năm khác! Mong bác Tuấn và diễn đàn quan tâm giúp em!
Em chỉ biết, đang ngồi chờ kết quả! ;;;;;;;;;;;|||||__--__
Chào các bác !
#########
LTMCustoms
 
Lần chỉnh sửa cuối:
Chào bạn!
Hôm nay ko biết đi chơi ở đâu... Hic... tình cờ lên mạng lại lượm dc 1 bí kíp nữa vả Quick Dates Entry... Bạn tải file về và đưa vào Add-Ins nhé! Tôi mới thử sơ sơ, thấy hay lắm đấy... Nó cho phép bạn chọn vùng hoạt đông ngay ngoài bảng tính mà ko cần vào VBE để sửa gì cả...
Bạn cứ thử đi, có gì hay thì chia sẽ với mọi người nhé! (tôi ko có tg đễ thứ.. hi.. hi..)
Ah... Ko biết thì mở hướng dẩn ra xem... cũng dễ hiểu lắm
ANH TUẤN
 
Lần chỉnh sửa cuối:
Dựa vào thuật toán INT, tôi nhờ thầy Phước xây dựng code như sau:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim r As Integer
Dim d, m, y
If Target.Column = 1 And Target.Row < 100 Then
r = Target.Row
y = Int(Target / 10000)
m = Int((Target - y * 10000) / 100)
If (Target - y * 10000 - m * 100) < 30 Then
d = Target - y * 10000 - m * 100 + 2000
Else
d = Target - y * 10000 - m * 100
End If
Target = DateValue(y & "/" & m & "/" & d)
End If
End Sub

Code này khỏi sợ lỗi, vì nếu nhập sai thì nó sẽ ko làm gì cả...
Mến
ANH TUẤN
 
tính tiền lương tháng 13

công ty e nếu làm một tháng đủ 15 ngày 11.5 tiếng thì sẽ được tính thưởng 1 tháng( e sẽ viết trong excel là 15/11.5) vậy thì dùng công thứ như thế nào để có thher đếm dó là được 1 tháng, nếu 15/11.3 hoặc 14/11.5 là không được
e viết là =if(F1<=15/11.5;1;0) sao nó không đúng. nhờ các anh chị giúp e với,
 
công ty e nếu làm một tháng đủ 15 ngày 11.5 tiếng thì sẽ được tính thưởng 1 tháng( e sẽ viết trong excel là 15/11.5) vậy thì dùng công thứ như thế nào để có thher đếm dó là được 1 tháng, nếu 15/11.3 hoặc 14/11.5 là không được
e viết là =if(F1<=15/11.5;1;0) sao nó không đúng. nhờ các anh chị giúp e với,
Có vẻ như bạn đang muốn quy ra tổng số giờ làm việc trong 1 tháng?
Nếu F1 là tổng giờ thực tế,
Mã:
=IF(F1>=172.5,1,0)
172.5 = 15*11.5=tổng số giờ theo quy định 1 tháng
 
nhưng trong F1 e vẫn đánh là 15/11.5 ( hoặc 14/11.5, 15/11) không qui ra 172.5.e lập công thức xong thì khi F1 e nhập 14/11.5 ( chi có 161h)nó vẫn tính được 1, nếu đúng nó phải trả về 0 chứ, mong giải giúp.
 
nhưng trong F1 e vẫn đánh là 15/11.5 ( hoặc 14/11.5, 15/11) không qui ra 172.5.e lập công thức xong thì khi F1 e nhập 14/11.5 ( chi có 161h)nó vẫn tính được 1, nếu đúng nó phải trả về 0 chứ, mong giải giúp.
Chưa hiểu, bạn gửi file lên đi
 
Web KT

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

Back
Top Bottom