TOP
Somma, numeri, numero scritto in ucraino
Descrizione
Molto spesso capita che abbiamo bisogno di visualizzare numeri scritti in ucraino in Excel . Ad esempio, visualizza il numero di pagine di un documento per iscritto: un numero "27" COME "Двадцять сім" .
Inoltre, a fini contabili, il costo di una transazione commerciale deve essere scritto in parole. Ad esempio, l'importo 10 568,23 mostrare per iscritto come "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп." , cioè necessario somma in lingua ucraina , ma Excel non ha una funzione standard per tali scopi.
VBA codice per la funzione SUMINWORDS
Di seguito troverai una funzione già pronta su VBA, che traduce qualsiasi numero nella sua rappresentazione testuale in ucraino, cioè in numero per iscritto .
Questa funzionalità deve essere aggiunta al tuo libro prima dell'uso.
Per questo:
- Premi ALT+F11 per aprire l'editor Visual Basic
- Aggiungi un nuovo modulo vuoto attraverso il menu Insert - Module
- Copia e incolla il testo di questa funzione lì:
- Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
-
- Dim Nums1, Nums2, Nums3, Nums4 As Variant
-
- Nums0 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums1 = Array("", "один ", "два ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums2 = Array("", "десять ", "двадцять ", "тридцять ", "сорок ", "п'ятдесят ", "шістдесят ", "сімдесят ", _
- "вісімдесят ", "дев'яносто ")
- Nums3 = Array("", "сто ", "двісті ", "триста ", "чотириста ", "п'ятсот ", "шістсот ", "сімсот ", _
- "вісімсот ", "дев'ятсот ")
- Nums4 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums5 = Array("десять ", "одинадцять ", "дванадцять ", "тринадцять ", "чотирнадцять ", _
- "п'ятнадцять ", "шістнадцять ", "сімнадцять ", "вісімнадцять ", "дев'ятнадцять ")
-
- If n < 1 Then
- SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
-
- If curr = "" Then
- SUMINWORDS = "Нуль"
- End If
-
- Exit Function
- End If
-
- 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)
- sotmil = Class(n, 9)
- bil = Class(n, 10)
-
-
- Select Case bil
- Case 1
- bil_txt = Nums1(bil) & "мільярд "
- Case 2 To 4
- bil_txt = Nums1(bil) & "мільярди "
- Case 5 To 9
- bil_txt = Nums1(bil) & "мільярдів "
- End Select
-
-
- Select Case sotmil
- Case 1 To 9
- sotmil_txt = Nums3(sotmil)
- End Select
-
- Select Case decmil
- Case 1
- mil_txt = Nums5(mil) & "мільйонів "
- GoTo www
- Case 2 To 9
- decmil_txt = Nums2(decmil)
- End Select
-
- Select Case mil
- Case 0
- If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "
- Case 1
- mil_txt = Nums1(mil) & "мільйон "
- Case 2, 3, 4
- mil_txt = Nums1(mil) & "мільйона "
- Case 5 To 9
- mil_txt = Nums1(mil) & "мільйонів "
- End Select
-
- If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "
-
- www:
- sottys_txt = Nums3(sottys)
-
-
- Select Case dectys
- Case 1
- tys_txt = Nums5(tys) & "тисяч "
- GoTo eee
- Case 2 To 9
- dectys_txt = Nums2(dectys)
- End Select
-
- Select Case tys
- Case 0
- If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "
- Case 1
- tys_txt = Nums4(tys) & "тисячa "
- Case 2, 3, 4
- tys_txt = Nums4(tys) & "тисячі "
- Case 5 To 9
- tys_txt = Nums4(tys) & "тисяч "
- End Select
-
- If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "
-
- eee:
- sot_txt = Nums3(sot)
-
-
- Select Case dec
- Case 1
- ed_txt = Nums5(ed)
- GoTo rrr
- Case 2 To 9
- dec_txt = Nums2(dec)
- End Select
-
- ed_txt = Nums0(ed)
-
- rrr:
-
- SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
- & tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
-
- If curr = "" Then
- SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
- & tys_txt & sot_txt & dec_txt & ed_txt
- End If
-
- SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
-
- End Function
-
-
- Private Function Class(M, I)
- Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
- End Function
Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
' moonexcel.com.ua
Dim Nums1, Nums2, Nums3, Nums4 As Variant
Nums0 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums1 = Array("", "один ", "два ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums2 = Array("", "десять ", "двадцять ", "тридцять ", "сорок ", "п'ятдесят ", "шістдесят ", "сімдесят ", _
"вісімдесят ", "дев'яносто ")
Nums3 = Array("", "сто ", "двісті ", "триста ", "чотириста ", "п'ятсот ", "шістсот ", "сімсот ", _
"вісімсот ", "дев'ятсот ")
Nums4 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums5 = Array("десять ", "одинадцять ", "дванадцять ", "тринадцять ", "чотирнадцять ", _
"п'ятнадцять ", "шістнадцять ", "сімнадцять ", "вісімнадцять ", "дев'ятнадцять ")
If n < 1 Then
SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
If curr = "" Then
SUMINWORDS = "Нуль"
End If
Exit Function
End If
' dividiamo il numero in cifre utilizzando la funzione ausiliaria Classe
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)
sotmil = Class(n, 9)
bil = Class(n, 10)
' controllando miliardi
Select Case bil
Case 1
bil_txt = Nums1(bil) & "мільярд "
Case 2 To 4
bil_txt = Nums1(bil) & "мільярди "
Case 5 To 9
bil_txt = Nums1(bil) & "мільярдів "
End Select
' controllando milioni
Select Case sotmil
Case 1 To 9
sotmil_txt = Nums3(sotmil)
End Select
Select Case decmil
Case 1
mil_txt = Nums5(mil) & "мільйонів "
GoTo www
Case 2 To 9
decmil_txt = Nums2(decmil)
End Select
Select Case mil
Case 0
If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "
Case 1
mil_txt = Nums1(mil) & "мільйон "
Case 2, 3, 4
mil_txt = Nums1(mil) & "мільйона "
Case 5 To 9
mil_txt = Nums1(mil) & "мільйонів "
End Select
If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "
www:
sottys_txt = Nums3(sottys)
' ne controlliamo migliaia
Select Case dectys
Case 1
tys_txt = Nums5(tys) & "тисяч "
GoTo eee
Case 2 To 9
dectys_txt = Nums2(dectys)
End Select
Select Case tys
Case 0
If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "
Case 1
tys_txt = Nums4(tys) & "тисячa "
Case 2, 3, 4
tys_txt = Nums4(tys) & "тисячі "
Case 5 To 9
tys_txt = Nums4(tys) & "тисяч "
End Select
If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "
eee:
sot_txt = Nums3(sot)
' controlliamo dozzine
Select Case dec
Case 1
ed_txt = Nums5(ed)
GoTo rrr
Case 2 To 9
dec_txt = Nums2(dec)
End Select
ed_txt = Nums0(ed)
rrr:
' costituiscono la riga finale
SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
& tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
If curr = "" Then
SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
& tys_txt & sot_txt & dec_txt & ed_txt
End If
SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
End Function
' funzione ausiliaria per la selezione dal numero di cifre
Private Function Class(M, I)
Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function
Salvare il file e tornare a Excel.
Utilizzando la funzione
Ora puoi inserire la funzione creata in qualsiasi cella del foglio di questo libro nel solito modo, tramite la procedura guidata della funzione (pulsante
nella barra della formula, categoria Definito dall'utente (User defined) oppure semplicemente digitandolo manualmente nella cella e specificando la cella con la somma come argomento. Inoltre, nei parametri della funzione, puoi specificare il nome della valuta (grivna, dollaro, euro, ecc.) e il nome dei centesimi (penny, centesimi, ecc.):
=SUMINWORDS(testo; valuta; centinaia)
Se nel parametro "valuta" inserire virgolette doppie vuote ( "" ), l'importo verrà visualizzato nel suo complesso numero per iscritto :
Articoli sull'argomento: