أكره أن أضطر لتمرير العين عبر جدول مليان أرقام مكتوبة بنمطين مختلفين، لذلك تعمّقت في حلول عملية لتحويل الأرقام للعربية تلقائياً داخل الإكسل. أول شيء توضيحي: هل تريد الأرقام بالعربية-الهندية (٠١٢٣…) أم تحويل الأرقام إلى نص عربي مكتوب بالكلمات؟ سأركز هنا على تحويل الأرقام إلى الأرقام العربية-الهندية (التي نراها في الصفحات العربية)، مع تلميحات لخيارات أخرى.
الطريقة الأسهل لو أردت تحويل خلية أو عمود كلها من الأرقام الغربية إلى العربية-الهندية دون تعقيد هي استخدام دالة SUBSTITUTE المتداخلة. مثال: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0","٠"),"1","١"),"2","٢"),"3","٣"),"4","٤"),"5","٥"),"6","٦"),"7","٧"),"8","٨"),"9","٩"). ألصق الصيغة في عمود جديد وجرِّها للأسفل.
لو كنت أتعامل مع نطاق كبير أو أحتاج قابلية إعادة الاستخدام أكثر، كتبت ماكرو بسيط بصيغة VBA يستبدل الأرقام داخل الخلايا المحددة بشكل أسرع. ضع هذا في وحدة نمطية في المحرّر:
Sub ConvertToArabicIndic
Dim rng As Range, c As Range, i As Integer
Dim repl As Variant
repl = Array(ChrW(&H0660), ChrW(&H0661), ChrW(&H0662), ChrW(&H0663), ChrW(&H0664), ChrW(&H0665), ChrW(&H0666), ChrW(&H0667), ChrW(&H0668), ChrW(&H0669))
On Error Resume Next
Set rng = Application.Selection
For Each c In rng
If Not c.HasFormula Then
For i = 0 To 9
c.Value = Replace(c.Value, CStr(i), repl(i))
Next i
End If
Next c
End Sub
وإذا أردت نهجاً قوياً لا ينكسر مع التنسيقات، أستخدم 'Power Query' لتحويل النص عن طريق سلسلة من عمليات الاستبدال أو M code بسيط. أيضاً على مستوى النظام، تغيير إعدادات المنطقة في ويندوز إلى العربية وتفعيل 'Use native digits' يجعل الأرقام تظهر بالعربية تلقائياً في بعض النسخ من الإكسل، لكن هذا يعتمد على إصدار الإكسل ونظام التشغيل. ختاماً، أحب استخدام الماكرو عندما أحتاج تحويل دفعة كبيرة، أما صيغة SUBSTITUTE فهي سريعة ومباشرة للتعديلات السريعة والنسخ الاحتياطي للأصلية.
2026-03-23 06:28:32
16