Các Bạn sửa giúp mình code đọc số thành chữ (1 người xem)

Liên hệ QC

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

ndhmoney686

Thành viên thường trực
Tham gia
25/4/12
Bài viết
376
Được thích
104
Các Bạn sửa giúp mình code hoặc sửa công thức đọc số thành chữ

Mình có ghi rõ và chi tiết ở trong file đính kèm. Mong các Bạn xem và giúp mình. Cảm ơn các Bạn nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Các Bạn xem giúp mình với. Phần đầu thì ok. Nhưng Cứ đến phần thập phân chuyển từ số sang chữ là bị lẫn cả đồng vào. Mong các Bạn ra tay giúp đỡ. Cảm ơn các Bạn!
 
Upvote 0
Các Bạn xem giúp mình với. Phần đầu thì ok. Nhưng Cứ đến phần thập phân chuyển từ số sang chữ là bị lẫn cả đồng vào. Mong các Bạn ra tay giúp đỡ. Cảm ơn các Bạn!
Mỗi người có 1 dạng thuật toán riêng
Bạn xem thử ý tưởng của mình coi có ứng dụng được không nhé

PS: Code copy từ diễn đàn về edit lại, không nhớ rõ của tác giả nào. Mình chỉ edit tới 9 số thôi, nếu hơn 9 chữ số thì phải tự sửa code lại. Để lại cho bạn có cái mà ngâm cứu.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mỗi người có 1 dạng thuật toán riêng
Bạn xem thử ý tưởng của mình coi có ứng dụng được không nhé

PS: Code copy từ diễn đàn về edit lại, không nhớ rõ của tác giả nào. Mình chỉ edit tới 9 số thôi, nếu hơn 9 chữ số thì phải tự sửa code lại nhé


Anh ơi đọc số sang chữ như này đúng ý em rồi Anh ạ.

Anh bổ sung giúp Em thêm chút nữa là: VD 12,345 thì đọc là "mười hai tấn, ba trăm bốn mươi lăm kg" tức là thêm giúp em dấu phẩy "," ở trước chỗ "ba trăm bốn mươi lăm kg."


Em cảm ơn Anh Quanghai1969 nhiều nhiều!
 

File đính kèm

Upvote 0
Anh ơi đọc số sang chữ như này đúng ý em rồi Anh ạ.

Anh bổ sung giúp Em thêm chút nữa là: VD 12,345 thì đọc là "mười hai tấn, ba trăm bốn mươi lăm kg" tức là thêm giúp em dấu phẩy "," ở trước chỗ "ba trăm bốn mươi lăm kg."

Thử lại thế này coi sao
 

File đính kèm

Upvote 0
C2 =IF(B2="","",SUBSTITUTE(TRIM(vnd(INT($B2))),"đồng chẵn","tấn")&IF(MOD($B2,1)=0,"",", " & LOWER(SUBSTITUTE(TRIM(vnd(MOD($B2,1)*1000)),"đồng chẵn","Kg"))))
 
Upvote 0
C2 =IF(B2="","",SUBSTITUTE(TRIM(vnd(INT($B2))),"đồng chẵn","tấn")&IF(MOD($B2,1)=0,"",", " & LOWER(SUBSTITUTE(TRIM(vnd(MOD($B2,1)*1000)),"đồng chẵn","Kg"))))


