Hàm chuyển số thành chữ

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Đã có rất nhiều hàm chuyển số thành chữ trên các diễn đàn, nhưng hôm nay, tôi xin giới thiệu với các bạn hàm chuyển số thành chữ hoàn chỉnh nhất của Paulsteigel trên diễn đàn Webketoan
Mã:
Option Explicit
'
Function CountValue(ByVal Target As Range, ByVal Criteria As Long, ByVal isGreater As Boolean) As Variant
Dim i As Long, j As Long
Dim k As Long
With Target
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
If Not IsEmpty(.Cells(i, j)) Then
If isGreater Then
If Val(.Cells(i, j)) >= Criteria Then k = k + 1
Else
If Val(.Cells(i, j)) <= Criteria Then k = k + 1
End If
End If
Next
Next
End With
CountValue = k + 1
End Function
 
 
Public Function NumtoWordExl(ByVal Target As Range, Optional IsToUnicode As Boolean = False) As String
Dim iStr As String, i As Long
Dim retVal As String
If isBigRange(Target) Then
NumtoWordExl = ""
GoTo tExitFunction
End If
' this is a trick to keep excel doesnt set the value to somewhat like 1.22e12+19
iStr = Format(Target.Value, "#000")
retVal = NumtoWord(iStr)
' Now we have to convert the result to unicode if neccessary
If retVal <> "" And IsToUnicode Then retVal = ToUnicode(retVal)
NumtoWordExl = retVal
tExitFunction:
End Function
 
Function NumtoWord(InTxt As String) As String
' Concert any length number to word
' The mentor is: break a number to 9 characters length and do the conversion
' for the rest .... increment the billion counter
' the main function for the conversion is at anywhere in the net and I took this one from anonimity
' My onwed function work similarly - but i failed in searching for it - it dumbed...
' so take this one in replacement
Dim i As Integer, j As Integer
Dim OutString As String
Dim ProcArr() As String
ReDim ProcArr(10)
While Len(InTxt) > 9
' break the input string to group of 9 digit
ProcArr(i) = Right(InTxt, 9)
InTxt = Left(InTxt, Len(InTxt) - 9)
i = i + 1
Wend
ProcArr(i) = InTxt
ReDim Preserve ProcArr(i)
' Now convert the group to value
i = UBound(ProcArr)
While i > 0
' add with "w" as billion word...
OutString = OutString & IIf(Val(ProcArr(i)) > 0, ReadBilGroup(ProcArr(i)) & String(i, "w"), "")
i = i - 1
Wend
OutString = Replace(OutString, "w", " tû") & ReadBilGroup(ProcArr(0))
NumtoWord = Trim(OutString)
End Function
 
Private Function ReadBilGroup(s As String) As String
Dim l As Integer, i As Integer, j As Integer
Dim dk As Boolean
Dim A(11) As Integer
Dim C As String
 
' Variant array to quick convert the number to word
Dim iArr As Variant
iArr = Array("kh«ng", "mét", "hai", "ba", "bèn", "n¨m", "s¸u", "b¶y", "t¸m", "chÝn")
 
C = ""
l = Len(s)
 
' break number to single string
For i = 1 To l
A(i) = CInt(Mid(s, i, 1))
Next i
 
For i = 1 To l '
 
Select Case A(i)
Case 1:
If (i > 1 And (l - i + 1) Mod 3 = 1 And A(i - 1) > 1) Then
C = C & " mèt"
ElseIf ((l - i + 1) Mod 3 <> 2 And A(i) = 1) Then
C = C & " mét"
End If
Case 5:
If (i > 0 And (l - i + 1) Mod 3 = 1 And A(i - 1) <> 0) Then
C = C & " l¨m"
Else
C = C & " n¨m"
End If
Case 0:
If (l - i + 1) Mod 3 = 0 And (A(i + 1) <> 0 Or A(i + 2) <> 0) Then C = C & " kh«ng"
If (l - i + 1) Mod 3 = 2 And A(i + 1) <> 0 Then C = C & " linh"
Case Else
If i = l And A(i) = 4 Then
C = C & " t&shy;"
Else
C = C & " " & iArr(A(i))
End If
End Select
 
