Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
cách đọc ngày tháng năm sinh ra tiếng việt trên excel
#1
em chào các anh/chị pro . chẳng là em có 1 bài toán như sau mà em chưa có cách nào thực hiện. em mong các anh chị giúp đỡ và bầy cách cho em .sau đây là tình huống của em:

ví dụ em có ô A1: 15/3/1980
em muốn ô A2: ngày mười lăm tháng ba năm một ngàn chín trăm tám mươi.

em mong các anh/chị Guest chỉ giáo. em xin cảm ơn nhiều
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
1. Bạn tìm trên mạng Addins của Ex để đọc số về cài vô máy sẽ có được 1 hàm đọc số, ví dụ VND(số) chẳng hạn.

2. Tại ô A2: ="Ngày " & VND(DAY(A1)) & " tháng " & VND(MONTH(A1)) & " năm " & VND(YEAR(A1))

Đó là ý tưởng, bạn thử xem nhé, đơn giản mà.
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#3
thanks bạn nhiều. chiêu này hay quá mà mình không nghĩ rahappy
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
có một vấn đề sau khi thực hiện đoạn lệnh sau thì thấy có dấu chấm khó chịu.
ví dụ: ô A2 ="Ngày mùng " &VND(DAY(A1)) & "Tháng " &VND(MONTH(A1))
ra kết quả ở ô A2 như sau: Ngày mùng Ba.Tháng Sáu.

đấy là mình mới thử test như thế. còn hàm ở trong cục add in mình không biết cách sử lý thế nào.
bạn có cách nào giúp mình bỏ cái dấu chấm ở sau một câu lệnh đó?
cám ơn các bạn nhiềuhappy
bạn nào có hàm function viết cho modul trên file excel? cho mình xin nhé. x

Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(09-02-12, 10:57 PM)quanghoasla Đã viết: có một vấn đề sau khi thực hiện đoạn lệnh sau thì thấy có dấu chấm khó chịu.
ví dụ: ô A2 ="Ngày mùng " &VND(DAY(A1)) & "Tháng " &VND(MONTH(A1))
ra kết quả ở ô A2 như sau: Ngày mùng Ba.Tháng Sáu.

đấy là mình mới thử test như thế. còn hàm ở trong cục add in mình không biết cách sử lý thế nào.
bạn có cách nào giúp mình bỏ cái dấu chấm ở sau một câu lệnh đó?
cám ơn các bạn nhiềuhappy
bạn nào có hàm function viết cho modul trên file excel? cho mình xin nhé. x

Bạn chép code đọc số sau (Của Thầy Phạm Duy Long) vào module:

