TOP

مجموع والأرقام، عدد مكتوب باللغة الأوكرانية

وصف

في كثير من الأحيان يحدث أننا بحاجة إلى العرض الأرقام المكتوبة باللغة الأوكرانية في Excel . على سبيل المثال، عرض عدد الصفحات في مستند كتابيًا - رقم "27" مثل "Двадцять сім" .

ولأغراض محاسبية أيضًا، يجب كتابة تكلفة المعاملة التجارية بالكلمات. على سبيل المثال المبلغ 10 568,23 عرض في الكتابة كيف "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп." ، أي ضروري المبلغ باللغة الأوكرانية ، لكن Excel ليس لديه وظيفة قياسية لمثل هذه الأغراض.


VBA كود الدالة SUMINWORDS

ستجد أدناه وظيفة جاهزة على VBA، والتي تترجم أي رقم إلى تمثيله النصي باللغة الأوكرانية، أي في الرقم كتابيا . يجب إضافة هذه الميزة إلى كتابك قبل الاستخدام.

لهذا:

  1. اضغط على ALT+F11 لفتح محرر Visual Basic
  2. إضافة وحدة فارغة جديدة من خلال القائمة Insert - Module
  3. انسخ والصق نص هذه الوظيفة هناك:
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
 ' نقوم بتقسيم الرقم إلى أرقام باستخدام الدالة المساعدة 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)
 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

احفظ الملف ثم عد إلى Excel.

باستخدام الوظيفة

يمكنك الآن إدراج الوظيفة التي تم إنشاؤها في أي خلية من ورقة هذا الكتاب بالطريقة المعتادة - من خلال معالج الوظائف (زر في شريط الصيغة، الفئة تعريف المستخدم (User defined) أو ببساطة عن طريق كتابتها في الخلية يدويًا وتحديد الخلية التي تحتوي على المجموع كوسيطة. أيضًا، في معلمات الوظيفة، يمكنك تحديد اسم العملة (الهريفنيا، الدولار، اليورو، وما إلى ذلك) واسم المئات (البنسات، السنتات، وما إلى ذلك):

=SUMINWORDS(نص؛ عملة؛ مئات)

إذا في المعلمة "عمل" أدخل علامات الاقتباس المزدوجة الفارغة ( "" )، ثم سيتم عرض المبلغ ككل الرقم كتابيا :

مقالات حول الموضوع: