Xin trợ giúp hàm tính khối lượng theo diễn giải (1 người xem)

Liên hệ QC

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

emconnhaxd

Thành viên chính thức
Tham gia
10/1/10
Bài viết
51
Được thích
0
Mình có một hàm đã nhờ các bạn viết là =KL(A)
Nhưng mình thấy nó lại làm tròn 3 con số, mình muốn nó không làm tròn số, xin mọi người giúp chỉnh sửa
 

File đính kèm

Lần chỉnh sửa cuối:
Đưa cái hàm ấy lên đây. Tôi ăn ở vệ sinh lắm, không download và mở file có macro đâu.
 
Function vnd(conso) As String
Dim nSheet As String
nSheet = ActiveSheet.Name
If nSheet <> "VLHT XD" And nSheet <> "VLHT TB" Then
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))
'Stop
If Trim(conso) = "" Then
vnd = ""
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(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 = " 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 = 1 Or n2 = 0 Then S3 = " m" & ChrW(7897) & "t" Else S3 = " m" & ChrW(7889) & "t"
ElseIf n3 = 5 And n2 <> 0 Then
S3 = " l" & ChrW(259) & "m"
ElseIf n3 = 4 And n2 <> 1 And n2 <> 4 And n1 = 4 Then S3 = " t" & ChrW(432)
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
vnd = UCase(Left(dau & Trim(docso), 1)) & Mid(dau & Trim(docso), 2) & " " & ChrW(273) & ChrW(7891) & "ng."
If Left(vnd, 2) = "T" & ChrW(432) Then
vnd = "B" & ChrW(7889) & "n" & Right(vnd, (Len(vnd) - 2))
End If
Else
'vnd = conso
End If
End If
End Function
Function vitri(kytu As String, chuoidc As String)
sodaucach = 0
For i = 1 To Len(chuoidc)
kytuchuoi = Mid(chuoidc, i, 1)
If kytuchuoi = kytu Then
vitri = i
End If
Next
End Function
Public Function kl(strText As String)
If Right(strText, 1) = " " Then
kl = "0"
Else
strText = Replace(strText, "m2", "")
strText = Replace(strText, "m3", "")
strText = Replace(strText, "M2", "")
strText = Replace(strText, "M3", "")
strText = Replace(strText, ",", ".")

If vitri(" ", strText) < Len(strText) And vitri(" ", strText) > 1 Then
strText = Right(strText, Len(strText) - vitri(" ", strText))
'Else
End If

kl = ""
For i = 1 To Len(strText)
kytu = Mid(strText, i, 1)
If kytu = "0" Or kytu = "1" Or kytu = "2" Or kytu = "3" Or kytu = "4" Or kytu = "5" Or kytu = "6" Or kytu = "7" _
Or kytu = "8" Or kytu = "9" Or kytu = "+" Or kytu = "-" Or kytu = "*" Or kytu = "/" Or kytu = "^" Or kytu = "." _
Or kytu = "," Or kytu = "(" Or kytu = ")" Or kytu = "%" Then
kl = kl & kytu
End If
Next
If kl = "" Then
kl = 0
End If
End If
If IsError(Evaluate(kl)) Then
kl = ""
Else
kl = Round(Evaluate(kl), 3)
If kl = 0 Then
kl = ""
End If
End If
End Function
Function USD(Tien)
If Tien = 0 Then
Toread = "None"
Else
SP = Space(1)
RR = Space(0)
Donvi = RR: Hchuc = RR: Khung = RR
Donvi = Donvi + "one two three four "
Donvi = Donvi + "five six seven eight "
Donvi = Donvi + "nine ten eleven twelve "
Donvi = Donvi + "thirteen fourteen fifteen sixteen "
Donvi = Donvi + "seventeeneighteen nineteen "
Hchuc = Hchuc + "twenty thirty forty fifty "
Hchuc = Hchuc + "sixty seventy eighty ninety "
Khung = Khung + "billion milion thousand dollars cents "
If Tien < 0 Then
Toread = "Minus "
Else
Toread = RR
End If
Chuoi = Format(Abs(Tien), "############.00")
Chuoi = Right(Space(12) + Chuoi, 15)
For i = 1 To 5
NHOM = Mid(Chuoi, i * 3 - 2, 3)
If NHOM <> Space(3) Then
Select Case NHOM
Case "000"
If i = 4 And Abs(Tien) > 1 Then
Word = "dollars "
Else
Word = RR
End If
Case ".00"
Word = "only"
Case Else
X = Val(Left(NHOM, 1))
Y = Val(Mid(NHOM, 2, 1))
Z = Val(Right(NHOM, 1))
W = Val(Right(NHOM, 2))
If X = 0 Then
Word = RR
Else
Word = Trim(Mid(Donvi, X * 9 - 8, 9)) + " hundred "
If W > 0 And W < 21 Then
Word = Word + "and "
End If
End If
If i = 5 And Abs(Tien) > 1 Then
Word = "and " + Word
End If
If W < 20 And W > 0 Then
Word = Word + Trim(Mid(Donvi, W * 9 - 8, 9)) + SP
Else
If W >= 20 Then
Word = Word + Trim(Mid(Hchuc, (Y - 1) * 9 - 8, 9)) + SP
If Z > 0 Then
Word = Word + Trim(Mid(Donvi, Z * 9 - 8, 9)) + SP
End If
End If
End If
Word = Word + Trim(Mid(Khung, i * 9 - 8, 9)) + SP
End Select
Toread = Toread + Word
End If
Next i
End If
USD = Trim(UCase(Left(Toread, 1)) + Mid(Toread, 2))
If Right(USD, 9) = "and cents" Then
USD = Left(USD, Len(USD) - 10)
End If
End Function
 
Tôi không có hứng sửa hàm. Nếu bạn ưng cái hàm ấy thì thay
Mã:
kl = Round(Evaluate(kl), 3)
bằng
Mã:
kl = Evaluate(kl)
 
Web KT

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

Back
Top Bottom