If ((l - i + 1) Mod 3 = 2 And A(i) <> 0 And A(i) <> 1) Then
C = C & " m&shy;¬i"
ElseIf ((l - i + 1) Mod 3 = 2 And A(i) <> 0) Then
C = C & " m&shy;êi"
End If
 
If ((l - i + 1) Mod 3 = 0 And (A(i + 1) <> 0 Or A(i + 2) <> 0)) Then
C = C & " tr¨m"
ElseIf (l - i + 1) Mod 3 = 0 And A(i) <> 0 Then
C = C & " tr¨m"
End If
 
If ((l - i + 1) = 4) Then C = C & " ngµn"
If ((l - i + 1) = 7) Then C = C & " triÖu"
 
If ((l - i + 1) Mod 3 = 0 And A(i) = 0 And A(i + 1) = 0 And A(i + 2) = 0) Then i = i + 2
 
If ((l - i + 1) Mod 3 = 1) Then
dk = True
For j = i To l
If A(j) <> 0 Then dk = False
Next j
End If
If dk Then Exit For
Next i
ReadBilGroup = C
End Function
 
 
Private Function isBigRange(ByVal Target As Range) As Boolean
On Error GoTo ErrHandler
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then isBigRange = True
ErrHandler:
End Function
Function ToUnicode(txtString As String, Optional isReversed As Boolean = False) As String
' This function will do the conversion of text string into unicode
Dim iStr As String, repTxt As String, mText As String
Dim i As Long, j As Long
Dim iUnicode As Variant ' array to keep unicode char set
Dim iTCVN As Variant ' array to keep TCVN char set
Dim iProcList() As String ' array to keep what to convert
 
'parse the parameter into this local variable
iStr = txtString
mText = txtString
 
iUnicode = Array(225, 224, 7843, 227, 7841, 259, 7855, 7857, 7859, 7861, 7863, 226, _
7845, 7847, 7849, 7851, 7853, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, _
7877, 7879, 237, 236, 7881, 297, 7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, _
7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, 250, 249, 7911, 361, 7909, _
432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 273, 193, 192, 195, _
258, 194, 212, 416, 431, 272)
 
iTCVN = Array(184, 181, 182, 183, 185, 168, 190, 187, 188, 189, 198, 169, 202, 199, 200, _
201, 203, 208, 204, 206, 207, 209, 170, 213, 210, 211, 212, 214, 221, 215, 216, 220, _
222, 227, 223, 225, 226, 228, 171, 232, 229, 230, 231, 233, 172, 237, 234, 235, 236, _
238, 243, 239, 241, 242, 244, 173, 248, 245, 246, 247, 249, 253, 250, 251, 252, 254, _
174, 193, 192, 195, 161, 162, 164, 165, 166, 167)
 
' Reenlarge the array
ReDim iProcList(1, 133)
' process the vowel only and covert to asc code
For i = 1 To Len(mText)
repTxt = Mid(mText, i, 1)
If AscW(repTxt) > 122 Then
iStr = Replace(iStr, repTxt, "[" & AscW(repTxt) & "]")
mText = Replace(mText, repTxt, " ")
' write the processed list
iProcList(1, j) = "[" & AscW(repTxt) & "]"
If isReversed Then
iProcList(0, j) = GetElementNo(AscW(repTxt), iUnicode)
Else
iProcList(0, j) = GetElementNo(AscW(repTxt), iTCVN)
End If
j = j + 1
End If
Next
If j = 0 Then
ToUnicode = txtString
Exit Function
End If
ReDim Preserve iProcList(1, j - 1)
' now convert to unicode
For i = 0 To UBound(iProcList, 2)
If isReversed Then
iStr = Replace(iStr, iProcList(1, i), ChrW(iTCVN(Val(iProcList(0, i)))))
Else
iStr = Replace(iStr, iProcList(1, i), ChrW(iUnicode(Val(iProcList(0, i)))))
End If
Next
fExit:
ToUnicode = iStr
End Function
 
