Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel Částka slovy - mezery

Dobrý den, chtěl bych požádat o radu ohledně kódu.

Function Slovy(Cis As Double) As String
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 IsEmpty(Cis) Then End
'
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", "dvěsta", "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
If Pol > 9 Then Slovy = ">999 999 999": Exit Function
Rad = 0 ' rad cislice v cisle
Slovy = ""
Do
pom = Mid(StrCis, Pol, 1)
If Pol > 1 Then
pom1 = Mid(StrCis, Pol - 1, 1)
Else
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) & " milionu "): Ofs = IIf(pom1 <> 1, 1, 2)
Case 7
pom2 = Des(pom): Ofs = 1
Case 8
pom2 = Sta(pom): Ofs = 1
End Select
'
Slovy = pom2 & Slovy
Pol = Pol - Ofs: Rad = Rad + Ofs
'
Loop While Pol > 0
Slovy = Trim(Slovy) & " korun českých" ' & " " & Right(StrCis, 2) ' pridani destinne casti
End Function

tento kód napíše určenou částku slovy: jedentisícosmsetpadesátjedna korun českých
A chtěl bych aby to psalo: jeden tisíc osm set padesát jedna korun českých

Děkuji za Vaši pomoc

Předmět Autor Datum
Zkoušet to nebudu, ale nestačí prostě upravit řetězce v uvozovkách? Místo "jeden" psát "jeden " ---…
L-Core 27.03.2021 10:02
L-Core
dobrý den, potřebuji tento slovní převod v excel tabulce. Prosím poradíte mi kam tento výše uvedený…
JitkaESN 16.12.2021 11:29
JitkaESN
Kuk sem: https://office.lasakovi.com/excel/funkce/funkce-excel-cislo-na-text/
host 16.12.2021 11:33
host
moc děkuji, toto jsem našla, ale bohužel to není připravené pro vyšší částky a nevím jak to upravit,…
JitkaESN 16.12.2021 11:46
JitkaESN
Nenapsala jsi, pro jaké částky to potřebuješ. V příkladu je napsáno: Ukázkový příklad funguje od 1…
host 16.12.2021 11:51
host
zkoušela jsem to zběžně no :/ , ano vidim že to je do 9999, ale nevím jak navazát dál až do té milia…
JitkaE 16.12.2021 12:48
JitkaE
Otázkou je, co chceš dělat s výsledkem. Doplněk - je to excel, který obsahuje pomocné funkce. Ale te…
Jan Fiala 16.12.2021 13:14
Jan Fiala
aha, takže by to u ostatních stejnak nefungovalo - děkuji to jsem netušila. No a uložit "makro" do e…
JitkaE 16.12.2021 13:47
JitkaE
pane Fialo, jestě si píšeme ve vlákně dotazu" Excel - částka slovy (původně word ) " , tak jsem to z… poslední
JitkaE 16.12.2021 13:49
JitkaE

moc děkuji, toto jsem našla, ale bohužel to není připravené pro vyšší částky a nevím jak to upravit, resp. nemám na to teď moc čas to zkoumat a jak to použit na ten přepis... to funguje na bázi zapišu číslo-> to se převede a ja ten text musím někam zkopírovat? a zase další číslo..atd. na to jsou různé online převaděče , potřebuji něco funkčního, zkusím asi např. NUM2TEXT popř slovy.xlam ( ikdyž to neznám ), přesto moc děkuji, třeba poradíte další trik ;-)

Nenapsala jsi, pro jaké částky to potřebuješ. V příkladu je napsáno:

Ukázkový příklad funguje od 1 do 9999 (požadavek byl na čísla od 50 do 5000). Klidně si jej můžete tento příklad doplnit až do několika miliard.

Asi jsi ten příklad ani nezkusila, viď? Jinak by ses neptala:

to funguje na bázi zapišu číslo-> to se převede a ja ten text musím někam zkopírovat?

Nic kopírovat nemusíš, text se automaticky zapíše do nastavené buňky.

zkoušela jsem to zběžně no :/ , ano vidim že to je do 9999, ale nevím jak navazát dál až do té miliardy.. v tom listě výpočet? pokračovat řádkem 13 a názvy si defakto nadefinovat ? ale dejme tomu že potřebuji číslo ( částku) 9999 převest... napíšu ho v listě 2 nebo v listě "výpočet" do bunky e16 a vyjde mi vysledek: devěttisícdevětsetdevadesát. ale tento výsledek potřebuji v jiné tabulce, kde mam velký seznam částek a tam nemohu mít tento pomocný excel ( ani to nechci propojovat - jelikož by to musel mít i nekdo další s kým to sdílím). omlouvám se, třeba to jen neznám, nejsem zadny it specialista, jen potřebuji zadat funkci do bunky " toto číslo mi převed na text ( částka slovy ) " - a s tímto si nedokážu poradit :-( . děkuji

Otázkou je, co chceš dělat s výsledkem.
Doplněk - je to excel, který obsahuje pomocné funkce. Ale ten musí nainstalovat všichni, kterým pak pošleš výsledný excel
Uložit "makro" do excelu, ve kterém provádíš výpočty. Pak to makro putuje s tím tvým excelem a nejsi závislá na tom, co má cílový uživatel nainstalováno
Použít hybrid - doplňkem si to necháš spočítat a výsledky převodu na text ve vzorci zkopíruješ jako hodnotu. Ale pak se to nebude měnit při změně čísla

aha, takže by to u ostatních stejnak nefungovalo - děkuji to jsem netušila. No a uložit "makro" do excelu - to nemám tuchy jak se dělá. jelikož mě tlačí čas, budu muset použit online převodník a do budoucna to více nastudovat, popř hledat jiné cesty. děkuji

Zpět do poradny Odpovědět na původní otázku Nahoru