تفقيط الأرقام بالعربية في Excel وGoogle Sheets مجانا

آخر تحديث بتاريخ 31 مارس 2026
شرح إضافة كود تفقيط الأرقام في برنامج الإكسيل وجداول جوجل شيت
كود تفقيط الأرقام في الإكسيل وجوجل شيت (تحويل الأرقام لحروف)

الدليل الشامل خطوة بخطوة للمحاسبين والشركات لإضافة دالة التفقيط الاحترافية مجاناً

إذا كنت تعمل في مجال المحاسبة، الموارد البشرية (HR)، أو إدارة الأعمال، فمن المؤكد أنك تقضي وقتاً طويلاً في كتابة الفواتير، الشيكات، وكشوف المرتبات. كتابة المبلغ بالأرقام أمر سهل، ولكن تحويل الأرقام إلى حروف باللغة العربية (التفقيط) يدوياً هو عملية مرهقة ومضيعة للوقت، ناهيك عن احتمالية الوقوع في أخطاء إملائية أو نحوية قد تكلف الشركة الكثير.

في هذا المقال الحصري من دنيا التقنية، لن تحتاج إلى كتابة أي رقم بالحروف يدوياً بعد اليوم. سنضع بين يديك أفضل كود تفقيط الأرقام في الإكسيل (VBA)، بالإضافة إلى كود برمجي مخصص لمستخدمي جوجل شيت (Google Sheets). بضغطة زر، ستتمكن من تحويل آلاف الأرقام إلى نصوص قانونية سليمة تدعم كافة العملات والكسور.

لماذا يعتبر التفقيط في الإكسيل ضرورة لا غنى عنها؟

عملية تفقيط المبالغ المالية ليست مجرد تنسيق جمالي، بل هي ضرورة قانونية صارمة تعتمد عليها البنوك والمؤسسات الحكومية. من خلال خبرتنا في دعم الأنظمة المحاسبية، نؤكد أن استخدام دالة تفقيط آلية يوفر لك المزايا التالية:

  • منع التزوير: الأرقام الحسابية يسهل التلاعب بها (بإضافة صفر مثلاً)، لكن النص المكتوب (مثل: ألف ريال فقط لا غير) يستحيل تزويره.
  • الدقة المطلقة: الأكواد التي سنطرحها تدعم الكسور (الهللة، القرش، السنت) بدقة متناهية وبدون أخطاء برمجية.
  • توفير مئات الساعات: بفضل خاصية السحب والإفلات (AutoFill)، يمكنك تفقيط 10,000 فاتورة في ثانيتين فقط.

القسم الأول: كود تفقيط الأرقام في الإكسيل (Excel VBA)

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

💡 خطوة تحضيرية هامة (تفعيل المطور): قبل البدء، تأكد من تفعيل تبويب “المطور” (Developer) في الإكسيل، وتفعيل الماكرو (Enable Macros) من إعدادات الأمان Trust Center لكي يعمل الكود بدون مشاكل.

1. خطوات إضافة كود التفقيط في Excel

  1. قم بفتح ملف الإكسيل الخاص بك.
  2. من لوحة المفاتيح، اضغط معاً على زري Alt + F11. ستفتح لك شاشة “محرر الأكواد” (Visual Basic for Applications).
  3. من القائمة العلوية، اضغط على Insert (إدراج)، ثم اختر Module (وحدة نمطية).
  4. ستظهر لك صفحة بيضاء. انسخ الكود التالي بالكامل والصقه هناك:
