أقسام الوصول السريع ( مربع البحث )

تحويل الأرقام إلى حروف باللغة العربية في Excel وحل مشكلة الرموز الغريبة

عملية تفقيط الأرقام وتحويلها إلى حروف مهمة في العديد من الاستخدامات المالية والإدارية، حيث تساعد في تقديم البيانات بشكل أكثر تفصيلًا وفهمًا، كما يتيح أن تحويل الأرقام إلى صيغة نصية تكون أكثر تميزًا ووضوحا في التقارير والمستندات.

تفقيط الارقام وتحويلها للغة العربية في Excel وحل مشكلة الرموز الغريبة


خطوات تفقيط الارقام باللغة العربية في 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 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
  • ستجد انه تم إضافة وحدة برمجية جديدة باسم Module1، اخرج من النافذة وسترى الدالة تم إنشاءها بنجاح واسمها "NumberToText" وتتكون من:
  1. Number: وهو المبلغ المراد تفقيطه
  2. Main Currency: العملة الأساسية
  3. Sub Currency: العملة الصغرى مثل قرش أو سنت
ويمكن استخدامها كأي دالة Excel كما سنرى.

دالة التفقيط في الاكسيل


مشكلة دالة التفقيط في Excel

يظهر لبعض المستخدمين بمجرد الانتهاء من كتابة الدالة رموز غريبة وعشوائية بدلا من صيغة التفقيط المطلوبة ولحل تلك المشكلة فقط اتبع التالي:
  • نفتح Control Panel من بحث الويندوز ثم نختار Clock and Region


بعد الضغط على Region نختار administrative ثم Change system local ونختار اللغة العربية بأي منطقة ترغب بها.
تعليقات



حجم الخط
+
16
-
تباعد السطور
+
2
-