عملية تفقيط الأرقام وتحويلها إلى حروف مهمة في العديد من الاستخدامات المالية والإدارية، حيث تساعد في تقديم البيانات بشكل أكثر تفصيلًا وفهمًا، كما يتيح أن تحويل الأرقام إلى صيغة نصية تكون أكثر تميزًا ووضوحا في التقارير والمستندات.
خطوات تفقيط الارقام باللغة العربية في Excel
لا توجد دالة مباشرة في الاكسيل لتحويل الأرقام إلى اللغة العربية، بل يتم ذلك من خلال إنشاء دالة خاصة عن طريق كود مخصص من نوع VBA.
- أولا نفتح ملف Excel ثم إلى التبويب Developer واضغط على Visual Basic.
- من قائمة Project نضغط VBA Project ثم اختيار Insert ومن القائمة الفرعية قم بالضغط على Module، ثم ننسخ الكود التالي في الصفحة، كما هو موضح.
الكود:
Function NumberToText(Number As Double, MainCurrency As String, SubCurrency As String)Dim Array1(0 To 9) As StringDim Array2(0 To 9) As StringDim Array3(0 To 9) As StringDim MyNumber As StringDim GetNumber As StringDim ReadNumber As StringDim My100 As StringDim My10 As StringDim My1 As StringDim My11 As StringDim My12 As StringDim GetText As StringDim Billion As StringDim Million As StringDim Thousand As StringDim Hundred As StringDim Fraction As StringDim MyAnd As StringDim I As IntegerDim ReMark As StringIf Number > 999999999999.99 Then Exit FunctionIf Number < 0 ThenNumber = Number * -1ReMark = "سالب "End IfIf Number = 0 ThenNumberToText = "صفر"Exit FunctionEnd IfMyAnd = " و"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 = 0Do While I < 15If I < 12 ThenMyNumber = Mid$(GetNumber, I + 1, 3)ElseMyNumber = "0" + Mid$(GetNumber, I + 2, 2)End IfIf (Mid$(MyNumber, 1, 3)) > 0 ThenReadNumber = 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 + MyAndIf ((Mid$(MyNumber, 3, 1)) > 0) And ((Mid$(MyNumber, 2, 1)) > 1) Then My1 = My1 + MyAndGetText = My100 + My1 + My10If ((Mid$(MyNumber, 3, 1)) = 1) And ((Mid$(MyNumber, 2, 1)) = 1) ThenGetText = My100 + My11If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My11End IfIf ((Mid$(MyNumber, 3, 1)) = 2) And ((Mid$(MyNumber, 2, 1)) = 1) ThenGetText = My100 + My12If ((Mid$(MyNumber, 1, 1)) = 0) Then GetText = My12End IfIf (I = 0) And (GetText <> "") ThenIf ((Mid$(MyNumber, 1, 3)) > 10) ThenBillion = GetText + " مليار"ElseBillion = GetText + " مليارات"If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " مليار"If ((Mid$(MyNumber, 1, 3)) = 2) Then Billion = " مليارن"End IfEnd IfIf (I = 3) And (GetText <> "") ThenIf ((Mid$(MyNumber, 1, 3)) > 10) ThenMillion = GetText + " مليون"ElseMillion = GetText + " ملايين"If ((Mid$(MyNumber, 1, 3)) = 1) Then Million = " مليون"If ((Mid$(MyNumber, 1, 3)) = 2) Then Million = " مليونان"End IfEnd IfIf (I = 6) And (GetText <> "") ThenIf ((Mid$(MyNumber, 1, 3)) > 10) ThenThousand = GetText + " ألف"ElseThousand = GetText + " ألاف"If ((Mid$(MyNumber, 3, 1)) = 1) Then Thousand = " ألف"If ((Mid$(MyNumber, 3, 1)) = 2) Then Thousand = " ألفان"End IfEnd IfIf (I = 9) And (GetText <> "") Then Hundred = GetTextIf (I = 12) And (GetText <> "") Then Fraction = GetTextEnd IfI = I + 3LoopIf (Billion <> "") ThenIf (Million <> "") Or (Thousand <> "") Or (Hundred <> "") Then Billion = Billion + MyAndEnd IfIf (Million <> "") ThenIf (Thousand <> "") Or (Hundred <> "") Then Million = Million + MyAndEnd IfIf (Thousand <> "") ThenIf (Hundred <> "") Then Thousand = Thousand + MyAndEnd IfIf Fraction <> "" ThenIf (Billion <> "") Or (Million <> "") Or (Thousand <> "") Or (Hundred <> "") ThenNumberToText = ReMark + Billion + Million + Thousand + Hundred + " " + MainCurrency + MyAnd + Fraction + " " + SubCurrencyElseNumberToText = ReMark + Fraction + " " + SubCurrencyEnd IfElseNumberToText = ReMark + Billion + Million + Thousand + Hundred + " " + MainCurrencyEnd IfEnd Function
- ستجد انه تم إضافة وحدة برمجية جديدة باسم Module1، اخرج من النافذة وسترى الدالة تم إنشاءها بنجاح واسمها "NumberToText" وتتكون من:
- Number: وهو المبلغ المراد تفقيطه
- Main Currency: العملة الأساسية
- Sub Currency: العملة الصغرى مثل قرش أو سنت
ويمكن استخدامها كأي دالة Excel كما سنرى.
مشكلة دالة التفقيط في Excel
يظهر لبعض المستخدمين بمجرد الانتهاء من كتابة الدالة رموز غريبة وعشوائية بدلا من صيغة التفقيط المطلوبة ولحل تلك المشكلة فقط اتبع التالي:
- نفتح Control Panel من بحث الويندوز ثم نختار Clock and Region
بعد الضغط على Region نختار administrative ثم Change system local ونختار اللغة العربية بأي منطقة ترغب بها.