Discussion:
Hogyan lehet számot betűvé alakítani excelben?
(too old to reply)
Petya
2005-11-29 18:00:03 UTC
Permalink
A kérdésem nagyon egyszerű. Hogyan lehet azt megcsinálni, hogy az egyik
cellába beírok egy számot, akkor azt mellé autómatikusan hozza betűvel?
Remélem a válaszotok is egyszerű lesz, de én már feladtam.

Köszi

Petya
Stefi
2005-11-30 07:59:06 UTC
Permalink
A válasz valóban egyszerű: a mellékelt UDF-fel, csak megírni volt egy kicsit
bonyolultabb!

Üdv!
Stefi

Function Ftbetu(e, u, r)
' Feladata: Függvényértékként visszaadja az "E" egész szám értékét szöveggel
kiírva.
' Max. megengedett számérték: 999,999,999,999
' Tört szám esetén csak az egész rész szövegét adja vissza.
' Negatív szám esetén "mínusz"-szal kezdődik a szöveg.
' Paraméterek:
' e : a numerikus érték
' u : a zéró visszaadásának módját szabályozza: "" üres string, 0
"Nulla"
' r : a kész szöveg tagolását szabályozza, ha az 36 karakternél
hosszabb: 0:nem tagol, 1:első rész, 2:második rész
'***************************************************************************
elojel = IIf(e < 0, "mínusz ", "")
e = Int(Abs(e))
h = ""
s = ""
vs = ""
szoveg = ""
rnum = Val(r)
meret = 12
If e = 0 Then
If IsEmpty(u) Then
vs = ""
Else
vs = "Nulla"
End If
Else
If e > Val(String(meret, "9")) Then
vs = "Túl nagy szám!"
Else
c = LTrim(Str(e))
l = Len(c)
i = 1
Dim v1(9)
Dim v2(9)
Dim hen(4)
v1(1) = "egy"
v1(2) = "kettő"
v1(3) = "három"
v1(4) = "négy"
v1(5) = "öt"
v1(6) = "hat"
v1(7) = "hét"
v1(8) = "nyolc"
v1(9) = "kilenc"
v2(1) = "tizen"
v2(2) = "huszon"
v2(3) = "harminc"
v2(4) = "negyven"
v2(5) = "ötven"
v2(6) = "hatvan"
v2(7) = "hetven"
v2(8) = "nyolcvan"
v2(9) = "kilencven"
hen(1) = ""
hen(2) = IIf(l > 3, IIf(e > 2000, "ezer ", "ezer"), "")
hen(3) = IIf(l > 6, "millió ", "")
hen(4) = IIf(l > 9, "milliárd ", "")
Do While i <= WorksheetFunction.Min(Len(c), meret)
cssz = Int(i + 2) / 3
i1 = 1
s = ""
Do While i1 <= WorksheetFunction.Min(Len(c) - (cssz - 1) * 3, 3)
j = Mid(c, l, 1)
k = i - (cssz - 1) * 3
Select Case k
Case 1
h = IIf(j = "0", "", v1(Val(j)))
f1 = (j = "0")
Case 2
If Val(j) <= 2 And f1 Then
h = IIf(j = "0", "", IIf(j = "1", "tíz", "húsz"))
Else
h = IIf(j = "0", "", v2(Val(j)))
End If
Case 3
h = IIf(j = "0", "", v1(Val(j)) + "száz")
End Select
s = h + s
i1 = i1 + 1
i = i + 1
l = l - 1
Loop
s = s + IIf(Len(s) > 0, hen(cssz), "")
vs = s + vs
Loop
End If
End If
szoveg = elojel + vs
hossz = Len(szoveg)
If hossz <= 36 Then
If r < 2 Then
Ftbetu = szoveg
Else
Ftbetu = ""
End If
Else
If r = 0 Then
Ftbetu = szoveg
Else
reszszoveg = Split(szoveg, , 2)
Ftbetu = reszszoveg(r - 1)
End If
End If
End Function
Post by Petya
A kérdésem nagyon egyszerű. Hogyan lehet azt megcsinálni, hogy az egyik
cellába beírok egy számot, akkor azt mellé autómatikusan hozza betűvel?
Remélem a válaszotok is egyszerű lesz, de én már feladtam.
Köszi
Petya
Petya
2005-11-30 20:45:15 UTC
Permalink
Nagyon köszönöm a segítséget, de van még 1 problémám. Az excellel ezt hogyan
csináltatom meg?

