Đọc ngày tháng năm thành chữ

  • Thread starter tuankq
  • Ngày gửi
T

tuankq

Cao cấp
27/4/05
245
2
0
Hanoi, Vietnam
Các bro làm ơn giúp đỡ tôi vụ này (chắc là đơn giản, ko khó):
Tôi muốn chuyển một ô ngày tháng năm dạng: dd/mm/yy hoặc dd/mm/yyyy (vd: 28/9/05 hoặc 28/9/2005) sang dạng chữ như sau: ngày dd tháng mm năm yyyy (vd: ngày 28 tháng 09 năm 2005).
Các bro sành về Excel và VBA làm ơn chỉ điểm giúp.
Chân thành cảm ơn.
 
Khóa học Quản trị dòng tiền
T

tuankq

Cao cấp
27/4/05
245
2
0
Hanoi, Vietnam
tranvanhung nói:
You xem thử file này nha. Không biết có đúng ý không.


Đúng ý tôi rùi, rất đơn giản vậy mà ko nghĩ ra.
Cảm ơn bro nhiều.
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Bạn vào Format / Cells (hoặc nhấn Ctrl+1).

Chọn thẻ Number, sau đó vào phần Custom.

Trong ô Type, bạn gõ "ngày" dd "tháng" mm "năm" yyyy

Thế là xong. Bạn thử đi nhé.
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
21
Trong Mây mù
www.baominh.com.vn
Nếu định dạng ngay tại chỗ thì làm theo kiểu của 2 bạn workman và caophong. Nhưng cách này có rủi ro là: Khi file gửi cho người khác sử dụng, họ có thể xóa bỏ bớt một số định dạng custom => khi ấy định dạng tạo thêm của bạn bị mất; dữ liệu trở về dạng General và hiển thị dưới dạng con số.
Cách của bạn tranvanhung có nhược điểm là phải ghi dữ liệu ở 1 cell mới.
Tùy mục đích sử dụng bạn có thể chọn cách phù hợp.
Với các bảng biểu (Báo cáo, phiếu thu chi, Ủy nhiệm chi ...) cần in ngày hiện tại ở cuối bảng thì bạn có thể vận dụng cách của tranvanhung và nhập vào ô ngày như sau:
="Ngày "&DAY(TODAY())&" Tháng "&MONTH(TODAY())&" Năm "&YEAR(TODAY())
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Đa loại đây, xin biếu xài không?

Bạn có thể tạo 1 hàm đa năng tự tạo như sau:
Function NgayVN(So as Integer, Optional Dat as Date ) as String
Dim Chu as String
If IsDate(Dat)= 0 then Dat=Date()
Chu = Right("0" & CStr(day(Dat)), 2) & " tháng " & Right("0" & CStr(Month(Dat)), 2) & " năm " & CStr(Year(Dat)) & "."

Select case So
case 1 'Dùng cuối bảng BC
NgayVN="Kiến an, ngày " & Chu
Case 2 'Dùng để viết thư & lập biên bản. . .
NgayVN = "Hôm nay ngày " & Chu
case ...
. . . . . . . . . . . . .
Case Else
NgayVN="Tào lao!"
End Select
End Function
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Bác SA DQ ơi, bác rộng rãi quá nhỉ. Toàn biếu xài không há. Bửa nào gặp nhau cái nhỉ. Hy vọng bác tiếp tục "biếu" bọn mù ... VBA chúng tôi nhiều thứ miễn phí nữa.

Đã giúp thì giúp cho trót luôn. Bác biến ý tưởng của bác thành hàm thật luôn đi (tức là thêm cái mấy cái Chr$ để diễn Unicode ấy mà) :)
 
  • Love
Reactions: SA_DQ
T

Tuanktcdcn

Lão già ham vui
18/6/04
549
52
28
47
Hà Nội
www.bluesofts.net
'=======Hàm cho ra thứ mấy trong Tuần
Function Thutrongtuan(ByVal bDate As Date) As String
Dim Thu(7)
Thu(1) = "Chủ Nhật"
Thu(2) = "Thứ hai"
Thu(3) = "Thứ ba"
Thu(4) = "Thứ tư­"
Thu(5) = "Thứ năm"
Thu(6) = "Thứ sáu"
Thu(7) = "Thứ bảy"

Thutrongtuan = Thu(Weekday(bDate))
End Function

