logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel: Jak przekonwertować liczby na tekst, np. 343 na trzy, cztery, trzy?

michasp 19 Lis 2003 10:58 87701 21
REKLAMA
  • #1 405644
    michasp
    Poziom 17  
    Posty: 308
    Pomógł: 1
    Ocena: 11
    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ł.
  • REKLAMA
  • #2 405656
    Robiot
    Poziom 13  
    Posty: 81
    Pomógł: 5
    Ocena: 2
    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 405717
    s95
    Poziom 17  
    Posty: 247
    Pomógł: 19
    Ocena: 16
    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ć
    Załączniki:
    • liczba_slowa.txt (4.43 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 405719
    Enterek
    Poziom 17  
    Posty: 290
    Pomógł: 6
    Ocena: 28
    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.
    Załączniki:
    • Macro.xls (16.16 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #5 406870
    michasp
    Poziom 17  
    Posty: 308
    Pomógł: 1
    Ocena: 11
    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 406941
    s95
    Poziom 17  
    Posty: 247
    Pomógł: 19
    Ocena: 16
    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
    Załączniki:
    • Przyklad_przeliczania_liczba_slowa.xls (48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 407327
    Enterek
    Poziom 17  
    Posty: 290
    Pomógł: 6
    Ocena: 28
    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 411922
    michasp
    Poziom 17  
    Posty: 308
    Pomógł: 1
    Ocena: 11
    Witam!

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

    Pozdrawiam,

    Michał.
  • #9 2278291
    Bauer1234
    Poziom 2  
    Posty: 2
    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
  • REKLAMA
  • #10 2283582
    s95
    Poziom 17  
    Posty: 247
    Pomógł: 19
    Ocena: 16
    Bauer1234 napisał:

    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
    
    '****** 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
    Załączniki:
    • Przyklad_przeliczania_liczba_slowa(1).xls (48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 2286980
    Bauer1234
    Poziom 2  
    Posty: 2
    Wielkie dzięki

    Pozdrawiam
  • #12 7978462
    fzbych
    Poziom 1  
    Posty: 1
    Ocena: 1
    Dzięki za udostępnienie pliku

    Prawdziwa profeska :)
  • #13 8507649
    prywata50
    Poziom 1  
    Posty: 1
    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 9124487
    lukaszg17
    Poziom 1  
    Posty: 1
    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(_at_)op.pl bardzo pilne w pliku wysyłam gotowe makro jakie mam pobrałem z internetu
    Załączniki:
    • slownie.rar (17.2 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #15 9126362
    marek003
    Poziom 40  
    Posty: 4601
    Pomógł: 799
    Ocena: 483
    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 9129566
    Aldrin
    Poziom 22  
    Posty: 317
    Pomógł: 68
    Ocena: 49
    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 9911978
    banasiax1
    Poziom 2  
    Posty: 2
    Ocena: 1
    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 9911996
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Zmień czcionkę...
  • #19 9913078
    banasiax1
    Poziom 2  
    Posty: 2
    Ocena: 1
    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 10003874
    mikiholik
    Poziom 2  
    Posty: 4
    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 15230159
    roosiak
    Poziom 10  
    Posty: 16
    Ocena: 2
    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 15397811
    valdi125
    Poziom 10  
    Posty: 6
    Ocena: 3
    Bardzo, bardzo dawno temu zrobiłem tzw. dodatek do Excell'a, który działa jak na załączonych obrazkach (jako funkcja).
    Excel: Jak przekonwertować liczby na tekst, np. 343 na trzy, cztery, trzy? Excel: Jak przekonwertować liczby na tekst, np. 343 na trzy, cztery, trzy? Excel: Jak przekonwertować liczby na tekst, np. 343 na trzy, cztery, trzy?

Podsumowanie tematu

✨ Dyskusja dotyczy konwersji liczb na tekst w programie Excel, w szczególności zamiany cyfr na ich odpowiedniki słowne, np. 343 na "trzy, cztery, trzy". Użytkownicy proponują rozwiązania oparte na makrach VBA, które umożliwiają konwersję liczb na słowa, w tym kwoty wyrażone słownie z uwzględnieniem walut i odmian. Przykłady makr dostępne są na stronach internetowych oraz w załącznikach do postów. Poruszono kwestie implementacji makr w Excelu, w tym w Office 2000, oraz modyfikacji kodu VBA, np. zmiany wyświetlania groszy z formatu ułamkowego na tekstowy. Wskazano także problemy z polskimi znakami w anglojęzycznej wersji Excela i możliwe rozwiązania, takie jak zmiana czcionki. Dyskutowano o dostosowaniu makr do różnych walut (PLN, EURO) oraz o poprawkach w skryptach konwersji słownej liczb, zwłaszcza w odmianach liczebników dla tysięcy i milionów. Pojawiły się także propozycje gotowych dodatków do Excela realizujących funkcję konwersji liczb na tekst. Wskazano, że nie istnieje wbudowana funkcja Excela do takiej konwersji, dlatego konieczne jest użycie makr lub własnych słowników.
Wygenerowane przez model językowy.
REKLAMA