Thank. Nhưng trong bản em mới viết lại dưới đây thì em cứ đọc là một nghìn linh một cho đơn giản. Đọc lướt qua các trang khác em thấy có nhiều người cũng viết hàm này. Em cũng thấy có một số yêu cầu của các thành viên khác và em tự tìm cách giải quyết, có trùng với ai thì cũng ngẫu nhiên mà thôi.
http://www.mediafire.com/?izzdnm2ifyl
Em định viết tiếp hàm đọc số sang tiếng Anh nhưng tiếng Anh em dở quá, các anh đọc giúp lại cho em số này trong tiếng Anh để đối chiếu lại cách đọc của mình:
1001501000123,1024 (1 nghìn linh một tỷ năm trăm linh một triệu một trăm hai mươi ba phẩy một không hai bốn). Thank!
 
Upvote 0
1.001.501.000.123,1024 = One thousand and one billion, five hundred and one millon, and one hundred twenty three, point one o (or zero) two four.
Nghe hơi ngượng chỗ 3 số không. không biểt 3 số không có đọc không nữa.
 
Upvote 0
Tôi thấy người ta đọc thành thế này
Mã:
     [B]one trillion one billion five hundred one million one hundred twenty-three and 1022 / 10000[/B]
 
Lần chỉnh sửa cuối:
Upvote 0
Hàm dọc số ra chữ