'=======Hàm cho một tháng có bao nhiêu ngày
Function Ngaycuathang(ByVal bDate As Date) As Byte
Dim Namnhuan As Boolean
Dim NGAY As Byte, Thang As Byte
Namnhuan = ((Year(bDate) / 4 - Int(Year(bDate) / 4)) = 0)
MsgBox Namnhuan
Thang = Month(bDate)
If Thang = 4 Or Thang = 6 Or Thang = 9 Or Thang = 11 Then
NGAY = 30
ElseIf Thang = 2 Then
If Namnhuan Then
NGAY = 29
Else
NGAY = 28
End If
Else
NGAY = 31
End If
Ngaycuathang = NGAY
End Function

'=======Hàm cho ngày cuối tháng (dd/mm/yyyy)
Function NgayCuoiThang(ByVal bDate As Date) As Date
Dim NGAY As Byte

NGAY = Day(bDate)

NgayCuoiThang = bDate + (Ngaycuathang(bDate) - NGAY)

End Function

'=======Hàm cho một chuỗi "Ngày xx tháng xx nam xxxx"
Function NgayThangNam(ByVal bDate As Date) As String
Dim NGAY As Byte, Thang As Byte
Dim Nam As Integer
NGAY = Day(bDate)
Thang = Month(bDate)
Nam = Year(bDate)
NgayThangNam = "Ngày " & NGAY & " tháng " & Thang & " năm " & Nam
End Function

'=======Hàm cho một chuỗi "Ngày xx tháng xx nam xxxx" cuối tháng
Function NgayCuoiThangSTR(ByVal bDate As Date) As String
NgayCuoiThangSTR = NgayThangNam(NgayCuoiThang(bDate))
End Function

'=======Hàm cho một chuỗi "Thứ - Ngày xx tháng xx nam xxxx"
Function Thu_NTN(ByVal bDate As Date) As String
Thu_NTN = Thutrongtuan(bDate) & " - " & NgayThangNam(bDate)
End Function
'=======Hàm cho một chuỗi "Thứ - Ngày xx tháng xx nam xxxx" cuối tháng
Function Thu_NTN_EOM(ByVal bDate As Date) As String
Dim NgaycuoiTh As Date
NgaycuoiTh = NgayCuoiThang(bDate)
Thu_NTN_EOM = Thu_NTN(NgaycuoiTh)
End Function

'==================================================
'Bạn hãy copy tất cả các hàm trên, tạo một Module trong Excel rồi Paste (CTRL+V) là có thể dùng được cho chính file đó. Nếu muốn dùng cho tất cả các file trên máy thì phải tạo và cất về dạng Add-In (*.xla)
'Khi làm việc trên các Sheet bạn sử dụng các hàm dó theo các tình huống của mình.
Ứng dụng
'A1 = Today()
'B1 = Thutrongtuan(A1)
'B1 = Ngaycuathang(A1)
'B1 = NgayCuoiThang(A1)
'B1 = NgayThangNam(A1)
'B1 = NgayCuoiThangSTR(A1)
'B1 = Thu_NTN(A1)
'B1 = Thu_NTN_EOM(A1)
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Cám ơn bác Tuân nhiều lắm. Đúng là cao thủ có khác. Múa bàn phím một chút là có hàng ngay. Thảo nào mà chú Maika chẳng coi bác như sư phụ.

Tôi mạn phép sửa 1 tý xíu thôi để đảm bảo cái hàm của bác chạy trơn tru trong Excel.

Function Thutrongtuan(ByVal bDate As Date) As String
Dim Thu(7)
Thu(1) = ChrW(67)+ChrW(104)+ChrW(7911)+ChrW(32)+ChrW(78)+ChrW(104)+ChrW(7853)+ChrW(116)
Thu(2) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(104)+ChrW(97)+ChrW(105)
Thu(3) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(98)+ChrW(97)
Thu(4) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(116)+ChrW(432)
Thu(5) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(110)+ChrW(259)+ChrW(109)
Thu(6) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(115)+ChrW(225)+ChrW(117)
Thu(7) = ChrW(84)+ChrW(104)+ChrW(7913)+ChrW(32)+ChrW(98)+ChrW(7843)+ChrW(121)

Thutrongtuan = Thu(Weekday(bDate))
End Function
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Anh Workman ơi! Gọn hơn tí nữa nhé.
-------
Function Thutrongtuan(ByVal bDate As Date) As String
Dim Thu(7)
Thu(1) = "Ch"+ChrW(7911)+" Nh"+ChrW(7853)+"t"
Thu(2) = "Th"+ChrW(7913)+" Hai"
Thu(3) = "Th"+ChrW(7913)+" Ba"
Thu(4) = "Th"+ChrW(7913)+" Tư"+ChrW(432)
Thu(5) = "Th"+ChrW(7913)+" Năm"
Thu(6) = "Th"+ChrW(7913)+" Sáu"
Thu(7) = "Th"+ChrW(7913)+" B" + ChrW(7843)+"y"
Thutrongtuan = Thu(Weekday(bDate))
End Function
--------
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Ờ nhỉ. Cám ơn Bình nhé.

