Eiro summas pārveidošana vārdos, izmantojot Microsoft Excel

Eiro-Vardos
Rakstā pieejams macro funkcijas kods, kas pārveido naudas summas EUR vārdos latviešu valodā. Šobrīd internetā jau ir kaut kas latviskots atrodams, bet katrā no tiem ir savas nianses, kuras var traucēt, lai iegūtu precīzu rezultātu. Šobrīd izveidotie pārveidojumi, ar kuriem iegūstama summa vārdiem, darbojās līdz triljoniem un drošvien Latvijā ar to vajadzētu pietikt, bet tāpat aprakstīšu, kā to var pielāgot citām valūtām un viss kods ir pieejams un modificējams.

Par iedvesmu un bāzi kalpoja Microsoft vietnē atrodamais funkcijas kods, kuru pielāgoju latviešu valodas īpatnībām, padarīju ērtāku un pielāgoju aktuālajai valūtai eiro un centiem. Galu galā nācās iepazīties, kā tad valodnieki lēmuši par eiro un centu pierakstu, par ko vēlreiz pārliecinājos šeit.

Pēc Latvijas Bankas iniciatīvas 2014. gada 19. februārī notika tikšanās, kurā piedalījās Valsts valodas centra, Finanšu ministrijas, Valsts kancelejas speciālisti un kuras laikā tika noteikts – Eiropas valūtas oficiālais saīsinājums (valūtas kods) EUR kā vēlamais variants turpmāk latviešu valodā rakstāms aiz summas ar saistīto atstarpi. Piemēram: 25,33 EUR (divdesmit pieci eiro un trīsdesmit trīs centi).
Par vēlamo EUR pierakstu. 20.02.2014. / Valsts valodas centrs /

Funkcija, kura izpilda pārveidojumus saucas EiroVardos un rezultāts ir bez saistītās atstarpes. Zemāk ir instrukcija, kā to pievienot.

Lejupielādēt to vari šeit dažādos veidos:
1. xls vai xlsm formā;
2. xla vai xlam formā kā programmu, kas tiek pievienota Excel;
3. vai arī iekopēt zemāk esošo kodu pēc instrukcijas.

Ja kaut kas nav kā tam vajadzētu būt, tad droši pievieno savu komentāru.

Funkciju, ar kuru iegūstama summa vārdiem, var pievienot nepieciešamajam failam šādi:
1. atrodoties attiecīgajā Excel failā ar kombināciju Alt + F11 jāatver Visual Basic logs;
2. jāizveido jauns modulis, kurā iekopē zemāk redzamo kodu.

Ja rezultātu ir nepieciešams iegūt ar saistīto atstarpi, tad rindiņa EiroVardos = Eiro & Cents jāaizstāj ar EiroVardos = Replace(Eiro & Cents, Chr$(32), Chr$(160))



