Suma ciekawie

Spis treści

Poniżej znajdziesz gotową, zdefiniowaną przez użytkownika funkcję w VBA, która tłumaczy dowolną liczbę od 0 do 9 na jego reprezentację tekstową, tj. w ilości wyrażonej w słowach. Przed użyciem tę funkcję należy dodać do swojej książki. Dla tego:

  1. naciśnij skrót klawiaturowy ALT + F11aby otworzyć Edytor Visual Basic
  2. dodaj nowy pusty moduł za pomocą menu Wstaw – moduł
  3. skopiuj i wklej tam tekst tej funkcji:
Funkcja SUMA(n jako podwójna) jako ciąg Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", "jeden", "dwa", "trzy", "cztery", "pięć", "sześć", "siedem", "osiem", "dziewięć") Nums2 = Array("", "dziesięć", "dwadzieścia", "trzydzieści", "czterdzieści", "pięćdziesiąt", "sześćdziesiąt", "siedemdziesiąt", _ "osiemdziesiąt ", "dziewięćdziesiąt") Nums3 = Array("", "sto", "dwieście", "trzysta", "czterysta", "pięćset", "sześćset", "siedemset", _ " osiemset", "dziewięćset") Nums4 = Array("", "jeden", "dwa", "trzy", "cztery", "pięć", "sześć", "siedem", "osiem", "dziewięć ") Nums5 = Array("dziesięć", "jedenaście", "dwanaście", "trzynaście", "czternaście", _ "piętnaście", "szesnaście", "siedemnaście", "osiemnaście", "dziewiętnaście") Jeśli n < = 0 Then SUMWRITE = "zero" Exit Function End If 'podziel liczbę na cyfry za pomocą funkcji pomocniczej Class ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class (n, 4) dectys = Class(n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil= Class(n, 8) 'check millions Select Case decmil Case 1 mil_txt = Nums5(mil ) i „miliony " Idź do www Przypadek 2 do 9 decmil_txt = Nums2 (decmil) Koniec Wybierz Case mil Case 1 mil_txt = Nums1 (mil) & "million " Przypadek 2, 3, 4 mil_txt = Nums1 (mil) & "milion " Przypadek 5 do 20 mil_txt = Nums1(mil) & "milions " End Select www: sottys_txt = Nums3(sottys) ' sprawdź tysiące Wybierz Case dectys Case 1 tys_txt = Nums5(tys) & "thousands " Przejdź do eee Case 2 Do 9 dectys_txt = Nums2(dectys) End Select Select Case tys Case 0 If dectys > 0 Then tys_txt = Nums4(tys) & "thousands " Case 1 tys_txt = Nums4(tys) & "thousand " Case 2, 3, 4 tys_txt = Nums4(tys) & "thousands " Przypadek 5 do 9 tys_txt = Nums4(tys) & "thousands" End Select If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & "thousands" eee: sot_txt = Nums3(sot) 'sprawdź dziesiątki Wybierz przypadek dec Przypadek 1 ed_txt = Nums5(ed) GoTo rrr Przypadek 2 Do 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1 (ed) rrr: 'utwórz ostatni wiersz z SUM IN SPEECH = decmil_ txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt Koniec Fu nction ' Funkcja pomocnicza do wyodrębnienia z liczby cyfr Private Function Class(M, I) Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1)) Funkcja końcowa    

Zapisz plik (jeśli masz Excel 2007 lub 2010, to typ pliku musi być z obsługą makr, czyli format xlsm!) i wróć do Excela. Teraz możesz wstawić utworzoną funkcję do dowolnej komórki arkusza w zwykły sposób – za pomocą kreatora funkcji (przycisk fx w pasku formuły, kategoria Określony przez użytkownika) lub po prostu wpisując go w komórce ręcznie i określając komórkę z kwotą jako argumentem:

Jeśli chcesz dodać grosze do otrzymanego tekstu, możesz użyć nieco bardziej złożonej konstrukcji:

 u3d SUM W ZAPISIE (A3) i ” pocierać. „&TEKST((A3-CAŁKOWITA(A100))*00;”XNUMX”)”&”gliniarz.” 

u3d SUM W ZAPISIE (A3) i ” pocierać. „&TEKST((A3-INT(A100))*00;”XNUMX”)”&”gliniarz.”

Wtedy na przykład dla liczby 35,15 wynik funkcji będzie wyglądał jak „trzydzieści pięć rubli. 15 kop.”

 

  • Mocniejsza wersja funkcji z rublami i kopiejkami w języku / angielskim z dodatku PLEX
  • Czym są makra, gdzie wstawić kod makr, jak z nich korzystać

 

Dodaj komentarz