Köszi még 1x

Petya
Post by Stefi
A válasz valóban egyszerű: a mellékelt UDF-fel, csak megírni volt egy kicsit
bonyolultabb!
Üdv!
Stefi
Function Ftbetu(e, u, r)
' Feladata: Függvényértékként visszaadja az "E" egész szám értékét szöveggel
kiírva.
' Max. megengedett számérték: 999,999,999,999
' Tört szám esetén csak az egész rész szövegét adja vissza.
' Negatív szám esetén "mínusz"-szal kezdődik a szöveg.
' e : a numerikus érték
' u : a zéró visszaadásának módját szabályozza: "" üres string, 0
"Nulla"
' r : a kész szöveg tagolását szabályozza, ha az 36 karakternél
hosszabb: 0:nem tagol, 1:első rész, 2:második rész
'***************************************************************************
elojel = IIf(e < 0, "mínusz ", "")
e = Int(Abs(e))
h = ""
s = ""
vs = ""
szoveg = ""
rnum = Val(r)
meret = 12
If e = 0 Then
If IsEmpty(u) Then
vs = ""
Else
vs = "Nulla"
End If
Else
If e > Val(String(meret, "9")) Then
vs = "Túl nagy szám!"
Else
c = LTrim(Str(e))
l = Len(c)
i = 1
Dim v1(9)
Dim v2(9)
Dim hen(4)
v1(1) = "egy"
v1(2) = "kettő"
v1(3) = "három"
v1(4) = "négy"
v1(5) = "öt"
v1(6) = "hat"
v1(7) = "hét"
v1(8) = "nyolc"
v1(9) = "kilenc"
v2(1) = "tizen"
v2(2) = "huszon"
v2(3) = "harminc"
v2(4) = "negyven"
v2(5) = "ötven"
v2(6) = "hatvan"
v2(7) = "hetven"
v2(8) = "nyolcvan"
v2(9) = "kilencven"
hen(1) = ""
hen(2) = IIf(l > 3, IIf(e > 2000, "ezer ", "ezer"), "")
hen(3) = IIf(l > 6, "millió ", "")
hen(4) = IIf(l > 9, "milliárd ", "")
Do While i <= WorksheetFunction.Min(Len(c), meret)
cssz = Int(i + 2) / 3
i1 = 1
s = ""
Do While i1 <= WorksheetFunction.Min(Len(c) - (cssz - 1) * 3, 3)
j = Mid(c, l, 1)
k = i - (cssz - 1) * 3
Select Case k
Case 1
h = IIf(j = "0", "", v1(Val(j)))
f1 = (j = "0")
Case 2
If Val(j) <= 2 And f1 Then
h = IIf(j = "0", "", IIf(j = "1", "tíz", "húsz"))
Else
h = IIf(j = "0", "", v2(Val(j)))
End If
Case 3
h = IIf(j = "0", "", v1(Val(j)) + "száz")
End Select
s = h + s
i1 = i1 + 1
i = i + 1
l = l - 1
Loop
s = s + IIf(Len(s) > 0, hen(cssz), "")
vs = s + vs
Loop
End If
End If
szoveg = elojel + vs
hossz = Len(szoveg)
If hossz <= 36 Then
If r < 2 Then
Ftbetu = szoveg
Else
Ftbetu = ""
End If
Else
If r = 0 Then
Ftbetu = szoveg
Else
reszszoveg = Split(szoveg, , 2)
Ftbetu = reszszoveg(r - 1)
End If
End If
End Function
Post by Petya
A kérdésem nagyon egyszerű. Hogyan lehet azt megcsinálni, hogy az egyik
cellába beírok egy számot, akkor azt mellé autómatikusan hozza betűvel?
Remélem a válaszotok is egyszerű lesz, de én már feladtam.
Köszi
Petya
Ligeti Zsolt
2005-11-30 21:02:43 UTC
Permalink
Helló Stefi,

Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Stefi
2005-12-01 08:32:03 UTC
Permalink
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására, de ez
már a következő lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!

Ettől fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sőt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!

Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Petya
2005-12-01 14:31:03 UTC
Permalink
Stefi!!!!!!

Nem is tudom mit mondhatnék. Több napi munkát spóroltál meg vele nekem. HA
egy hatalamas nagy köszönöm elég, akkor KÖSZÖNÖM!!!!!!!