14 komentāri Rakstīt komentāru

  1. Sveiks !

    Man neizdevās. Tiek uzrādīts, ka mainīgais nav definēts. Lai gan paņemot oriģinālo no MS lapas, viss sanāk.

  2. Jānis, paldies par Jūsu darbu! Bet šī funkcija nestrādā korekti mana failā (gālotnes un mikstīnājumi) Kad es izveidoju moduli un nokopēju kodu uz Visual Basic, tur kods nokopēts jau nekorekti((( Atvērot Jūsu failu no komentāri, arī tāda kļūda ((( Es esmu grāmatvedis, šī funkcija ir ļoti noderīga, bet es nesaprotu , kā man izlabot?

  3. super, viss rullē! tikai gribētos, lai “nulle” centu vietā būtu “00” centi, un 51 cents rakstās kā centi.

  4. Sveiki,

    Ja kādam ir problēmas ar latviešu burtiem, nepiesiešams samainīt “Current language for non-Unicode programms”. To var izdarīt: Control panel -> Clock, language and Region -> Region -> Administrative -> Change system locale

  5. Tā pati problēma ar mīkstinājuma zīmēm, vai kāds zin, kā šo salabot mac OSX vidē?

  6. Uz Windows viss strādā, bet OSX latviešu mīkstinājuma zīmes nestrādā, kāds varētu ieteikt kā OSX to var salabot?

  7. 397.51
    trоs simti deviтdesmit septiтi eiro un piecdesmit viens centi

    ar locījumiem ir problema un diakritiskiem zīmem.

  8. Kādas izmaiņas kodā ir jāievieš, lai teikuma sākumā būtu lielais burts, un kādas izmaiņas, lai centi būtu nevis vārdiem, bet skaitļiem??

  9. Sākt ar lielo burtu ir salīdzinoši vienkārši.
    75. rindiņā definētās funkcijas rezultātu var pārtaisīt ar teksta apstrādes funkcijām.
    EiroVardos = UCase(Left(Eiro & Cents, 1)) & Mid(Eiro & Cents, 2, Len(Eiro & Cents) - 1)

    Ja vajag nomainīt arī centus uz skaitļiem, tad kodu no 27. līdz 75. rindiņai var aizvietot ar šo:

    If DecimalPlace > 0 Then
    Cents = CLng(Left(Mid(MyNumber, DecimalPlace + 1) & _
    "00", 2))
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If

    If (Len(MyNumber) > 4 And Mid(Right(MyNumber, 5), 1, 2) = "11") Or Mid(Right(MyNumber, 4), 1, 1) <> "1" Then Place(2) = " tūkstoši "
    If (Len(MyNumber) > 7 And Mid(Right(MyNumber, 8), 1, 2) = "11") Or Mid(Right(MyNumber, 7), 1, 1) <> "1" Then Place(3) = " miljoni "
    If (Len(MyNumber) > 10 And Mid(Right(MyNumber, 11), 1, 2) = "11") Or Mid(Right(MyNumber, 10), 1, 1) <> "1" Then Place(4) = " miljardi "
    If (Len(MyNumber) > 13 And Mid(Right(MyNumber, 14), 1, 2) = "11") Or Mid(Right(MyNumber, 13), 1, 1) <> "1" Then Place(5) = " triljoni "

    Count = 1
    Do While MyNumber <> ""
    Temp = GetHundreds(Right(MyNumber, 3))
    If Temp <> "" Then Eiro = Temp & Place(Count) & Eiro
    If Len(MyNumber) > 3 Then
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    Else
    MyNumber = ""
    End If
    Count = Count + 1
    Loop

    Select Case Eiro
    Case ""
    Eiro = "nulle eiro"
    Case Else
    Eiro = Eiro & "eiro"
    End Select

    Select Case Right(Cents, 1)
    Case 1
    Cents = " un " & Cents & " cents"
    Case ""
    Cents = " un 0 centi"
    Case Else
    Cents = " un " & Cents & " centi"
    End Select

    EiroVardos = UCase(Left(Eiro & Cents, 1)) & Mid(Eiro & Cents, 2, Len(Eiro & Cents) - 1)

  10. Paldies par kodu.

    Ja drīkst piebilst – ir viena neprecizitāte.

    Ja lieto sākotnējo kodu, kad centi ir ar vārdiem, tad gadījumā, ja skaitlī ir apaļi desmiti, piemēram 320.00, tad pirms vārda “eiro” ir 2 atstarpes, bet ja skaitlī ir “vieni”, piemēram 325.00, tad pirms vārda “eiro” ir 1 atstarpe.

    Ja lieto kodu, kad centi ir ar cipariem, tad gadījumā, ja skaitlī ir apaļi desmiti, piemēram 320.00, tad pirms vārda “eiro” ir 1 atstarpe, bet ja skaitlī ir “vieni”, piemēram 325.00, tad pirms vārda “eiro” nav atstarpes.

    Varbūt šo var kaut kā labot?

  11. Uz iepriekšējā excel strādāja perfekti, uz jaunā ir problēma garumzīmes un mīkstinājuma zīmes neatpazīst, piemēram, 40 raksta ēetrdesmit.

  12. Man ir problēma ar noapaļošanu, excel rāda 100,97 bet apakšā ir 100,965 un automātiski tiek ielikts 100,96 (vārdiem), kur to var izlabot?