X

Konwersja - cyfra => tekst - Excel ?

19 Nov 2003 10:58 MImichasp
  • #1 19 Nov 2003 10:58
    michasp
    Level 17  
    Helpful post? (+1)
    Witam!

    Czy ktoś wie, czy jest możliwość konwersji w Excelu tabeli z liczbami, np. 343, 35, 1245 etc. na "wartości" tekstowe. Może jakaś gotowa funkcja? Nie musi to być trzysta czterdzieści trzy, trydzieści pięć ... Mogłoby to być np. trzy, cztery, trzy. Nie poruszam się na codzień w Excelu i nie mam większych z nim doświadczeń, więc proszę o pomoc.

    Pozdrawiam,

    Michał.
  • #2 19 Nov 2003 11:05
    Robiot
    Level 12  
    Helpful post? (0)
    Chodzi ci dokładnie o przypisanie konkretnej liczby to jakiegoś tekstu?
    Tak ogólnie to knwersje ale podstawowe np. zamiana cyfr arabskich na rzymski, zamiana np ilości sekund na gg.mm.ss itd. trzeba poszukać.

    Jeśli chcesz przypisać liczbę do słowa, to musisz to zrobić to na piechotę:
    Napisać "bazę" "słownika" i porównywać kolejne wartości.
  • #3 19 Nov 2003 12:13
    s95
    Level 17  
    Helpful post? (0)
    Witam
    Na stronie www.vba.matrix.pl , w przykładach znajdziesz to czego szukasz.
    Kiedyś w sieci znalazłem konwersje „liczb -> do postaci kwot słownie. :cry: Po delikatnych przeróbkach tego makra załączam makro do umieszczenia w Excelu. Konwersja liczby na słowa.

    Pozdrawiam S95

    PS
    Wszystko jest proste do czasu, jak nie zaczniesz programować
  • #4 19 Nov 2003 12:16
    Enterek
    Level 17  
    Helpful post? (0)
    Najprościej napisac makro. Ale ponieważ popieram leniwych a sam juz takie macro mam to podziele się nim :D
    W załączniku macro, które konwertuje wartość liczbowa na opis tekstowy. W zalezności od wywołania (parametry) mozna zmieniac język na angielski, zmieniać przedrostki lub waluty itp.
    Miłego używania.
  • #5 20 Nov 2003 08:44
    michasp
    Level 17  
    Topic author Helpful post? (0)
    Witam!

    Dziękuję za przesłane makra, jak to zaimplementować w excelu? Mam Office2000 i motam się z tym od rana, a zależy mi, żeby mi to działało. Jak zrobić, żeby makro pojawiło się w programie? Czy to działa tak, że mam przypuśćmy arkusz z liczbami, a makro skonwertuje mi to w drugi arkusz z wartościami słownymi? Sorry za takie pytanka, ale jestem kiepski w xcelu, pomóżcie mi proszę. Z góry dziękuję.

    Pozdrawiam,
    Michał.
  • #6 20 Nov 2003 09:43
    s95
    Level 17  
    Helpful post? (0)
    Witam
    Nie ma sprawy, moge pomóc. Przeslij na maila plik Excela lub dołącz załacznik.

    Pozdrawiam S95
    Dodałem załącznik z przykładowym obliczaniem
    S95
  • #7 20 Nov 2003 16:30
    Enterek
    Level 17  
    Helpful post? (0)
    Chyba się spóźniłem i mnie s95 wyprzedził :-)
    Ale w razie problemów pisz na mejla. Podeślę przykład w excelu do makra, które zamieściłem.
  • #8 24 Nov 2003 10:55
    michasp
    Level 17  
    Topic author Helpful post? (0)
    Witam!

    Dziękuję za makra i przykłady, przydały się bardzo!

    Pozdrawiam,

    Michał.
  • #9 08 Feb 2006 21:59
    Bauer1234
    Level 2  
    Helpful post? (0)
    Mam problem w Marku który załączył S95 nie wyświetlają mi się zł ani grosze tylko jest np. "piętnaście , czterdzieści siedem" A znowu w Marku który załączył Enterek wyświetla mi się "piętnaście złotych, 47/100" Może ktoś pomóc, (możliwe że coś robię źle - Macrco załączam przez Narzędzia=>Makro=>Edytor Visual Basic)

    Wie ktoś może jak zmienić żeby zamiast 47/100
    wyświetlało czterdzieści siedem i naljepiej groszy
  • #10 10 Feb 2006 08:37
    s95
    Level 17  
    Helpful post? (0)
    Bauer1234 wrote:

    Wie ktoś może jak zmienić żeby zamiast 47/100
    wyświetlało czterdzieści siedem i naljepiej groszy


    Witam
    Aby było tak jak chcesz nalezy trochę zmienić w MODULES makro "Liczba_slowa"
    tutaj załączam to co zmieniłem
    Code:

    '****** TUTAJ ZMIANA   TAK BYŁO WCZEŚNIEJ
    ' varZLOTE = Array("zero, ", ", ", ", ", ", ")
    ' a teraz poprawnie
     varZLOTE = Array("zero  zł,", "zł, ", "zł, ", "zł, ")
    '****** TUTAJ ZMIANA   TAK BYŁO WCZEŚNIEJ
    'varGROSZE = Array("zero ", " ", " ", " ")
    ' poprawne nazwy groszy
     varGROSZE = Array("zero groszy", "grosz ", "grosze ", "groszy ")

    teraz już powinno działać.
    Odnośnie uruchomienia to możesz robić tak jak napisałeś, lub za pomocą przypisanego przycisku.
    Załączam przerobiony pliczek.
    Pozdrawiam
    S95
  • #11 10 Feb 2006 22:18
    Bauer1234
    Level 2  
    Helpful post? (-1)
    Wielkie dzięki

    Pozdrawiam
  • #12 19 Apr 2010 10:41
    fzbych
    Level 1  
    Helpful post? (0)
    Dzięki za udostępnienie pliku

    Prawdziwa profeska :)
  • #13 13 Sep 2010 21:40
    prywata50
    Level 1  
    Helpful post? (0)
    Mam skrypt ściągnięty z netu do konwersji w ekcelu słownie kwoty , niestety z błędem ( autor nie odpowiada). Błędnie konwertuje nst. liczby: 1000 - jeden tysięcy, 12000 - dwanaście tysiące, 13000 - trzynaście tysiące, 14000 - czternaście tysiące ( to samo z milionami, bilionami itp).
    Załączam skrypt i proszę szanowne forum o poprawienie i udostepnienie z poprawką.
    Z góry dziękuję.
    Na dole skrypt:

    'skrypt sciagniety ze strony www.grzegorzsurowiec.pl
    Option Compare Binary 'typ porownania stringów: binarny
    Option Explicit 'wymusza deklaracje zmiennych

    'deklaracja zmiennych
    Private Male As Variant
    Private Nascie As Variant
    Private Duze As Variant

    'tworzenie metody
    'parametr 'l' kwota z akrusza w formacie Currency

    Function Słownie(ByVal l As Currency) As String

    'definicja zmiennych
    Dim S, temp As String
    Dim zl As Currency
    Dim g, i, gr, pos, j, koncowka As Integer
    'zmienna trzyma grupy cyfr -
    'na razie 4: tysiące, miliony, miliardy, biliony
    Dim rozdziel(0 To 3) As Variant

    'tworzenie tablic
    Male = Array( _
    Array("", "jeden", "dwa", "trzy", "cztery", "pięć", "sześć", _
    "siedem", "osiem", "dziewięć"), _
    Array("", "", "dwadzieścia", "trzydzieści", "czterdzieści", _
    "pięćdziesiąt", "sześćdziesiąt", "siedemdziesiąt", _
    "osiemdziesiąt", "dziewięćdziesiąt"), _
    Array("", "sto", "dwieście", "trzysta", "czterysta", "pięćset", _
    "sześćset", "siedemset", "osiemset", "dziewięćset") _
    )

    Nascie = Array("dziesięć", "jedenaście", "dwanaście", "trzynaście", _
    "czternaście", "piętnaście", "szesnaście", "siedemnaście", _
    "osiemnaście", "dziewiętnaście")

    Duze = Array( _
    Array("tysiąc", "tysiące", "tysięcy"), _
    Array("milion", "miliony", "milionów"), _
    Array("miliard", "miliardy", "miliardów"), _
    Array("bilion", "biliony", "bilionów") _
    )

    l = WorksheetFunction.Round(l, 2) 'zaokraglamy do groszy
    zl = WorksheetFunction.Floor(l, 1) 'zapisuje czesc całkowitą
    gr = (l - zl) * 100 'zapisujemy grosze

    S = CStr(zl) 'zmieniamy kwotę na stringa

    'inicjalizacja zmiennych potrzebnych do obsługi pętli
    i = 0
    g = 0
    'inicjuj grupę
    rozdziel(g) = Array(-1, -1, -1)

    For pos = Len(S) - 1 To 0 Step -1

    'zapisujemy jeden znak do odpowiedniej pozycji w grupie
    rozdziel(g)(i) = CByte(Mid(S, pos + 1, 1))

    'tworzymy nową grupę cyfr
    If i = 2 And pos > 0 Then
    g = g + 1 'nowy id grupy
    i = -1 'przy nastepnej petli i = 0
    rozdziel(g) = Array(-1, -1, -1) 'inicjujemy nową grupę
    End If

    i = i + 1
    Next

    S = "" 'czyscimy zmienna S ktora będzie "zbierała" kwotę słownie

    For i = 0 To g

    temp = ""

    For j = 2 To 0 Step -1 'poruszamy się po grupie od końca

    'analizujemy tylko wartości różne od -1
    If rozdziel(i)(j) > -1 Then

    If j = 1 Then
    'sprawdzamy czy środkowa cyfra nie jest cyfrą 1
    'aby wywołać tablicę NASCIE
    If rozdziel(i)(j) = 1 Then
    temp = temp & Nascie(rozdziel(i)(0)) & " "
    'czyścimy pierwszą liczbę w grupie bo już nie jest potrzebna
    rozdziel(i)(0) = -1
    Else:
    If rozdziel(i)(j) > 0 Then temp = temp & Male(j)(rozdziel(i)(j)) & " "
    End If
    Else:
    If rozdziel(i)(j) > 0 Then temp = temp & Male(j)(rozdziel(i)(j)) & " "
    End If

    End If

    Next

    'ostatnia cyfra z tysiaca jest zdefiniowana
    If rozdziel(i)(2) > -1 Then
    If i + 1 <= g Then 'jest nastepna grupa cyfr
    'ustalamy koncówkę dla tablicy DUZE

    'analizujemy pierwszą cyfrę w kolejnej grupie
    Select Case CByte(rozdziel(i + 1)(0))
    Case 1: koncowka = 0
    Case 2, 3, 4: koncowka = 1
    Case Else: koncowka = 2
    End Select

    'analizujemy drugą cyfrę w kolejnej grupie
    If rozdziel(i + 1)(0) = 1 Then
    koncowka = 2
    End If

    'jeśli następna grupa nie jest pusta dodaj wartość z tablicy DUZE
    If rozdziel(i + 1)(0) > 0 Or rozdziel(i + 1)(1) > 0 Or _
    rozdziel(i + 1)(2) > 0 Then
    'if i==0
    S = Duze(i)(koncowka) & " " & temp & S
    Else: S = temp & S
    End If
    Else: S = temp & S
    End If

    Else: S = temp & S
    End If

    Next

    'wyświetl liczbę słownie
    Słownie = Trim(S) & " zł " & Format(CDbl(gr), "00") & "/100"
    End Function
  • #14 08 Feb 2011 23:41
    lukaszg17
    Level 1  
    Helpful post? (0)
    Witam serdecznie mam problem odnośnie zamiany liczby na teks ponieważ liczba zamieniana wyrażana jest w PLN a mi jest potrzebna w EURO czy ma ktoś gotowe makro bądź wie jak to zrobić inaczej proszę o jakieś propozycje na maila lukaszg17(malpa)op.pl bardzo pilne w pliku wysyłam gotowe makro jakie mam pobrałem z internetu
  • #15 09 Feb 2011 15:10
    marek003
    Level 39  
    Helpful post? (0)
    Niestety to makro jest zablokowane hasłem więc nie da się go wyedytować i poprawić "PLN" na "EURO" (Jeżeli znasz hasło to podaj).

    Załóż na przyszłość własny topik.
  • #16 10 Feb 2011 00:34
    Aldrin
    Level 22  
    Helpful post? (+1)
    Funkcja w tym pliku ma postać:
    SLOWNIE(kwota; [język-opcja] = "POL"; [waluta-opcja] = "PLN"; [określenie waluty/odmiana-opcja] = 0)

    można napisać np. tak:
    =slownie(A1; "POL"; "złoty"; 0)

    Jeśli w A1 wpisana będzie liczba 417,53 to otrzymamy wynik:
    czterysta siedemnaście złotych, 53/100

    Z opcji można korzystać, ale nie jest to konieczne- jak to w opcjach bywa ;)
  • #17 09 Sep 2011 22:28
    banasiax1
    Level 2  
    Helpful post? (0)
    Super narzędzie, natomiast czy jest mi ktoś w stanie wytłumczyć dlaczego u mnie nie wyświetlają się polskie znaki?

    Podaję przykład:
    1 jeden z³, zero groszy
    22,21 dwadzieœcia dwa z³, dwadzieœcia jeden groszy
    333,32 trzysta trzydzieœci trzy z³, trzydzieœci dwa grosze
    44,43 czterdzieœci cztery z³, czterdzieœci trzy grosze
    66,54 szeœædziesi¹t szeœæ z³, piêædziesi¹t cztery grosze
    77,65 siedemdziesi¹t siedem z³, szeœædziesi¹t piêæ groszy
    88,78 osiemdziesi¹t osiem z³, siedemdziesi¹t osiem groszy
    99,89 dziewiêædziesi¹t dziewiêæ z³, osiemdziesi¹t dziewiêæ groszy
  • #18 09 Sep 2011 22:32
    adamas_nt
    Moderator Programowanie
    Helpful post? (0)
    Zmień czcionkę...
  • #19 10 Sep 2011 12:59
    banasiax1
    Level 2  
    Helpful post? (0)
    dzięki, ale to nie pomaga, problem wynika myśle z tego, że mam angielską wersję Excela a co za tym idzie VBA. Czy mogę problem rozwiązać w inny sposób niż zmiana języka ?
  • #20 07 Oct 2011 23:22
    mikiholik
    Level 1  
    Helpful post? (0)
    Czekam na szybką wiadomość. JBC nawet na pocztę.
    r c k k r d @ g m a i l . c o m

    Jest proste rozwiązanie bez żadnego chorego MAKRA.
    Chcę zrobić następującą rzecz którą kiedyś zrobiłem ale dziś już nie pamiętam.

    Zrobiłem listę wyboru np.:
    ABC
    KJH
    OLP
    Lista znajduje się przykładowo w polu A1
    Następnie w polu B2 wpisuję jakąś wartość np. 123
    Kolejno w polu C1 pragnę uzyskać WYNIK A1*B2

    Oczywiście nie mogę mnożyć wyrazu, jednak istnieje funkcja dzięki której w komórce będę miał ABC lecz będzie się kryła pod wyrazem ustalona prze zemnie cyfra np ABC = 2
    WYNIK A1*B1=246
    (chyba robiłem to tak że do komurki np N12 wpisywałem ABC, a do komórki M12 wpisywałem np 12 kolejno finkcja =WYNIK.JEŻEL(WYRAZ(N12;M12;...))Funkcję wpisełem w polu O12 której użyłem do stworzenia listy. Takich pól z innymi wartościami zrobiłem z 3 i już była lista. To jest źle ale tylko przykład o co mi chodzi)
    Pytanie! Jaką funkcję muszę ustawić dal jakiejś tam komórki aby wyświetlało się np ABC a jej wartością było np 123

    NIE JAKIES TAM MAKRA
  • #21 11 Dec 2015 10:56
    roosiak
    Level 8  
    Helpful post? (0)
    Witam!
    Wykorzystałem makro kolegi Enterka. Mam tylko jeden problem. Jak poprawić makro, żeby w excelu nie wyświetlało się np jeden tysiąc tylko poprostu tysiąc?
  • #22 02 Feb 2016 21:38
    valdi125
    Level 7  
    Helpful post? (0)
    Bardzo, bardzo dawno temu zrobiłem tzw. dodatek do Excell'a, który działa jak na załączonych obrazkach (jako funkcja).
    Konwersja - cyfra =&gt; tekst - Excel ? Konwersja - cyfra =&gt; tekst - Excel ? Konwersja - cyfra =&gt; tekst - Excel ?
Mouser  Search 4 million + Products
Browse Products