Anh ơi Em cho công thức của Anh vào nó ra toàn theo VND Anh ạ. Code này đọc cả VND và cả đơn vị tấn, kg. Vậy chắc phải có ô để nhận biết là loại nào để công thức đọc loại đó Anh nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Mình sửa Code giúp bạn, bạn nên thêm 1 code riêng biệt để đọc trọng lượng cho chuẩn. Code của bạn như sau:
[GPECODE=vb]
Function QText(NWeight)
Dim KetQua, Giatri, Nhom, Chu, Dich, S1, S2, S3 As String
Dim I, J, ViTri As Byte, S As Double
Dim Hang, Doc, Dem
If Trim(NWeight) = "" Then
QText = ""
Exit Function
ElseIf NWeight = 0 Then
QText = "kh" & ChrW(244) & "ng"
Exit Function
ElseIf IsNumeric(NWeight) = True Then
If Abs(NWeight) >= 1E+15 Then
KetQua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n"
Else
If NWeight < 0 Then
KetQua = ChrW$(194) & "m" & Space(1)
Else
KetQua = Space(0)
End If
Giatri = Format(Abs(NWeight), "##############0.000")
Giatri = Right(Space(15) & Giatri, 18)
Hang = Array("None", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "t" & ChrW(7845) & "n", "kg", "gram")
Dem = Array("None", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7849) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
For I = 1 To 6
Nhom = Mid(Giatri, I * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If I = 5 Then
Chu = "Kg" & Space(1)
Else
Chu = Space(0)
End If
Case ".000"
Chu = "ch" & ChrW$(7861) & "n"
Case Else
S1 = Left(Nhom, 1)
S2 = Mid(Nhom, 2, 1)
S3 = Right(Nhom, 1)
Chu = Space(0)
Hang(3) = Doc(I)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(Nhom, J, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 4) Then
Dich = "l" & ChrW$(7867) & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
ViTri = InStr(1, Chu, "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7897) & "t", 1)
If ViTri > 0 Then Mid(Chu, ViTri, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
KetQua = KetQua & Chu
End If
Next I
End If
End If
QText = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function[/GPECODE]
 

File đính kèm

Upvote 0
Anh ơi Em cho công thức của Anh vào nó ra toàn theo VND Anh ạ. Code này đọc cả VND và cả đơn vị tấn, kg. Vậy chắc phải có ô để nhận biết là loại nào để công thức đọc loại đó Anh nhỉ?

Phải được chứ. Tôi test rồi mới đưa lên:

DocsoTanKg.jpg
 
Upvote 0
Mình sửa Code giúp bạn, bạn nên thêm 1 code riêng biệt để đọc trọng lượng cho chuẩn. Code của bạn như sau:


Vậy Anh có thể đọc sang chữ kiểu như là
156.350 kg = 156,350 tấn thì đọc từ số sang chữ là "Một trăm năm mươi sáu tấn, ba trăm năm mươi kg" . Phần đầu đọc theo tấn, còn phần thập phân là đọc theo kg Anh ạ. Cảm ơn Anh đã giúp đỡ Em!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Xin lỗi, bài trước mình chưa test kỹ nên còn sai sót. Mình thấy bạn tính đến Kg nên Code điều chỉnh như sau cho đơn giản:
[GPECODE=vb]
Function QText(NWeight)
Dim KetQua, Giatri, Nhom, Chu, Dich, S1, S2, S3 As String
Dim I, J, ViTri As Byte, S As Double
Dim Hang, Doc, Dem
If Trim(NWeight) = "" Then
QText = ""
Exit Function
ElseIf NWeight = 0 Then
QText = "kh" & ChrW(244) & "ng"
Exit Function
ElseIf IsNumeric(NWeight) = True Then
If Abs(NWeight) >= 1E+15 Then
KetQua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n"
Else
If NWeight < 0 Then
KetQua = ChrW$(194) & "m" & Space(1)
Else
KetQua = Space(0)
End If
Giatri = Format(Int(Abs(NWeight)), "##############0.00")
Giatri = Right(Space(15) & Giatri, 18)
Hang = Array("None", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "t" & ChrW(7845) & "n", "kg", "")
Dem = Array("None", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7849) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
For I = 1 To 6
Nhom = Mid(Giatri, I * 3 - 2, 3)
If Nhom <> Space(3) Then
If Nhom = "000" Then
If I = 5 Then
Chu = "Kg" & Space(1)
Else
Chu = Space(0)
End If
Else
S1 = Left(Nhom, 1)
S2 = Mid(Nhom, 2, 1)
S3 = Right(Nhom, 1)
Chu = Space(0)
Hang(3) = Doc(I)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(Nhom, J, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 4) Then
Dich = "l" & ChrW$(7867) & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End If
ViTri = InStr(1, Chu, "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7897) & "t", 1)
If ViTri > 0 Then Mid(Chu, ViTri, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
KetQua = KetQua & Chu
End If
Next I
End If
End If
QText = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function[/GPECODE]

P/s: Gửi rồi mới đọc bài của bạn, may là đúng ý
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi, bài trước mình chưa test kỹ nên còn sai sót. Mình thấy bạn tính đến Kg nên Code điều chỉnh như sau cho đơn giản:

P/s: Gửi rồi mới đọc bài của bạn, may là đúng ý


Đúng rồi Anh ạ. Em cảm ơn Anh Sealand !
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0

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

Back
Top Bottom