Tôi mắt nhắm mắt mở thế nào mà lại convert ra unicode tất thế không biết.
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Một cách nữa đây, xin giới thiệu:

Nhờ ô được gán tên, như sau:
Tại một ô nào đó còn trống ta nhập:
="Kiến an, ngày " & Right("0" & day(now), 2) & " tháng " & Right("0" & Month(Now), 2) & " năm " & Year(Now) & "."Sau đó chép vô bộ nhớ; :wall:
Vô menu Insert nhập NgayVN trở thành 1 tên mới; Ở ô Refers ta chép hàm trên vô; Sau đó nhấn nút Add & nút OK
Trở về bảng tính & nhập vô 1 ô nào đó =NgayVN sẽ cho ra kết quả
Nhưng tôi không chắc việc này có lợi hơn Hàm tự tạo hay không? Ai biết cho vài phát kiến hay, anh em ở EFC học hỏi!
 
Sửa lần cuối:
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
SA_DQ nói:
Nhờ ô được gán tên, như sau:
Tại một ô nào đó còn trống ta nhập:
="Kiến an, ngày " & Right("0" & day(now), 2) & " tháng " & Right("0" & Month(Now), 2) & " năm " & Year(Now) & "."Sau đó chép vô bộ nhớ; :wall:
Vô menu Insert nhập NgayVN trở thành 1 tên mới; Ở ô Refers ta chép hàm trên vô; Sau đó nhấn nút Add & nút OK
Trở về bảng tính & nhập vô 1 ô nào đó =NgayVN sẽ cho ra kết quả
Nhưng tôi không chắc việc này có lợi hơn Hàm tự tạo hay không? Ai biết cho vài phát kiến hay, anh em ở EFC học hỏi!

Hoan hô bác SA DQ có một cách rất hay. Cái này có thể sử dụng được trong add-in. Tôi nghĩ nếu sử dụng name 1 cách sáng tạo, ta còn làm được nhiều trò hơn nữa.

Tuy nhiên hàm VBA có lợi điểm là linh động hơn rất nhiều. Ví dụ không nhất thiết phải thể hiện ngày hiện hành (trong cách làm của bác SA DQ ta chỉ có thể thể hiện ngày hiện hành qua hàm NOW()), mà có thể đọc bất kỳ ngày nào sang chữ.
 
  • Love
Reactions: SA_DQ
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
workman nói:
Hoan hô bác SA DQ có một cách rất hay. Cái này có thể sử dụng được trong add-in. Tôi nghĩ nếu sử dụng name 1 cách sáng tạo, ta còn làm được nhiều trò hơn nữa.

Tuy nhiên hàm VBA có lợi điểm là linh động hơn rất nhiều. Ví dụ không nhất thiết phải thể hiện ngày hiện hành (trong cách làm của bác SA DQ ta chỉ có thể thể hiện ngày hiện hành qua hàm NOW()), mà có thể đọc bất kỳ ngày nào sang chữ.

Bác SA DQ xem lại box của bác nhé, hình như đầy rồi, tôi không thể nào gửi sms cho bác được.

Nếu dùng NOW()-9 thì ra ngày 2 tháng mười, tức là 9 ngày trước, hình như vẫn không giải quyết được vấn đề ngày tổng quát mà. Bác xem lại hộ tôi với
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Vâng cách đặt tên hàm cho gọn thì em cũng mới ứng dụng gần đây. Rất tuyệt vời. Không biết có những thủ thuật nào để tạo ra một thư viện các hàm tự tạo trong Excel (dùng cách đặt tên không dùng VBA) nữa không nhỉ.

SA_DQ nói:
="Kiến an, ngày " & Right("0" & day(now), 2) & " tháng " & Right("0" & Month(Now), 2) & " năm " & Year(Now) & "."

Cho em góp thêm một ít ý nhé:
="Kiến an, ngày " & text(now(),"dd") & " tháng " & text(now(),"mm") & " năm " & Year(Now) & "."

Như vậy là gọn hơn được một tí (vài ký tự) :biggrin: :wall:
 
  • Love
Reactions: SA_DQ
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Đúng, name có nhiều ứng dụng rất hay. Bạn có thể qui định cả Print Area bằng cách sử dụng Name đấy (tự nghiên cứu nhé!!!)

