Cựu Học Sinh Lê Quý Đôn - Long An

Cựu Học Sinh Lê Quý Đôn - Long An (http://www.lqdlongan.com/forum/index.php)
-   OpenOffice.org (http://www.lqdlongan.com/forum/forumdisplay.php?f=240)
-   -   Hàm đổi Số sang Chữ trong OpenOffice.org Calc (http://www.lqdlongan.com/forum/showthread.php?t=5865)

jubei_ludu 21-08-2008 09:34 AM

Hàm đổi Số sang Chữ trong OpenOffice.org Calc
 
Ở đây hẳn các bạn đã quá quen thuọc việc sử dụng các hàm viết bằng VB Script trong Excel để hỗ trợ trong công việc văn phòng.


Hôm nay tôi xin giới thiệu 2 hàm dùng trong Open Office.org Calc (Bộ phần mềm văn phòng mã nguồn mở - miễn phí 100%).


Hai hàm này có chức năng ĐỔI SỐ -> CHỮ (ĐỒNG VIỆT NAM và DOLLAR)


Code:

Function VND(BaoNhieu)
  Dim KetQua, SoTien, Nhom, Chu, Dich, S1, S2, S3 As String
  Dim I, J, ViTri As integer , S As double
  Dim Hang, Doc, Dem
  If BaoNhieu = 0 Then
    KetQua = "Không đồng"
  Else
    If Abs(BaoNhieu) > 999999999999.99 Then
      KetQua = "Số quá lớn"
    Else
      If BaoNhieu < 0 Then
        KetQua = "triệu" & Space(1)
      Else
        KetQua = Space(0)
      End If
      SoTien = Format(Abs(BaoNhieu), "###########0.00")
      SoTien = Right(Space(12) & SoTien, 15)
      Hang = Array("None", "trăm", "mươi", "nghìn")
      Doc = Array("None", "tỷ", "triệu", "ngàn", "đồng", "xu")
      Dem = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
      For I = 1 To 5
        Nhom = Mid(SoTien, I * 3 - 2, 3)
        If Nhom <> Space(3) Then
          Select Case Nhom
            Case "000"
              If I = 4 Then
                Chu = "ngàn" & Space(1)
              Else
                Chu = Space(0)
              End If
            Case ".00"
              Chu = "chẵ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ườ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ẻ" & Space(1)
                  End If
                End Select
                Chu = Chu & Dich
              Next J
            End Select
            ViTri = InStr(1, Chu, "mười một", 1)
            If ViTri > 0 Then Mid(Chu, ViTri, 9) = "mười một"
            KetQua = KetQua & Chu
          End If
        Next I
      End If
    End If
  VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
  End Function

Function USD(AMT)
 Dim ToRead, Chuoi, Nhom, Word As String
  Dim I, J As integer , W, X, Y, Z As Double
  Dim DonVi, HChuc, Khung
  If AMT = 0 Then
    ToRead = "None"
  Else
    DonVi = Array("None", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
    HChuc = Array("None", "None", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
    Khung = Array("None", "billion", "million", "thousand", "dollars", "cents")
    If AMT < 0 Then
      ToRead = "Minus" & Space(1)
    Else
      ToRead = Space(0)
    End If
    Chuoi = Format(Abs(AMT), "############.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(AMT) > 1 Then
            Word = "dollars" & Space(1)
          Else
            Word = Space(0)
          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 = Space(0)
          Else
            Word = DonVi(X) & Space(1) & "hundred" & Space(1)
            If W > 0 And W < 21 Then
              Word = Word & "and" & Space(1)
            End If
          End If
          If I = 5 And Abs(AMT) > 1 Then
            Word = "and" & Space(1) & Word
          End If
          If W < 20 And W > 0 Then
            Word = Word & DonVi(W) & Space(1)
          Else
            If W >= 20 Then
              Word = Word & HChuc(Y) & Space(1)
              If Z > 0 Then
                Word = Word & DonVi(Z) & Space(1)
              End If
            End If
          End If
          Word = Word & Khung(I) & Space(1)
        End Select
        ToRead = ToRead & Word
      End If
    Next I
  End If
  USD = UCase(Left(ToRead, 1)) & Mid(ToRead, 2)
End Function

Nguồn: [Only registered and activated users can see links. Click Here To Register...]


Múi giờ GMT +7. Hiện tại là 06:00 PM.

Website sử dụng phần mềm vBulletin phiên bản 3.6.8
do Công ty TNHH Jelsoft giữ bản quyền từ 2000 - 2024.
Hội CHS Lê Quý Đôn-Long An giữ bản quyền nội dung của website này