petya
Post by Stefi
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására, de ez
már a következő lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!
Ettől fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sőt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!
Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Ligeti Zsolt
2005-12-01 14:45:59 UTC
Permalink
Én is Nagyon KÖSZÖNÖM

Esetleg a következõ lecke is érdekelne "közösen használható függvények
létrehozására"

Zsolt
Post by Stefi
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására, de ez
már a következõ lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!
Ettõl fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sõt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!
Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Stefi
2005-12-02 07:55:02 UTC
Permalink
Ezek szerint sikerült működésre bírni, ennek örülök!

Lecke "közösen használható függvények létrehozására":

Van egy Personal.xls nevű rejtett fájl a
C:\Documents and Settings\felhasználónév\Application
Data\Microsoft\Excel\Xlstart\
mappában, ami az Excel indításakor automatikusan megnyílik, ezt az
Ablak/Felfedés-sel lehet láthatóvá tenni. Ha ebben helyezed el a függvény
vagy a Sub kódját, akkor az minden munkafüzetedből elérhető lesz (persze csak
azon a gépen, amelyen ez a Personal.xls létezik), a függvénybeszúró ablakban
is megjelenik, ha innen szúrod be, látni fogod, hogyan kell rá hivatkozni:
Personal.xls!függvénynév()

Üdv!
Stefi
Post by Ligeti Zsolt
Én is Nagyon KÖSZÖNÖM
Esetleg a következő lecke is érdekelne "közösen használható függvények
létrehozására"
Zsolt
Post by Stefi
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására, de ez
már a következő lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!
Ettől fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sőt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!
Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Ligeti Zsolt
2005-12-12 11:14:41 UTC
Permalink
Stefi
Nagyon köszönöm.
Ugyan magát az eredeti függvényedet ritkán használom, de most már vödör
szára van saját függvényem. :-))
Zsolt
Ezek szerint sikerült mûködésre bírni, ennek örülök!
Van egy Personal.xls nevû rejtett fájl a
C:\Documents and Settings\felhasználónév\Application
Data\Microsoft\Excel\Xlstart\
mappában, ami az Excel indításakor automatikusan megnyílik, ezt az
Ablak/Felfedés-sel lehet láthatóvá tenni. Ha ebben helyezed el a függvény
vagy a Sub kódját, akkor az minden munkafüzetedbõl elérhetõ lesz (persze
csak
azon a gépen, amelyen ez a Personal.xls létezik), a függvénybeszúró ablakban
Personal.xls!függvénynév()
Üdv!
Stefi
Post by Ligeti Zsolt
Én is Nagyon KÖSZÖNÖM
Esetleg a következõ lecke is érdekelne "közösen használható függvények
létrehozására"
Zsolt
Post by Stefi
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására,
de
ez
már a következõ lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!
Ettõl fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sõt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!
Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Krizsák László
2005-12-27 17:20:09 UTC
Permalink
Egy másik megoldás:

Beteszed egy új munkafüzetbe egy modullapra a programot.

A munkafüzetet (Fájl > Mentés másként) "Microsoft Office Excel bővítmény
(xla)"-ként mented el.

Bezárod

A Eszközök > Bővítménykezelő-be Tallózással megkeresed, és bekapcsolod.
Post by Ligeti Zsolt
Én is Nagyon KÖSZÖNÖM
Esetleg a következő lecke is érdekelne "közösen használható függvények
létrehozására"
Zsolt
Post by Stefi
Megnyitod a munkafüzetet, amelyben létre akarod hozni (csak ebben lesz
használható, ha másik munkafüzetben is akarod használni, akkor abban is létre
kell hozni, ill. van mód közösen használható függvények létrehozására, de ez
már a következő lecke)!
Eszközök/Makró/Visual Basic
Insert/Module, erre megjelenik a Module1 ablak, ide bemásolod a kódot!
Ettől fogva létezik az UDF, ugyanúgy hívható, mint a beépített függvények,
pl.: =Ftbetu(A1;0;0)
sőt az fx függvénybeszúró gombbal is beszúrhatók (a Felhasználói
függvénykategória alatt található)!
Üdv!
Stefi
Post by Ligeti Zsolt
Helló Stefi,
Ez a dolog nekem is jól jönne.
Hogy kell ezt UDF-el megcsinálni?
(röviden hogy kell UDF-et csinálni?
Zsolt
Loading...