Tuy nhiên ta vẫn cần VBA đấy. Gặp phải những yêu cầu chuyến số ra chữ thì "Name" bó tay. Lúc này phải nhờ đến VBA thôi.
 
T

thuanckgt

Guest
11/3/15
1
0
1
35
'=======Hàm cho ra thứ mấy trong Tuần
Function Thutrongtuan(ByVal bDate As Date) As String
Dim Thu(7)
Thu(1) = "Chủ Nhật"
Thu(2) = "Thứ hai"
Thu(3) = "Thứ ba"
Thu(4) = "Thứ tư"
Thu(5) = "Thứ năm"
Thu(6) = "Thứ sáu"
Thu(7) = "Thứ bảy"

Thutrongtuan = Thu(Weekday(bDate))
End Function

'=======Hàm cho một tháng có bao nhiêu ngày
Function Ngaycuathang(ByVal bDate As Date) As Byte
Dim Namnhuan As Boolean
Dim NGAY As Byte, Thang As Byte
Namnhuan = ((Year(bDate) / 4 - Int(Year(bDate) / 4)) = 0)
MsgBox Namnhuan
Thang = Month(bDate)
If Thang = 4 Or Thang = 6 Or Thang = 9 Or Thang = 11 Then
NGAY = 30
ElseIf Thang = 2 Then
If Namnhuan Then
NGAY = 29
Else
NGAY = 28
End If
Else
NGAY = 31
End If
Ngaycuathang = NGAY
End Function

'=======Hàm cho ngày cuối tháng (dd/mm/yyyy)
Function NgayCuoiThang(ByVal bDate As Date) As Date
Dim NGAY As Byte

NGAY = Day(bDate)

NgayCuoiThang = bDate + (Ngaycuathang(bDate) - NGAY)

End Function

'=======Hàm cho một chuỗi "Ngày xx tháng xx nam xxxx"
Function NgayThangNam(ByVal bDate As Date) As String
Dim NGAY As Byte, Thang As Byte
Dim Nam As Integer
NGAY = Day(bDate)
Thang = Month(bDate)
Nam = Year(bDate)
NgayThangNam = "Ngày " & NGAY & " tháng " & Thang & " năm " & Nam
End Function

'=======Hàm cho một chuỗi "Ngày xx tháng xx nam xxxx" cuối tháng
Function NgayCuoiThangSTR(ByVal bDate As Date) As String
NgayCuoiThangSTR = NgayThangNam(NgayCuoiThang(bDate))
End Function

'=======Hàm cho một chuỗi "Thứ - Ngày xx tháng xx nam xxxx"
Function Thu_NTN(ByVal bDate As Date) As String
Thu_NTN = Thutrongtuan(bDate) & " - " & NgayThangNam(bDate)
End Function
'=======Hàm cho một chuỗi "Thứ - Ngày xx tháng xx nam xxxx" cuối tháng
Function Thu_NTN_EOM(ByVal bDate As Date) As String
Dim NgaycuoiTh As Date
NgaycuoiTh = NgayCuoiThang(bDate)
Thu_NTN_EOM = Thu_NTN(NgaycuoiTh)
End Function

'==================================================
'Bạn hãy copy tất cả các hàm trên, tạo một Module trong Excel rồi Paste (CTRL+V) là có thể dùng được cho chính file đó. Nếu muốn dùng cho tất cả các file trên máy thì phải tạo và cất về dạng Add-In (*.xla)
'Khi làm việc trên các Sheet bạn sử dụng các hàm dó theo các tình huống của mình.
Ứng dụng
'A1 = Today()
'B1 = Thutrongtuan(A1)
'B1 = Ngaycuathang(A1)
'B1 = NgayCuoiThang(A1)
'B1 = NgayThangNam(A1)
'B1 = NgayCuoiThangSTR(A1)
'B1 = Thu_NTN(A1)
'B1 = Thu_NTN_EOM(A1)
em đã tạo file .xla như bác nói nhưng add xong rồi không chạy được, khi nhập 12/12/2012 thì nó không đổi thành " ngày 12 tháng 12 năm 2012" được
bác giúp em luôn file *.xla được không hoặc bác nói cụ thể hơn các bước tạo để em rõ, cảm ơn bác
 
phanduong1

phanduong1

Sơ cấp
10/11/22
5
0
1
23
cho em hỏi hàm sao để chuyển dòng dưới đây thành chữ hết ạ, em cảm ơn nhiều
Hôm nay, Ngày 10 tháng 11 năm 2022
 

Xem nhiều

Webketoan Zalo OA