في كثير من الأحيان يحدث أننا بحاجة إلى العرض الأرقام المكتوبة باللغة الأوكرانية في Excel . على سبيل المثال، عرض عدد الصفحات في مستند كتابيًا - رقم
ولأغراض محاسبية أيضًا، يجب كتابة تكلفة المعاملة التجارية بالكلمات. على سبيل المثال المبلغ
ستجد أدناه وظيفة جاهزة على VBA، والتي تترجم أي رقم إلى تمثيله النصي باللغة الأوكرانية، أي في الرقم كتابيا . يجب إضافة هذه الميزة إلى كتابك قبل الاستخدام.
لهذا:
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(نص؛ عملة؛ مئات)
إذا في المعلمة "عمل" أدخل علامات الاقتباس المزدوجة الفارغة ( "" )، ثم سيتم عرض المبلغ ككل الرقم كتابيا :