Stránka 1 z 1

Excel vs prevod čísiel na text.

Napsal: 14 zář 2009 19:46
od harley1
Zaujímalo by ma, či sa dajú nejakým spôsobom, prevádzať číselné hodnoty na textové vyjadrenie?

Napr. 1300 tisíctristo

Re: Excel vs prevod čísiel na text.

Napsal: 14 zář 2009 20:12
od mike007
Je to možné. Excelová funkce ale na to neexistuje. Je potřeba si napsat vlastní. Podívej se na tuto stránku. Tam najdeš kompletní funkci, která to dokáže. Bude jen potřeba si převést názvy čísel z angličtiny do slovenštiny.

Re: Excel vs prevod čísiel na text.

Napsal: 14 zář 2009 21:33
od navstevnik
Preklad nazvu cislic neni slozity, komplikovanejsi je pojmenovani radu - jeden tisic, dva, tri, ctyri tisice, pet, sest,.., devet tisic; milion, miliony, milionu.
Nize je funkce pouzitelna v Excelu, Accesu i Wordu - prevod so sloveciny je trivialni:

Kód: Vybrat vše

Option Explicit

Function Slovy1(Cis) As String ' bez mezer mezi slovy
Dim StrCis As String
Dim LenCis As Byte, Rad As Integer, Ofs As Byte
Dim Pol As Byte, pom As String, pom1 As String, pom2 As String
Dim Jedn As Variant, Des1 As Variant, Des As Variant, Sta As Variant
Dim JednTM As Variant, Tis As Variant, Mil As Variant
'
  If Not IsNumeric(Cis) Then Slovy1 = "Hodnota není číslo!": Exit Function
  If Cis > 999999999 Then Slovy1 = "Hodnota>999 999 999!": Exit Function
'
  Jedn = Array("", "jedna", "dvě", "tři", "čtyři", _
    "pět", "šest", "sedm", "osm", "devět")
  Des1 = Array("deset", "jedenáct", "dvanáct", "třináct", "čtrnáct", _
    "patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct")
  Des = Array("", "", "dvacet", "třicet", "čtyřicet", "padesát", _
    "šedesát", "sedmdesát", "osmdesát", "devadesát")
  Sta = Array("", "jednosto", "dvasta", "třista", "čtyřista", _
    "pětset", "šestset", "sedmset", "osmset", "devětset")
  Tis = Array("tisíc", "tisíc", "tisíce", "tisíce", "tisíce", _
    "tisíc", "tisíc", "tisíc", "tisíc", "tisíc")
  JednTM = Array("", "jeden", "dva", "tři", "čtyři", _
    "pět", "šest", "sedm", "osm", "devět")
  Mil = Array("milionů", "milion", "miliony", "miliony", "miliony", _
  "milionů", "milionů", "milionů", "milionů", "milionů")
'
'
  StrCis = CStr(Format(Cis, "0.00"))
  Pol = InStr(StrCis, ",") - 1 ' poloha radu jednotek v cisle
  Rad = 0 ' rad cislice v cisle
  Slovy1 = ""
  Do
    pom = Mid(StrCis, Pol, 1)
    If Pol > 1 Then ' hodnota vyssiho radu nez aktualni
      pom1 = Mid(StrCis, Pol - 1, 1)
    Else ' hodnota pro nejvyssi aktualni rad
      pom1 = "0"
    End If
'
    Select Case Rad
      Case 0
        pom2 = IIf(pom1 <> 1, Jedn(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
      Case 1
        pom2 = Des(pom): Ofs = 1
      Case 2
        pom2 = Sta(pom): Ofs = 1
      Case 3
        pom2 = IIf(pom1 <> 1, JednTM(pom), Des1(pom)): Ofs = IIf(pom1 <> 1, 1, 2)
        If Pol > 3 Then ' kdyz zustavaji jeste >3 cislice
          If Mid(StrCis, Pol - 2, 3) <> "000" Then
            pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc") ' a jsou i tisice -> vlozeni slova tisic
          Else
            Ofs = 3 ' preskoci na rad 6 - miliony
          End If
        Else ' kdyz zustava jeste <3 cislice -> vlozeni slova tisic
          pom2 = pom2 & IIf(pom1 <> 1, Tis(pom), "tisíc")
        End If
      Case 4
        pom2 = Des(pom): Ofs = 1
      Case 5
        pom2 = Sta(pom): Ofs = 1
      Case 6
        pom2 = IIf(pom1 <> 1, JednTM(pom) & Mil(pom), Des1(pom) & "milionù"): Ofs = IIf(pom1 <> 1, 1, 2)
      Case 7
        pom2 = Des(pom): Ofs = 1
      Case 8
        pom2 = Sta(pom): Ofs = 1
    End Select
'
    Slovy1 = pom2 & Slovy1
    Pol = Pol - Ofs: Rad = Rad + Ofs
'
  Loop While Pol > 0
  Slovy1 = Trim(Slovy1) ' & " " & Right(StrCis, 2) ' pridani destinne casti
End Function

Re: Excel vs prevod čísiel na text.

Napsal: 15 zář 2009 19:07
od harley1
Tu som objavil jedno makro na prevádzanie čísiel na textové vyjadrenie. Je to v Slovenskom jazyku...