أعلان الهيدر

24 يوليو 2022

تحويل الارقام الى حروف في الاكسيل (التفقيط)
الرئيسية تحويل الارقام الى حروف في الاكسيل (التفقيط)

تحويل الارقام الى حروف في الاكسيل (التفقيط)

 




لتحويل الارقام الى حروف في الاكسيل لابد من دالة او صيغة معينة للقيام بذلك بسهولة ، لذلك كان لابد من ايجاد دالة مناسبة لذلك ، ولكنها غير متوفرة في برنامج في الاكسيل .

لذلك قمنا بايجاد كود برمجي للدالة ويمكن استخدامها من خلال ادخال الكود وتعريفه على برنامج الاكسيل ، حتى نتمكن من اظهار الدالة بسهولة واستخدامها كما نستخدم بقية الدوال في الاكسيل .

خطوات ادخال الكود البرمجي :-

1- نذهب لقائمة المطور في برنامج الاكسيل .

2- ننقر علي ايقونة visual basic .

3- تظهر لنا نافذة جديدة ننقر على قائمة ادراج في هذه النافذة .

4- نقوم بلصق الكود البرمجي في الحقل الذي يظهر امامنا .

5- نقوم بحفظ الكود .

6- لتطبيق الدالة نكتب = NumberToText

7- نضغط على ايقونة fx لاظهار مكونات الدالة في القائمة التي تظهر امامنا .

8- المكون الاول "Number"هو الرقم او المبلغ المراد تحويله الى كلمات .

9- المكون الثاني للدالة "Main Currency" وهي العملة الرئيسية للمبلغ ، (جنيه مصري على سبيل المثال)

10- المكون الثالث للدالة "Sub Currency" وهي العملة الفرعية للمبلغ ، (قرش على سبيل المثال).


كود الدالة :-

*** بداية الكود ***


Function NumberToText(Number As Double, MainCurrency As String, SubCurrency As String)

Dim Array1(0 To 9) As String

Dim Array2(0 To 9) As String

Dim Array3(0 To 9) As String

Dim MyNumber As String

Dim GetNumber As String

Dim ReadNumber As String

Dim My100 As String

Dim My10 As String

Dim My1 As String

Dim My11 As String

Dim My12 As String

Dim GetText As String

Dim Billion As String

Dim Million As String

Dim Thousand As String

Dim Hundred As String

Dim Fraction As String

Dim MyAnd As String

Dim I As Integer

Dim ReMark As String



If Number > 999999999999.99 Then Exit Function

If Number < 0 Then

Number = Number * -1

ReMark = "سالب "

End If


If Number = 0 Then

NumberToText = "صفر"

Exit Function

End If


MyAnd = " و"

Array1(0) = ""

Array1(1) = "مائة"

Array1(2) = "مائتان"

Array1(3) = "ثلاثمائة"

Array1(4) = "أربعمائة"

Array1(5) = "خمسمائة"

Array1(6) = "ستمائة"

Array1(7) = "سبعمائة"

Array1(8) = "ثمانمائة"

Array1(9) = "تسعمائة"


Array2(0) = ""

Array2(1) = " عشر"

Array2(2) = "عشرون"

Array2(3) = "ثلاثون"

Array2(4) = "أربعون"

Array2(5) = "خمسون"

Array2(6) = "ستون"

Array2(7) = "سبعون"

Array2(8) = "ثمانون"

Array2(9) = "تسعون"


Array3(0) = ""

Array3(1) = "واحد"

Array3(2) = "اثنان"

Array3(3) = "ثلاثة"

Array3(4) = "أربعة"

Array3(5) = "خمسة"

Array3(6) = "ستة"

Array3(7) = "سبعة"

Array3(8) = "ثمانية"

Array3(9) = "تسعة"


GetNumber = Format(Number, "000000000000.00")


I = 0

Do While I < 15


If I < 12 Then

MyNumber = Mid$(GetNumber, I + 1, 3)

Else

MyNumber = "0" + Mid$(GetNumber, I + 2, 2)

End If


If (Mid$(MyNumber, 1, 3)) > 0 Then


ReadNumber = Mid$(MyNumber, 1, 1)

My100 = Array1(ReadNumber)

ReadNumber = Mid$(MyNumber, 3, 1)

My1 = Array3(ReadNumber)

ReadNumber = Mid$(MyNumber, 2, 1)

My10 = Array2(ReadNumber)


If Mid$(MyNumber, 2, 2) = 11 Then My11 = "إحدى عشرة"

If Mid$(MyNumber, 2, 2) = 12 Then My12 = "إثنى عشرة"

If Mid$(MyNumber, 2, 2) = 10 Then My10 = "عشرة"


If ((Mid$(MyNumber, 1, 1)) > 0) And ((Mid$(MyNumber, 2, 2)) > 0) Then My100 = My100 + MyAnd

If ((Mid$(MyNumber, 3, 1)) > 0) And ((Mid$(MyNumber, 2, 1)) > 1) Then My1 = My1 + MyAnd


GetText = My100 + My1 + My10


If ((Mid$(MyNumber, 3, 1)) = 1) And ((Mid$(MyNumber, 2, 1)) = 1) Then

GetText = My100 + My11

If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My11

End If


If ((Mid$(MyNumber, 3, 1)) = 2) And ((Mid$(MyNumber, 2, 1)) = 1) Then

GetText = My100 + My12

If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My12

End If


If (I = 0) And (GetText <> "") Then

If ((Mid$(MyNumber, 1, 3)) > 10) Then

Billion = GetText + " مليار"

Else

Billion = GetText + " مليارات"

If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " مليار"

If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " مليارن"

End If

End If


If (I = 3) And (GetText <> "") Then


If ((Mid$(MyNumber, 1, 3)) > 10) Then

Million = GetText + " مليون"

Else

Million = GetText + " ملايين"

If ((Mid$(MyNumber, 1, 3)) = 1) Then Million = " مليون"

If ((Mid$(MyNumber, 1, 3)) = 2) Then Million = " مليونان"

End If

End If


If (I = 6) And (GetText <> "") Then

If ((Mid$(MyNumber, 1, 3)) > 10) Then

Thousand = GetText + " ألف"

Else

Thousand = GetText + " ألاف"

If ((Mid$(MyNumber, 3, 1)) = 1) Then Thousand = " ألف"

If ((Mid$(MyNumber, 3, 1)) = 2) Then Thousand = " ألفان"

End If

End If


If (I = 9) And (GetText <> "") Then Hundred = GetText

If (I = 12) And (GetText <> "") Then Fraction = GetText

End If


I = I + 3

Loop


If (Billion <> "") Then

If (Million <> "") Or (Thousand <> "") Or (Hundred <> "") Then Billion = Billion + MyAnd

End If


If (Million <> "") Then

If (Thousand <> "") Or (Hundred <> "") Then Million = Million + MyAnd

End If


If (Thousand <> "") Then

If (Hundred <> "") Then Thousand = Thousand + MyAnd

End If


If Fraction <> "" Then

If (Billion <> "") Or (Million <> "") Or (Thousand <> "") Or (Hundred <> "") Then

NumberToText = ReMark + Billion + Million + Thousand + Hundred + " " + MainCurrency + MyAnd + Fraction + " " + SubCurrency

Else

NumberToText = ReMark + Fraction + " " + SubCurrency

End If

Else

NumberToText = ReMark + Billion + Million + Thousand + Hundred + " " + MainCurrency

End If

End Function


 *** نهاية الكود *** 

ليست هناك تعليقات:

إرسال تعليق

اكتب تعليقك او اية اضافات حول الموضوع

يتم التشغيل بواسطة Blogger.