Vấn đề này đã có rất nhiều người làm với nhiều thuật toán khác nhau. Mình xin đưa ra một cách mới như sau, cách này xây dựng hàm, không phải Add-In. Các bạn xem thử có đúng không nhé.
Tuyệt cú mèo, không biết nếu dùng Word mà chèn thêm bảng tính excel trong word thì có chạy được không bạn?
Oh.....tuyệt.......Tôi đã thử dán hàm của bạn vào trong module trong bảng tính được chèn vào word, chạy rất tuyệt có cả tiếng việt (đương nhiên là phải thêm sheet 2 của bạn. Vấn đề tiếng việt làm tôi đau đầu mấy hôm nay, bạn tặng cho đoạn code thật tuyệt..............Thank you very much.
 
Lần chỉnh sửa cuối:
Upvote 0
B1: Mở một Workbook mới, nhấn Alt+F11 để vào VBA
B2: Copy hàm vừa mới dow về vào trang VBA đó rồi thoát khỏi VBA
B3: Save lại với đuôi là .xla(File/Save As chọn trong khung Save as type là Microsoft Excel Add-In) . Nhớ đường dẫn tới file này và đặt tên cho nó
Thường thì khi save như trên nó sẽ tự động save vào thư mục mặc định Add-In (Documents and Setings/Ten chủ máy/Application Data/Microsoft/AddIns)
B4: Vào Tools/Add In ======>Bowser =====>chọn đường dẫn tới file vừa save=====> OK
Thế là dùng thoải mái
Thân

Em ấn Alt + F11 nhưng không thấy hiện ra cái gì là sao ạ
 
Upvote 0
Không có gì hết tức là bạn chưa viết gì vào VBA cả? Bạn bắt đầu bằng tạo 1 Module mới. Bạn nhấn Alt + F11 -> nhấn phải chuột vào các tên sheet chọn Insert -> Module -> Rồi muốn viết gì vào đó thì cứ viêt nhưng phải đúng cú pháp. Cú pháp chính: Sub () '... đoạn code xử lý End Sub Ví dụ: Sub napso() Range("A1").Value = 1 End Sub Muốn chạy code thì bạn có thể nhấn vào biểu tượng Run hình giống nút Play ở thanh công cụ bên trên. Hoặc vào lại trang bảng tính nhấn Alt + F8 (tức là vào Tools -> Macro -> Macros) chọn tên sub vừa đặt -> Run. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Góp thêm một tí!
Bạn cũng có thể copy tập tin *.xla vừa mới tạo vào thư mục C:\Program Files\Microsoft Office\OFFICE11\XLSTART
Khởi động lại ứng dụng êxcl thế là dùng được...
 
Upvote 0
HÀM CỦA BAN HANDUNG107 LỖI CHỖ NÀY LA SAO?

iArr = Array("kh"ng", "mét", "hai", "ba", "bèn", "n¨m", "s¸u", "by", "t¸m", "chÝn")
 
Upvote 0
Bản đọc số update của em: http://www.mediafire.com/?2mjcizjmyez Đọc số tiếng Việt (Unicode, TCVN, VNI): viết gọn lại hơn và sửa lỗi, tuỳ chọn cách đọc. Đọc số tiếng Tây (cái này thì cần các anh kiểm tra lại cách đọc). Đọc tiền tệ và ngày tháng.
 
Upvote 0
Các bạn giúp mình với. Mình làm theo hướng dẫn nhưng vẫn không được. Tới khúc cuối là báo lỗi. Liệu có phải không tích hợp với Excel 2003
 
Upvote 0
Trợ giúp gấp

Tôi xin gửi các bạn hàm đổi số thành chữ của tôi, mong các bạn tham gia góp ý.
Để sử dụng:
1. Bạn Copy File UDF.XLA vào C:\Program Files\Microsoft Office\OFFICE11\Library
2. Mở Excel chọn Tools -> Add-ins rồi check vào UDF (Lưu ý phải để Tools->Macro->Security->Low)
Cách dùng: Tại ô cần đổi số thành chữ nhập =tien(địa chỉ ô hoặc số cần đổi) Enter.
Cách của bạn rất đơn giản, nhưng font chữ bị lỗi. Có thể giúp tôi khắc phục không. Cám ơn bạn nhiều.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Các bạn ơi với code này thì làm thế nào để thêm chữ "đồng" ở cuối vậy
Ví dụ: "Một trăm hai mươi ba tỷ, bốn trăm ba mươi bốn triệu, năm trăm sáu mươi bảy nghìn, tám trăm đồng"

Chứ không phải "
Một trăm hai mươi ba tỷ, bốn trăm ba mươi bốn triệu, năm trăm sáu mươi bảy nghìn, tám trăm"

Mong có sự phản hôig sớm, cảm ơn nhiều!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Các bạn ơi với code này thì làm thế nào để thêm chữ "đồng" ở cuối vậy
Ví dụ: "Một trăm hai mươi ba tỷ, bốn trăm ba mươi bốn triệu, năm trăm sáu mươi bảy nghìn, tám trăm đồng"

Chứ không phải "
Một trăm hai mươi ba tỷ, bốn trăm ba mươi bốn triệu, năm trăm sáu mươi bảy nghìn, tám trăm"

Mong có sự phản hôig sớm, cảm ơn nhiều!
Cách 1/ =docsouni(...) & " đồng"
Cách 2
Vào code sửa dòng gần cuối
PHP:
DocSoUni = conso
End If
End Function
Thành
PHP:
DocSoUni = conso
DocSoUni =DocSoUni & " đồng"
End If
End Function
 
Upvote 0
Em đã thử nhưng ko được bác ạ, bác có thể hướng dẫn em cho đoạn code "docsoabc" được ko
 
Upvote 0
Em đã thử nhưng ko được bác ạ, bác có thể hướng dẫn em cho đoạn code "docsoabc" được ko
Sorry bạn sửa lại như sau
PHP:
Else
DocSoAbc = conso
End If
End Function

Thành
PHP:
Else
DocSoAbc = conso
End If
DocSoAbc = DocSoAbc & " ®ång"
End Function
Trên End Function và dưới End If
 
Upvote 0
Cam on ban pham_duy_long va ban vungoc, minh da chuyen duoc so thanh chu. Nhung co 1 van de nua, hay giup minh. Chu cai dau tien lai ko phai la chu hoa, co cach nao sua, mach minh voi!
 
Upvote 0
Hàm đọc số với các tham số theo yêu cầu người dùng

Cam on ban pham_duy_long va ban vungoc, minh da chuyen duoc so thanh chu. Nhung co 1 van de nua, hay giup minh. Chu cai dau tien lai ko phai la chu hoa, co cach nao sua, mach minh voi!
Tôi đã viết lại hàm đọc số, hàm viết ngắn gọn hơn. Tất cả các chuỗi tiếng Việt đều đưa vào 2 mảng arNumarGrp, nếu có thay đổi cách đọc như ngàn/nghìn, bốn/, ... các bạn có thể thay đổi trong mảng là được.
Mỗi người dùng có yêu cầu khác nhau. Muốn hàm đáp ứng được các yêu cầu riêng, tôi bổ sung thêm 4 tham số để tùy chọn đơn vị, cách đọc linh lẻ, dấu tách nhóm, cách viết hoa.

Function DocSo(Number, DonVi, Le, Phay, Hoa)
Ý nghĩa các tham số:
Number: bắt buộc nhập, là số hoặc chuỗi có dạng số.
DonVi: không bắt buộc. Ngầm định không có đơn vị. DonVi nhập dạng chuỗi.
Le: không bắt buộc nhập. Ngầm định cách đọc "lẻ". Le nhập dạng chuỗi.
Phay: không bắt buộc nhập. Ngầm định không có dấu tách nhóm. Phay nhập dạng chuỗi.
Hoa: không bắt buộc nhập. Ngầm định viết hoa ký tự đầu tiên. Hoa nhập dạng Boolean:
_____________- TRUE hoặc số nguyên <>0: viết hoa ký tự đầu
_____________- FALSE hoặc 0: không viết hoa ký tự đầu.

Ví dụ đọc số 1.123.405 tại ô B2


Công thức​




|
Kết quả​




|
Ghi chú​


|
=Docso($B$2)|Một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm|Không có tham số DonVi, Le, Phay, Hoa (ngầm định)|
=Docso($B$2;"đồng")|Một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm đồng|Có tham số DonVi|
=Docso($B$2;"đồng";"linh")|Một triệu một trăm hai mươi ba ngàn bốn trăm linh năm đồng|Có tham số DonVi, Le|
=Docso($B$2;"đồng";"linh";"-")|Một triệu- một trăm hai mươi ba ngàn- bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu gạch " - " tách nhóm)|
=Docso($B$2;"đồng";"linh";",")|Một triệu, một trăm hai mươi ba ngàn, bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu phẩy " , " tách nhóm)|
=Docso($B$2;"đồng";"linh";",";0)|một triệu, một trăm hai mươi ba ngàn, bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu phẩy " , " tách nhóm), Hoa (viết chữ thường ký tự đầu)|
=Docso($B$2;"";"";"";0)|một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm|Bỏ qua DonVi, Le, Phay. Hoa (viết chữ thường ký tự đầu)|
Mã:
Function DocSo(Number As String, Optional DonVi As String = "", Optional Le As String = "", Optional Phay As String = "", Optional Hoa As Boolean = True) As String
Dim arNum, arGrp, dInt As String, dau As String, dvInt As String, s123 As String
Dim s1 As String, s2 As String, s3 As String, sNhom As String
Dim nId As Long, n03 As Long, n1 As Long, n2 As Long, n3 As Long
[COLOR=blue]arNum = Array(" không", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & ChrW(259) & "m", " sáu", " b" & ChrW(7843) & "y", " tám", " chín", " m" & ChrW(432) & ChrW(7901) & "i", " m" & ChrW(432) & ChrW(417) & "i", " m" & ChrW(7889) & "t", " l" & ChrW(7867), " b" & ChrW(7889) & "n", " l" & ChrW(259) & "m", " ch" & ChrW(7859) & "n", " không", ",", " l" & ChrW(7867))[/COLOR]
[COLOR=blue]arGrp = Array(" tr" & ChrW(259) & "m", " tri" & ChrW(7879) & "u", " ngàn", " t" & ChrW(7927), " âm", "", "")[/COLOR]
On Error GoTo baoloi
If Phay <> "" Then arGrp(5) = Trim(Phay)
If DonVi <> "" Then arGrp(6) = " " & Trim(DonVi)
If Le <> "" Then arNum(13) = " " & Trim(Le)
If Number < 0 Then
  Number = Abs(Number)
  dau = arGrp(4)