' =========================================================
' كود تفقيط الأرقام وتحويلها إلى حروف - حصرياً من دنيا التقنية
' يدعم جميع العملات العربية والعالمية والكسور
' =========================================================
Function TafqeetArabic(ByVal MyNumber As Double, Optional MainCurrency As String = "ريال", Optional SubCurrency As String = "هللة") As String
    Dim Reeds As Variant, Tens As Variant, Hundreds As Variant
    Dim Millions As Variant
    Dim DecimalValue As Integer
    Dim WholeNumber As String
    Dim Result As String
    Dim TempString As String
    Dim i As Integer
    
    ' مصفوفات الكلمات الأساسية
    Reeds = Array("", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة", "عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر")
    Tens = Array("", "عشرة", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون")
    Hundreds = Array("", "مائة", "مائتان", "ثلاثمائة", "أربعمائة", "خمسمائة", "ستمائة", "سبعمائة", "ثمانمائة", "تسعمائة")
    Millions = Array("", "ألف", "مليون", "مليار", "تريليون")
    
    ' التعامل مع الأصفار
    If MyNumber = 0 Then
        TafqeetArabic = "صفر " & MainCurrency
        Exit Function
    End If
    
    ' فصل العدد الصحيح عن الكسر
    WholeNumber = CStr(Int(MyNumber))
    DecimalValue = Round((MyNumber - Int(MyNumber)) * 100)
    
    ' تفقيط العدد الصحيح
    If WholeNumber > 0 Then
        Dim Parts() As String
        Dim PCount As Integer
        PCount = 0
        
        Dim NumStr As String
        NumStr = WholeNumber
        Do While Len(NumStr) > 0
            ReDim Preserve Parts(PCount)
            If Len(NumStr) <= 3 Then
                Parts(PCount) = NumStr
                NumStr = ""
            Else
                Parts(PCount) = Right(NumStr, 3)
                NumStr = Left(NumStr, Len(NumStr) - 3)
            End If
            PCount = PCount + 1
        Loop
        
        For i = 0 To UBound(Parts)
            Dim GroupValue As Integer
            GroupValue = CInt(Parts(i))
            
            If GroupValue > 0 Then
                TempString = ""
                Dim H As Integer, T As Integer, U As Integer
                H = GroupValue \ 100
                T = GroupValue Mod 100
                
                If H > 0 Then TempString = Hundreds(H)
                
                If T > 0 Then
                    If Len(TempString) > 0 Then TempString = TempString & " و"
                    If T < 20 Then
                        TempString = TempString & Reeds(T)
                    Else
                        U = T Mod 10
                        T = T \ 10
                        If U > 0 Then TempString = TempString & Reeds(U) & " و"
                        TempString = TempString & Tens(T)
                    End If
                End If
                
                If i > 0 Then
                    If GroupValue = 1 Then
                        TempString = Millions(i)
                    ElseIf GroupValue = 2 Then
                        If i = 1 Then TempString = "ألفان"
                        If i = 2 Then TempString = "مليونان"
                        If i = 3 Then TempString = "ملياران"
                    ElseIf GroupValue >= 3 And GroupValue <= 10 Then
                        If i = 1 Then TempString = TempString & " آلاف"
                        If i = 2 Then TempString = TempString & " ملايين"
                        If i = 3 Then TempString = TempString & " مليارات"
                    Else
                        TempString = TempString & " " & Millions(i) & "اً"
                    End If
                End If
                
                If Len(Result) > 0 Then
                    Result = TempString & " و" & Result
                Else
                    Result = TempString
                End If
            End If
        Next i
        Result = Result & " " & MainCurrency
    End If
    
    ' تفقيط الكسر
    If DecimalValue > 0 Then
        Dim DecString As String
        If DecimalValue < 20 Then
            DecString = Reeds(DecimalValue)
        Else
            Dim DT As Integer, DU As Integer
            DT = DecimalValue \ 10
            DU = DecimalValue Mod 10
            If DU > 0 Then
                DecString = Reeds(DU) & " و" & Tens(DT)
            Else
                DecString = Tens(DT)
            End If
        End If
        
        If Len(Result) > 0 Then
            Result = Result & " و" & DecString & " " & SubCurrency & " فقط لا غير."
        Else
            Result = DecString & " " & SubCurrency & " فقط لا غير."
        End If
    Else
        Result = Result & " فقط لا غير."
    End If
    
    TafqeetArabic = Trim(Result)
End Function
  1. أغلق شاشة الأكواد من علامة X.
  2. احفظ الملف كـ Macro-Enabled: اذهب إلى File > Save As، واختر صيغة الملف لتكون Excel Macro-Enabled Workbook (*.xlsm) لضمان عدم ضياع الكود عند إغلاق البرنامج.

2. كيفية استدعاء دالة التفقيط الجديدة

الآن أصبح لديك دالة جاهزة تُدعى =TafqeetArabic. لاستخدامها:

  • إذا كان الرقم في الخلية A2 (مثلاً: 4500.50).
  • قف في الخلية التي تريد ظهور النص فيها (مثلا B2)، واكتب المعادلة التالية:
    =TafqeetArabic(A2)
  • اضغط Enter، لتظهر النتيجة فوراً: (أربعة آلاف و خمسمائة ريال و خمسون هللة فقط لا غير.)
⚙️ احترافية تغيير العملات: الدالة مصممة افتراضياً للريال والهللة. لتغيير العملة (مثلاً للجنيه المصري أو الدولار)، قم بكتابتها داخل المعادلة بهذا الشكل:

للجنيه: =TafqeetArabic(A2, "جنيه", "قرش")
للدولار: =TafqeetArabic(A2, "دولار", "سنت")

القسم الثاني: كود تحويل الأرقام لحروف في جوجل شيت (Google Sheets)

الكثير من الشركات الحديثة وفرق العمل عن بُعد تفضل استخدام جداول بيانات جوجل (Google Sheets). وبما أن لغة الـ VBA لا تعمل هنا، قمنا بكتابة سكريبت مخصص ببرمجة Google Apps Script ليعطيك نفس النتيجة القوية.

خطوات تركيب كود التفقيط في جوجل شيت

  1. افتح ملفك على Google Sheets.
  2. من القائمة العلوية، اضغط على الإضافات (Extensions)، ثم اختر برمجة التطبيقات (Apps Script).
  3. ستفتح لك شاشة برمجة جديدة. قم بتظليل ومسح أي كود مكتوب بداخلها.
  4. الصق الكود التالي:
/**
 * تحويل الأرقام إلى نصوص باللغة العربية (تفقيط) - دنيا التقنية
 * @param {number} number الرقم المراد تفقيطه
 * @param {string} mainCurrency العملة الأساسية (مثال: "ريال"، "جنيه")
 * @param {string} subCurrency العملة الفرعية (مثال: "هللة"، "قرش")
 * @return النص المفقط
 * @customfunction
 */
function TAFQEET(number, mainCurrency = "ريال", subCurrency = "هللة") {
  if (number === "" || isNaN(number)) return "";
  if (number == 0) return "صفر " + mainCurrency;

  const arUnits = [
    { s: "", d: "", p: "", a: "" },
    { s: "ألف", d: "ألفان", p: "آلاف", a: "ألفاً" },
    { s: "مليون", d: "مليونان", p: "ملايين", a: "مليوناً" },
    { s: "مليار", d: "ملياران", p: "مليارات", a: "ملياراً" },
    { s: "تريليون", d: "تريليونان", p: "تريليونات", a: "تريليوناً" }
  ];
  
  const arOnes = ["", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة"];
  const arTens = ["", "عشرة", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون"];
  const arTeens = ["عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"];
  const arHundreds = ["", "مائة", "مائتان", "ثلاثمائة", "أربعمائة", "خمسمائة", "ستمائة", "سبعمائة", "ثمانمائة", "تسعمائة"];

  function tafqeetArabicWhole(numStr) {
    if (numStr === "0" || numStr === "") return "صفر";
    let parts = [];
    let str = numStr;
    while (str.length > 0) {
      parts.unshift(parseInt(str.slice(-3), 10));
      str = str.slice(0, -3);
    }
    
    let words = [];
    let scaleIdx = parts.length - 1;

    for (let i = 0; i < parts.length; i++) {
      let p = parts[i];
      if (p === 0) { scaleIdx--; continue; }

      let h = Math.floor(p / 100), rem = p % 100, t = Math.floor(rem / 10), o = rem % 10;
      let partWords = [];

      if (h > 0) partWords.push(arHundreds[h]);
      if (rem > 0) {
        if (rem < 10) partWords.push(arOnes[o]);
        else if (rem < 20) partWords.push(arTeens[rem - 10]);
        else {
          if (o > 0) partWords.push(arOnes[o] + " و" + arTens[t]);
          else partWords.push(arTens[t]);
        }
      }

      let partStr = partWords.join(" و");

      if (scaleIdx > 0) {
        if (p === 1) partStr = arUnits[scaleIdx].s;
        else if (p === 2) partStr = arUnits[scaleIdx].d;
        else if (p >= 3 && p <= 10) partStr += " " + arUnits[scaleIdx].p;
        else partStr += " " + arUnits[scaleIdx].a;
      }
      words.push(partStr);
      scaleIdx--;
    }
    return words.filter(w => w !== "").join(" و");
  }

  let wholeNumber = Math.floor(number).toString();
  let decimalValue = Math.round((number - Math.floor(number)) * 100);
  let result = "";

  if (parseInt(wholeNumber) > 0) {
    let mainText = tafqeetArabicWhole(wholeNumber);
    if (parseInt(wholeNumber) === 1) result = mainCurrency;
    else if (parseInt(wholeNumber) === 2) result = mainCurrency + "ان";
    else result = mainText + " " + mainCurrency;
  }

  if (decimalValue > 0) {
    let decText = tafqeetArabicWhole(decimalValue.toString());
    if (result !== "") result += " و" + decText + " " + subCurrency + " فقط لا غير.";
    else result = decText + " " + subCurrency + " فقط لا غير.";
  } else {
    result += " فقط لا غير.";
  }

  return result.trim();
}
  1. اضغط على أيقونة الحفظ (Save) من الشريط العلوي، وأغلق الصفحة.
  2. عُد إلى جدولك، واكتب في أي خلية المعادلة التالية:
    =TAFQEET(A2, "دينار", "فلس") (أو حسب عملتك والخلية المطلوبة).

أخطاء شائعة للمبتدئين يجب تجنبها ⚠️

الخطأ القاتل (المرجع الدائري – Circular Reference): أكبر خطأ يقع فيه المحاسبون عند استخدام دوال التفقيط لأول مرة هو كتابة المعادلة داخل الخلية التي تحتوي على الرقم نفسه! (مثلاً: كتابة =TafqeetArabic(A2) داخل الخلية A2). هذا يجعل البرنامج يدور في حلقة مفرغة ويعطيك رسالة خطأ فورية.

✔️ الحل الصحيح: اكتب الرقم في عمود (مثل A)، واكتب المعادلة في عمود فارغ مجاور له (مثل B) واستدعِ الخلية الأولى.

حيلة الخبراء: سحب المعادلة (AutoFill) لتفقيط مئات الأرقام

إذا كان لديك شيت يحتوي على 1000 رقم، لا تقم بكتابة المعادلة 1000 مرة. فقط اكتب المعادلة في الخلية الأولى، ثم قف بمؤشر الماوس على الزاوية السفلية لخلية النتيجة (حتى يتحول المؤشر لعلامة + سوداء)، ثم اضغط مرتين متتاليتين (Double Click) أو اسحب للأسفل. سيقوم البرنامج بتفقيط العمود بأكمله في ثانية واحدة!

تم إعداد هذا المحتوى والأكواد البرمجية بواسطة خبراء موقع دنيا التقنية لتسهيل مهام المحاسبين والشركات. إذا كنت لا تود استخدام الأكواد، يمكنك دائماً استخدام أداة تفقيط الأرقام أونلاين الخاصة بنا مجاناً.

ahmedabuzeid

مؤسس موقع دنيا التقنية ومديره، بخبرة طويلة في الكتابة التقنية ومتابعة التطورات الرقمية.