Excel vs prevod čísiel na text.

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Odpovědět
harley1
nováček
Příspěvky: 13
Registrován: 25 zář 2007 17:09

Excel vs prevod čísiel na text.

Příspěvek od harley1 »

Zaujímalo by ma, či sa dajú nejakým spôsobom, prevádzať číselné hodnoty na textové vyjadrenie?

Napr. 1300 tisíctristo
Uživatelský avatar
mike007
Master Level 7.5
Master Level 7.5
Příspěvky: 5860
Registrován: 01 srp 2007 18:10
Bydliště: Pardubice
Kontaktovat uživatele:

Re: Excel vs prevod čísiel na text.

Příspěvek 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.
Přílohy
pc-help_3738.xls
ukázka
(34.5 KiB) Staženo 51 x
Nejlepší hra je Excel!
Pravidla fóra PC-helpJak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: 29 srp 2008 16:49

Re: Excel vs prevod čísiel na text.

Příspěvek 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
harley1
nováček
Příspěvky: 13
Registrován: 25 zář 2007 17:09

Re: Excel vs prevod čísiel na text.

Příspěvek od harley1 »

Tu som objavil jedno makro na prevádzanie čísiel na textové vyjadrenie. Je to v Slovenskom jazyku...
Přílohy
Funkcia_Slovom_3.xls
(53 KiB) Staženo 88 x
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14464 Zobrazení
    Poslední příspěvek od Snekment
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7388 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    5965 Zobrazení
    Poslední příspěvek od atari
  • Excel 2016 - vzorec kombinace podmínek
    od MK_Vs » » v Kancelářské balíky
    5 Odpovědi
    6186 Zobrazení
    Poslední příspěvek od lubo.

Zpět na „Kancelářské balíky“