End If
dvInt = Int(Number)
n1 = ((Len(Str(dvInt)) - 1) Mod 9)
dvInt = String(9 - (((Len(Str(dvInt)) - 1) Mod 9) Mod 12), "0") & dvInt
n03 = 1
For nId = 1 To Len(dvInt) Step 3
  s1 = "": s2 = "": s3 = "": sNhom = ""
  If Mid(dvInt, nId, 3) = "000" Then
    s123 = ""
    [COLOR=red]If dInt <> "" And nId = 7 Then dInt = dInt & arGrp(3)[/COLOR]
  Else
    n1 = Mid(dvInt, nId, 1)
    n2 = Mid(dvInt, nId + 1, 1)
    n3 = Mid(dvInt, nId + 2, 1)
    If n1 = 0 And dInt <> "" Then s1 = arNum(0) & arGrp(0)
    If n1 > 0 Then s1 = arNum(n1) & arGrp(0)
    If n2 = 0 And (s1 = "" Or n3 = 0) Then s2 = ""
    If n2 = 0 And s1 <> "" And n3 > 0 Then s2 = arNum(13)
    If n2 = 1 Then s2 = arNum(10)
    If n2 > 1 Then s2 = arNum(n2) & arNum(11)
    If n3 = 1 And n2 <= 1 Then s3 = arNum(1)
    If n3 = 1 And n2 > 1 Then s3 = arNum(12)
    If n3 = 5 And n2 = 0 Then s3 = arNum(5)
    If n3 = 5 And n2 <> 0 Then s3 = arNum(15)
    If s3 = "" And n3 > 0 Then s3 = arNum(n3)
    s123 = s1 & s2 & s3
    If n03 = 3 And (dInt <> "" Or s123 <> "") And Len(dvInt) - nId > 9 Then sNhom = arGrp(3)
    If sNhom = "" And n03 < 3 Then sNhom = arGrp(n03)
    s123 = s123 & sNhom
    dInt = dInt & s123 & arGrp(5)
  End If
  If n03 = 3 Then n03 = 1 Else n03 = n03 + 1