Mã PHP:
Function DocSoVni(conso) As String
s09 
= Array(""" moät"" hai"" ba"" boán"" naêm"" saùu"" baûy"" taùm"" chín")
lop3 = Array(""" trieäu"" nghìn"" tyû")
If 
Trim(conso) = "" Then
  DocSoVni 
""
ElseIf IsNumeric(conso) = True Then
  
If conso 0 Then dau "aâm " Else dau ""
  
conso Application.WorksheetFunction.Round(Abs(conso), 0)
  
conso " " conso
  conso 
Replace(conso","""1)
  
vt InStr(1conso"E")
  If 
vt 0 Then
    sonhan 
Val(Mid(consovt 1))
    
conso Trim(Mid(conso2vt 2))
    
conso conso String(sonhan Len(conso) + 1"0")
  
End If
  
conso Trim(conso)
  
sochuso Len(consoMod 9
  
If sochuso 0 Then conso String(- (sochuso Mod 12), "0") & conso
  docso 
""
  
1
  lop 
1
  
Do
    
n1 Mid(consoi1)
    
n2 Mid(conso11)
    
n3 Mid(conso21)
    
baso Mid(consoi3)
    
3
    
If n1 n2 n3 "000" Then
      
If docso <> "" And lop And Len(conso) - 2 Then s123 " tyû" Else s123 ""
    
Else
      If 
n1 0 Then
        
If docso "" Then s1 "" Else s1 " khoâng traêm"
      
Else
        
s1 s09(n1) & " traêm"
      
End If
      If 
n2 0 Then
        
If s1 "" Or n3 0 Then
          s2 
""
        
Else
          
s2 " linh"
        
End If
      Else
        If 
n2 1 Then s2 " möôøi" Else s2 s09(n2) & " möôi"
      
End If
      If 
n3 1 Then
        
If n2 Or n2 0 Then s3 " moät" Else s3 " moát"
      
ElseIf n3 And n2 <> 0 Then
        s3 
" laêm"
      
Else
        
s3 s09(n3)
      
End If
      If 
Len(consoThen
        s123 
s1 s2 s3
      
Else
        
s123 s1 s2 s3 lop3(lop)
      
End If
    
End If
    
lop lop 1
    
If lop 3 Then lop 1
    docso 
docso s123
    
If Len(consoThen Exit Do
  
Loop
  
If docso "" Then DocSoVni "khoâng" Else DocSoVni dau Trim(docso)
Else
  
DocSoVni conso
End 
If
End Function 

Thêm code đọc ngày vào module:

Mã PHP:
Function DocNgay(Ngay) As String
DocNgay 
"Ngaøy " DocSoVni(Day(Ngay)) & ", thaùng " DocSoVni(Month(Ngay)) & ", naêm " DocSoVni(Year(Ngay)) & "."
End Function 

Cú pháp:

=docngay(NgayCanDoc)

Ví dụ: Tôi muốn đọc 10/02/2012 thì cú pháp như sau:

=DocNgay("10/02/2012")

==> Ngày mười, tháng hai, năm hai nghìn không trăm mười hai.


Chữ ký của domfootwear Xin chào Guest, nếu Guest biết thủ thuật nào thì nên chia sẻ cho cộng đồng nhé.
ღღღღღTài sản của domfootwear (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , quanghoasla
#6
quanghoasla cảm ơn bạn rất nhiều. nhưng mình vẫn có một chút muốn sửa mà chưa biết sửa kiểu gì. ở câu lệnh này thì tất cả những ngày đều ghi rõ như 9/12/1997 thì nó đọc là: ngày chín tháng mười hai năm một ngàn chín trăm chín mươi bảy. hoặc ngày 10/12/12997 thì nó cũng đọc là:ngày mười tháng mười hai năm một ngàn chín trăm chín mươi bảy.

NHƯNG MÌNH MUỐN SỬA NHỮNG NGÀY <=10 THÌ VIẾT CÓ THÊM CHỮ " Mồng" vào đằng trước như sau:

mình ví dụ: 10/12/1997 thì nó cũng đọc là:ngày mồng mười tháng mười hai năm một ngàn chín trăm chín mươi bảy.

quanghoasla kính mong các bạn giúp đỡ.happy
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
hiiiiii mình giải quyết được rồi. đây là code mìh chỉnh sửa như sau:
đoạn code 1 giữ nguyên:
Mã:
Function DocSoVni(conso) As String
s09 = Array("", " moät", " hai", " ba", " boán", " naêm", " saùu", " baûy", " taùm", " chín")
lop3 = Array("", " trieäu", " nghìn", " tyû")
If Trim(conso) = "" Then
  DocSoVni = ""
ElseIf IsNumeric(conso) = True Then
  If conso < 0 Then dau = "aâm " Else dau = ""
  conso = Application.WorksheetFunction.Round(Abs(conso), 0)
  conso = " " & conso
  conso = Replace(conso, ",", "", 1)
  vt = InStr(1, conso, "E")
  If vt > 0 Then
    sonhan = Val(Mid(conso, vt + 1))
    conso = Trim(Mid(conso, 2, vt - 2))
    conso = conso & String(sonhan - Len(conso) + 1, "0")
  End If
  conso = Trim(conso)
  sochuso = Len(conso) Mod 9
  If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
  docso = ""
  i = 1
  lop = 1
  Do
    n1 = Mid(conso, i, 1)
    n2 = Mid(conso, i + 1, 1)
    n3 = Mid(conso, i + 2, 1)
    baso = Mid(conso, i, 3)
    i = i + 3
    If n1 & n2 & n3 = "000" Then
      If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " tyû" Else s123 = ""
    Else
      If n1 = 0 Then
        If docso = "" Then s1 = "" Else s1 = " khoâng traêm"
      Else
        s1 = s09(n1) & " traêm"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = " linh"
        End If
      Else
        If n2 = 1 Then s2 = " möôøi" Else s2 = s09(n2) & " möôi"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " moät" Else s3 = " moát"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " laêm"
      Else
        s3 = s09(n3)
      End If
      If i > Len(conso) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & lop3(lop)
      End If
    End If
    lop = lop + 1
    If lop > 3 Then lop = 1
    docso = docso & s123
    If i > Len(conso) Then Exit Do
  Loop
  If docso = "" Then DocSoVni = "khoâng" Else DocSoVni = dau & Trim(docso)
Else
  DocSoVni = conso
End If
End Function
ĐOẠN CODE 2 THÊM NHƯ SAU:
Mã:
Function DocNgay(Ngay) As String
Dim viet As String
If Day(Ngay) <= 10 Then
viet = "moàng"
End If
DocNgay = "Ngaøy " & viet & DocSoVni(Day(Ngay)) & " thaùng" & DocSoVni(Month(Ngay)) & " naêm " & DocSoVni(Year(Ngay)) & "."
End Function
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#8
(11-02-12, 01:19 AM)quanghoasla Đã viết: hiiiiii mình giải quyết được rồi. đây là code mìh chỉnh sửa như sau:
đoạn code 1 giữ nguyên:
Mã:
Function DocSoVni(conso) As String
s09 = Array("", " moät", " hai", " ba", " boán", " naêm", " saùu", " baûy", " taùm", " chín")
lop3 = Array("", " trieäu", " nghìn", " tyû")
If Trim(conso) = "" Then
  DocSoVni = ""
ElseIf IsNumeric(conso) = True Then
  If conso < 0 Then dau = "aâm " Else dau = ""
  conso = Application.WorksheetFunction.Round(Abs(conso), 0)
  conso = " " & conso
  conso = Replace(conso, ",", "", 1)
  vt = InStr(1, conso, "E")
  If vt > 0 Then
    sonhan = Val(Mid(conso, vt + 1))
    conso = Trim(Mid(conso, 2, vt - 2))
    conso = conso & String(sonhan - Len(conso) + 1, "0")
  End If
  conso = Trim(conso)
  sochuso = Len(conso) Mod 9
  If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
  docso = ""
  i = 1
  lop = 1
  Do
    n1 = Mid(conso, i, 1)
    n2 = Mid(conso, i + 1, 1)
    n3 = Mid(conso, i + 2, 1)
    baso = Mid(conso, i, 3)
    i = i + 3
    If n1 & n2 & n3 = "000" Then
      If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " tyû" Else s123 = ""
    Else
      If n1 = 0 Then
        If docso = "" Then s1 = "" Else s1 = " khoâng traêm"
      Else
        s1 = s09(n1) & " traêm"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = " linh"
        End If
      Else
        If n2 = 1 Then s2 = " möôøi" Else s2 = s09(n2) & " möôi"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " moät" Else s3 = " moát"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " laêm"
      Else
        s3 = s09(n3)
      End If
      If i > Len(conso) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & lop3(lop)
      End If
    End If
    lop = lop + 1
    If lop > 3 Then lop = 1
    docso = docso & s123
    If i > Len(conso) Then Exit Do
  Loop
  If docso = "" Then DocSoVni = "khoâng" Else DocSoVni = dau & Trim(docso)
Else
  DocSoVni = conso
End If
End Function
ĐOẠN CODE 2 THÊM NHƯ SAU:
Mã:
Function DocNgay(Ngay) As String
Dim viet As String
If Day(Ngay) <= 10 Then
viet = "moàng"
End If
DocNgay = "Ngaøy " & viet & DocSoVni(Day(Ngay)) & " thaùng" & DocSoVni(Month(Ngay)) & " naêm " & DocSoVni(Year(Ngay)) & "."
End Function
Lỡ làm thì làm luôn cho nó khớp luôn, ví dụ tháng 1, tháng 4, tháng 12(nếu muốn). Ta phải đọc nó là tháng Giêng (Tháng 1), tháng Tư (Tháng 4), tháng Chạp (Tháng 12).

Code sẽ như sau:

Mã PHP:
Function DocNgay(Ngay) As String
Dim sNgay
sThang As String
sNgay 
Day(Ngay): sThang DocSoVni(Month(Ngay))
If 
sNgay <= 10 Then
    sNgay 
"moàng " DocSoVni(sNgay)
  Else
    
sNgay DocSoVni(sNgay)
End If

Select Case sThang
    
Case "moät"
        
sThang "gieâng"
    
Case "boán"
        
sThang "tö"
    
Case "möôøi hai"
        
sThang "chaïp"
    
Case Else
        
sThang sThang
End Select
DocNgay 
"Ngaøy " sNgay ", thaùng " sThang ", naêm " DocSoVni(Year(Ngay)) & "."

End Function 
Chữ ký của domfootwear Xin chào Guest, nếu Guest biết thủ thuật nào thì nên chia sẻ cho cộng đồng nhé.
ღღღღღTài sản của domfootwear (View All Items) ღღღღღ
Reply
Những người đã cảm ơn quanghoasla
#9
quanghoasla xin cảm ơn các anh/chị pro nhiềuhappy. dạ em muốn dùng font chữ cho dịch từ ngày tháng sang chữ từ VNI-times sang unicode được? sao em chuyển code sang unicode thì bị vỡ chữ nhỉ? có cách nào giúp em chuyển về fonts unicode không bị vỡ chữ không ạ?
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#10
(13-02-12, 01:12 AM)quanghoasla Đã viết: quanghoasla xin cảm ơn các anh/chị pro nhiềuhappy. dạ em muốn dùng font chữ cho dịch từ ngày tháng sang chữ từ VNI-times sang unicode được? sao em chuyển code sang unicode thì bị vỡ chữ nhỉ? có cách nào giúp em chuyển về fonts unicode không bị vỡ chữ không ạ?

Bạn chép code sau vào module
Mã PHP:
Function DocSoUni(conso) As String
s09 
= Array(""" m" ChrW(7897) & "t"" hai"" ba"" b" ChrW(7889) & "n"" n" ChrW(259) & "m"" s" ChrW(225) & "u"" b" ChrW(7843) & "y"" t" ChrW(225) & "m"" ch" ChrW(237) & "n")
lop3 = Array(""" tri" ChrW(7879) & "u"" ngh" ChrW(236) & "n"" t" ChrW(7927))
If 
Trim(conso) = "" Then
DocSoUni 
""
ElseIf IsNumeric(conso) = True Then
If conso 0 Then dau ChrW(226) & "m " Else dau ""
conso Application.WorksheetFunction.Round(Abs(conso), 0)
conso " " conso
conso 
Replace(conso","""1)
vt InStr(1conso"E")
If 
vt 0 Then
sonhan 
Val(Mid(consovt 1))
conso Trim(Mid(conso2vt 2))
conso conso String(sonhan Len(conso) + 1"0")
End If
conso Trim(conso)
sochuso Len(consoMod 9
If sochuso 0 Then conso String(- (sochuso Mod 12), "0") & conso
docso 
""
1
lop 
1
Do
n1 Mid(consoi1)
n2 Mid(conso11)
n3 Mid(conso21)
baso Mid(consoi3)
3
If n1 n2 n3 "000" Then
If docso <> "" And lop And Len(conso) - 2 Then s123 " t" ChrW(7927) Else s123 ""
Else
If 
n1 0 Then
If docso "" Then s1 "" Else s1 " kh" ChrW(244) & "ng tr" ChrW(259) & "m"
Else
s1 s09(n1) & " tr" ChrW(259) & "m"
End If
If 
n2 0 Then
If s1 "" Or n3 0 Then
s2 
""
Else
s2 " linh"
End If
Else
If 
n2 1 Then s2 " m" ChrW(432) & ChrW(7901) & "i" Else s2 s09(n2) & " m" ChrW(432) & ChrW(417) & "i"
End If
If 
n3 1 Then
If n2 Or n2 0 Then s3 " m" ChrW(7897) & "t" Else s3 " m" ChrW(7889) & "t"
ElseIf n3 And n2 <> 0 Then
s3 
" l" ChrW(259) & "m"
Else
s3 s09(n3)
End If
If 
Len(consoThen
s123 
s1 s2 s3
Else
s123 s1 s2 s3 lop3(lop)
End If
End If
lop lop 1
If lop 3 Then lop 1
docso 
docso s123
If Len(consoThen Exit Do
Loop
If docso "" Then DocSoUni "kh" ChrW(244) & "ng" Else DocSoUni dau Trim(docso)
Else
DocSoUni conso
End 
If
End Function 

Sử dụng hàm đọc ngày = unicode như sau:

Mã PHP:
Function DocNgay(Ngay) As String
Dim sNgay
sThang As String
sNgay 
Day(Ngay): sThang DocSoUni(Month(Ngay))
If 
sNgay <= 10 Then
    sNgay 
"m" ChrW(7891) & "ng " DocSoUni(sNgay)
  Else
    
sNgay DocSoUni(sNgay)
End If

Select Case sThang
    
Case "m" ChrW(7897) & "t"
        
sThang "giêng"
    
Case "b" ChrW(7889) & "n"
        
sThang "t" ChrW(432)
    Case 
"m" ChrW(432) & ChrW(7901) & "i hai"
        
sThang "ch" ChrW(7841) & "p"
    
Case Else
        
sThang sThang
End Select
DocNgay 
"Ngày " sNgay ", tháng " sThang ", n" ChrW(259) & "m " DocSoUni(Year(Ngay)) & "."

End Function 

Thân mến.
Chữ ký của domfootwear Xin chào Guest, nếu Guest biết thủ thuật nào thì nên chia sẻ cho cộng đồng nhé.
ღღღღღTài sản của domfootwear (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Nhờ thiết kế file excel Quản lý Thi đua khen thưởng vnnth05 3 214 10-10-16, 09:11 PM
Bài mới nhất: HungSoft
  Tự động phân lịch trực bằng file excel hueqlhc 1 311 26-05-16, 11:53 AM
Bài mới nhất: hueqlhc
Video Đưa tính năng dịch của Google vào Excel... paulsteigel 1 380 04-04-16, 09:10 PM
Bài mới nhất: paulsteigel
  38 phím tắt hữu ích trong Ms Excel Noname 0 192 23-02-16, 12:25 PM
Bài mới nhất: Noname
  Một file Excel để lập sổ quỹ và in phiếu thu chi Xuân Thanh 16 6,280 11-06-15, 06:47 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