Next
If dInt = "" Then dInt = arNum(0) Else dInt = dau & dInt
If Right(dInt, 1) = arGrp(5) Then dInt = Left(dInt, Len(dInt) - 1)
If Hoa = True Then
  DocSo = UCase(Left(Trim(dInt), 1)) & Mid(Trim(dInt) & arGrp(6), 2)
Else
  DocSo = Trim(dInt) & arGrp(6)
End If
Exit Function
baoloi:
DocSo = Number & " ?"
End Function
Hàm này cho Unicode, tôi sẽ viết tiếp các hàm cho VNI-Windows và TCVN3-ABC
 
Lần chỉnh sửa cuối:
Upvote 0
Hàm đọc số với các tham số theo yêu cầu người dùng (tt)

Chỉnh hàm DocSo(Number, DonVi, Le, Phay, Hoa) sử dụng cho bảng mã VNI-Windows và TCVN3-ABC:
Để sử dụng cho các bảng mã VNI-Windows và TCVN3-ABC, bạn chỉ cần thay 2 mảng arNumarGrp trong hàm DocSo bằng các bảng mã tương ứng:

VNI-Windows:
Mã:
arNum = Array(" khoâng", " moät", " hai", " ba", " boán", " naêm", " saùu", " baûy", " taùm", " chín", " möôøi", " möôi", " moát", " leû", " boán", " laêm", " chaún", " khoâng", ",", " leû")
arGrp = Array(" traêm", " trieäu", " ngaøn", " tyû", " aâm", "", "")

TCVN3-ABC:

Mã:
arNum = Array(" kh«ng", " mét", " hai", " ba", " bèn", " n¨m", " s¸u", " b¶y", " t¸m", " chÝn", " m­êi", " m­¬i", " mèt", " lÎ", " bèn", " l¨m", " ch¼n", " kh«ng", ",", " lÎ")
arGrp = Array(" tr¨m", " triÖu", " ngµn", " tû", " ©m", "", "")
 
Upvote 0
Tôi đã viết lại hàm đọc số, hàm viết ngắn gọn hơn. Mỗi người dùng có yêu cầu khác nhau. Muốn hàm đáp ứng được các yêu cầu riêng, tôi bổ sung thêm 4 tham số để tùy chọn đơn vị, cách đọc linh lẻ, dấu tách nhóm, cách viết hoa.

Function DocSo(Number, DonVi, Le, Phay, Hoa)

Hoa: không bắt buộc nhập. Ngầm định không viết hoa ký tự đầu tiên. Hoa nhập dạng Boolean: TRUE hoặc số nguyên <>0: viết hoa ký tự đầu FALSE hoặc 0: không viết hoa ký tự đầu.
Thưa Thầy, hình như tham số Hoa ngầm định là viết hoa đầu câu chứ ? Chỉ khi nào không muốn viết hoa đầu câu thì gõ số 0 vào chỗ đó ?
 
Upvote 0
Web KT
Back
Top Bottom