تُعد معالجة السلاسل النصية واستخلاص البيانات الكمية منها إحدى أهم الركائز في هندسة البيانات وإدارة نظم المعلومات الحديثة باستخدام جداول البيانات الإلكترونية. في بيئات الأعمال ومختبرات البحوث التجريبية، تتأثر قواعد البيانات باستمرار بتدفقات غير متجانسة تجمع بين الأوصاف النصية والرموز الاصطلاحية والقيم العددية داخل حقل بيانات واحد؛ وهو ما يفرض تحدياً كبيراً أمام المحللين وصناع القرار. إن تحويل هذه النصوص الهجينة إلى معلومات قابلة للقياس والتحليل الرياضي يتطلب منهجية تقنية متقدمة تتجاوز المعالجة السطحية البسيطة، وصولاً إلى توظيف مصفوفات دوال مركبة وخوارزميات أتمتة دقيقة داخل بيئة ميكروسوفت إكسل (Microsoft Excel).
يرجع التعقيد المصاحب لعملية استخراج الأرقام من النصوص إلى التباين الهيكلي في طريقة تخزين البيانات الرقمية مقارنة بالبيانات النصية؛ فالأرقام المضمنة في سلاسل نصية تُعامل برمجياً بوصفها محارف أبجدية رقمية (Alphanumeric Characters) وليست قيماً كمية تخضع لقوانين الحساب الجبري. يؤدي هذا التوصيف الخاطئ إلى تعطيل العمليات الإحصائية التلقائية، مثل حساب المتوسطات، والوسيط، والانحرافات المعيارية، وتوليد مصفوفات الارتباط. ومن ثم، فإن استعادة البنية الرياضية للبيانات من خلال عزل المكونات الرقمية بدقة يُعد شرطاً أولياً لضمان سلامة النماذج الاقتصادية والقياسية، ومنع انحراف النتائج الإحصائية الناجم عن أخطاء القراءة الحاسوبية.
يهدف هذا الدليل الأكاديمي الشامل إلى تقديم دراسة معمقة وتفكيكية للآليات الرياضية والمنطقية المتبعة في استخراج الأرقام من السلاسل النصية داخل برنامج إكسل. سنستعرض عبر هذا المقال بنية الصيغ التوافقية الكلاسيكية، ونشرح تحليلياً مراحل توليد المتسلسلات الافتراضية، والتجزئة الحرفية، والتحقق الجبري، والترشيح المنطقي للأخطاء. كما سنقارن هذه الوسائل بالحلول المتقدمة التي ظهرت في الإصدارات الحديثة لمنظومة Microsoft 365، مثل دوال التعابير النمطية (Regular Expressions) وتطبيقات باور كويري (Power Query) والبرمجة النصية بلغة فيجوال بيسك للتطبيقات (VBA)، مما يوفر مرجعاً شاملاً للمستخدمين الذين يتطلعون إلى تحسين كفاءة تنقية بياناتهم الرقمية بدقة واحترافية.
1. مقدمة نظرية حول معالجة السلاسل النصية واستخراج البيانات الرقمية في إكسل
1.1 مفهوم البيانات غير المتجانسة وتحديات تنظيف المدخلات
تشير البيانات غير المتجانسة في سياق برمجيات الجداول الإلكترونية إلى السجلات التي تضم مزيجاً عشوائياً أو شبه منتظم من المحارف الأبجدية، والأرقام، والرموز الخاصة، وعلامات الترقيم داخل خلية جدولية واحدة. تنشأ هذه الحالة بصورة شائعة نتيجة عمليات الإدخال اليدوي غير المنضبطة التي يقوم بها المستخدمون في غياب قواعد التحقق من صحة البيانات (Data Validation)، أو بسبب تصدير البيانات من أنظمة تخطيط موارد المؤسسات (ERP) العتيقة التي تُخرج السجلات المحاسبية واللوجستية في هيئة ملفات نصية مدمجة لا تفصل بين الرمز التعريفي للمنتج، واسمه، وقيمته النقدية أو الكمية.
يتسبب هذا التداخل بين الأبجدية والأرقام في خلق تشوهات هيكلية داخل قواعد البيانات التحليلية؛ إذ تفقد الحقول الرقمية خواصها الرياضية الأصلية وتتحول تلقائياً إلى نصوص ثابتة، مما يمنع المعالجات الحسابية المركزية من تطبيق الدوال الإحصائية عليها مباشرة. كما تزداد الأزمة تعقيداً عندما تتضمن السلاسل النصية مسافات بادئة أو لاحقة خفية، أو محارف تحكم غير قابلة للطباعة ناتجة عن التشفير بنظام الترميز الموحد (Unicode) أو ترميز (ASCII)، مما يفرض على الباحث أو المحلل تنفيذ بروتوكولات صارمة لتنظيف المدخلات قبل الشروع في أي نمذجة رياضية.
يترتب على وجود هذه البيانات غير المهيكلة انعكاسات سلبية جسيمة على مراحل التحليل الكمي؛ إذ تتعطل خوارزميات التجميع والتصنيف الآلي، وتتراجع جودة التقارير المالية والتحليلية بسبب ظهور مخرجات خاطئة أو رسائل خطأ صامتة قد لا ينتبه لها المحلل على الفور. إن تأسيس بيئة بيانات منقاة يعتمد أساساً على تفكيك هذه السلاسل النصية وعزل مكوناتها الأساسية بدقة متناهية تحافظ على البنية الرياضية للمتغيرات الكمية دون المساس بسياقها الإيضاحي الأصلي.
1.2 الأهمية المنهجية لفصل القيم الرقمية عن النصوص في التحليل الإحصائي
يستند التحليل الإحصائي الكمي في برمجية إكسل إلى التحديد الصارم لنوع المتغير (Data Type)؛ حيث تُصنف المدخلات إما كأرقام مجردة (Numeric)، أو تواريخ وأوقات (Date/Time)، أو سلاسل نصية (Strings)، أو قيم منطقية (Booleans). عندما تتداخل الأرقام ضمن النصوص، يعتبر محرك الحساب في إكسل الخلية بأكملها قيمة نصية، مما يعطل إمكانية إدراجها ضمن دوال الجمع القياسية مثل SUM أو دوال المتوسط الإحصائي مثل AVERAGE، حيث تقوم هذه الدوال بتجاهل الخلايا النصية كلياً أو إنتاج رسائل خطأ مثل #VALUE! عند محاولة إخضاعها لعمليات جبرية صريحة.
يتيح العزل الدقيق للقيم الرقمية تصحيح التوزيع الاحتمالي للبيانات والتحقق من صحة الفرضيات الإحصائية؛ فالبيانات الملوثة بالنصوص تؤدي إلى تقليص حجم العينة الفعلي المحسوب في الاختبارات البارامترية، مما يُضعف القوة الإحصائية (Statistical Power) للدراسة ويشوه مقاييس النزعة المركزية ومقاييس التشتت. بالإضافة إلى ذلك، يضمن فصل الأرقام إمكانية بناء فئات ومجموعات كمية متسلسلة بدقة تتيح إجراء تحليلات الانحدار، وتحليل التباين (ANOVA)، والتحليلات المتقاطعة بكفاءة متناهية.
علاوة على ذلك، يُسهم استخراج الأرقام وتحويلها إلى قيم حسابية في تفعيل أدوات الترتيب العددي (Numerical Sorting) والتصفية المعيارية (Filtering). فالترتيب النصي للأرقام يتعامل مع القيم من خلال الترتيب المعجمي (Lexicographical Order)، مما يجعل الرقم 100 يسبق الرقم 2، وهو خطأ جوهري يُفسد منطق التقارير التنفيذية. ومن خلال إرجاع الأرقام إلى طبيعتها الحسابية، يستعيد المحلل قدرته على الربط المنطقي بين الجداول عبر دوال البحث المتقدمة، وبناء نماذج ديناميكية ترتكز على محددات رياضية دقيقة ومستقرة.
1.3 نظرة مقارنة بين الطرق اليدوية والحلول الخوارزمية المؤتمتة
يلجأ بعض المستخدمين المبتدئين في كثير من الأحيان إلى الطرق اليدوية لاستخراج الأرقام، كإعادة كتابة الأرقام المستهدفة في أعمدة مجاورة، أو استخدام أدوات النسخ واللصق البسيطة. تتسم هذه الطرق بالبطء الشديد، وقابليتها المرتفعة للخطأ البشري، فضلاً عن عدم ملاءمتها لقواعد البيانات الكبيرة التي تضم آلاف السجلات. وفي سياق متصل، تقدم ميزة “النص إلى أعمدة” (Text to Columns) حلاً نصف يدوي لتفكيك البيانات، إلا أنها تفشل تماماً عندما تكون السلاسل النصية غير منتظمة في بنية الفواصل، كأن تتغير مواقع الأرقام وأعداد خاناتها عشوائياً عبر الصفوف.
في المقابل، تمثل الحلول الخوارزمية المؤتمتة، سواء تلك القائمة على الصيغ الحسابية المركبة أو نصوص الأتمتة المتقدمة، نقلة نوعية تضمن الاتساق والموثوقية. تتميز الصيغ الديناميكية بقدرتها على التكيف التلقائي مع أي تغيير يطرأ على البيانات المصدرية؛ فبمجرد تعديل السلسلة النصية في الخلية الأصلية، يُعاد حساب النتيجة المستخرجة آنياً دون تدخل يدوي، مما يقلل بشكل جذري من تكاليف صيانة النماذج ويزيل احتمالات التباين الناجمة عن السهو البشري.
وعند المقارنة التقنية بين البدائل المؤتمتة، نجد أن الصيغ المصفوفية توفر توازناً فريداً بين القوة الحوسبية وسهولة النشر؛ إذ لا تتطلب تمكين وحدات الماكرو التي قد تحظرها سياسات الأمان في المؤسسات المالية والأكاديمية، كما أنها لا تحتاج إلى تحديث يدوي كأداة “التعبئة السريعة” (Flash Fill) التي طورها Sumit Gulwani (2011) ضمن أبحاث البرمجة القائمة على الأمثلة. إن فهم المبادئ الخوارزمية التي تحكم عمل الصيغ المصفوفية المركبة يمنح المستخدم الأدوات المنهجية اللازمة لاختيار وتخصيص الطريقة الأكثر كفاءة لكل هيكل بيانات.
2. الصيغة القياسية الشاملة لاستخراج الأرقام: الهيكل والمكونات الأساسية
2.1 التركيب البنائي للصيغة التوافقية المركبة
تعتمد الطريقة المرجعية الأكثر شهرة واعتمادية في الإصدارات التوافقية من إكسل على بنية مركبة تتألف من خمس دوال أساسية تتكامل فيما بينها بتناغم دقيق لمعالجة الخلية الحرفية؛ وتُكتب الصيغة الرياضية الشاملة على النحو التالي:
=TEXTJOIN("", TRUE, IFERROR(MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1) + 0, ""))
تقوم هذه الصيغة على منهجية خطوط الأنابيب البرمجية (Data Pipeline)، حيث تُمرر مخرجات كل دالة لتكون مدخلات للدالة التي تليها في الترتيب الهرمي للمعالجة؛ إذ تبدأ بالتحليل البعدي لطول السلسلة النصية، ثم توليد مصفوفة فهرسة للمواقع، تليها عملية استقطاع أحادية المحارف، ثم اختبار جبري للأصالة الرقمية، فتصيد للأخطاء الناتجة، وانتهاءً بإعادة الدمج في قيمة متصلة.
يعكس هذا التركيب قوة التفكير الخوارزمي بدون كود برمجي مستقل؛ فبدلاً من الاعتماد على حلقات التكرار (Loops) في بيئات التطوير الإجرائية، تقوم الصيغة بمحاكاة حلقة فحص متزامنة (Iterative Inspection) من خلال مصفوفة المقاييس. يضمن هذا التكامل عدم إهمال أي خانة داخل النص، وتوحيد المخرجات الرياضية في مصفوفة واحدة يمكن التلاعب بمكوناتها قبل تصديرها كناتج نهائي.

2.2 دور الدالة TEXTJOIN في إعادة دمج المحارف المنفصلة
تمثل الدالة TEXTJOIN حجر الزاوية في إنجاح عملية التجميع النهائي لهذه الصيغة المركبة؛ وتتميز هذه الدالة، التي أُضيفت لتجاوز القصور التاريخي لدالتي CONCATENATE وCONCAT، بقدرتها الاستثنائية على قبول المصفوفات كوسائط دمج، والتحكم المطلق في الفواصل بين العناصر، والأهم من ذلك احتوائها على وسيطة منطقية مخصصة لتجاهل الخلايا الفارغة (Ignore Empty).
تتطلب وسيطة الدالة الأولى تحديد الفاصل النصي بين العناصر المدمجة، وفي حالتنا يتم ضبطها كسلسلة نصية فارغة "" لضمان التحام الأرقام المستخرجة بجانب بعضها البعض دون إدراج مسافات أو رموز تفصل بين خاناتها. أما الوسيطة الثانية، فتُضبط على القيمة المنطقية TRUE، وهي العنصر الحاسم الذي يوجه خوارزمية الدالة لتخطي كافة العناصر الخالية المترتبة على تصفية الحروف النصية عبر دالة الأخطاء، مما يمنع تشوه الرقم النهائي بمساحات متباعدة.
في الإصدارات القديمة من إكسل، كانت دالة CONCATENATE عاجزة عن معالجة المصفوفات الافتراضية بصورة مباشرة؛ حيث كانت تتطلب تمرير مراجع خلايا فردية ثابتة، مما جعل استخراج الأرقام بدون برمجة خارجية أمراً بالغ التعقيد ينطوي على تكرار يدوي لا نهائي. بفضل TEXTJOIN، أصبحت عملية استيعاب مصفوفة النتائج المتباينة الطول ودمج عناصرها الرقمية الصافية في كتلة واحدة تتم بخطوة حسابية موحدة وذات كفاءة استثنائية.
2.3 محددات الاستخدام وتوافق الإصدارات في بيئة العمل
يتطلب توظيف الصيغة المركبة فهماً دقيقاً للبيئة التشغيلية التي يعمل فيها المصنف، نظراً لأن الدالة TEXTJOIN لم تكن متوفرة في الإصدارات الكلاسيكية السابقة لنسخة إكسل 2019 وMicrosoft 365. وبالتالي، فإن محاولة فتح ملف يحتوي على هذه الصيغة في إصدار مثل إكسل 2010 أو 2013 ستؤدي فوراً إلى ظهور خطأ التسمية #NAME?، مما يجعل توافق الأنظمة عنصراً جوهرياً في اختيار الأسلوب المعتمد في المؤسسات المشتركة.
علاوة على ذلك، يبرز فارق منهجي هام في طريقة إدخال وتثبيت هذه الصيغة بين الإصدارات المختلفة؛ ففي الإصدارات الحديثة المدعومة بمحرك المصفوفات الديناميكية (Dynamic Arrays Engine)، يمكن كتابة الصيغة والضغط على مفتاح الإدخال Enter بصورة طبيعية، ليتولى المحرك الحسابي معالجة المصفوفة الداخلية تلقائياً. في المقابل، تفرض الإصدارات الأقدم (مثل إكسل 2019 المستقل غير المحدث) تثبيت المعادلة عبر الضغط المتزامن على أزرار Ctrl + Shift + Enter (وهو ما يُعرف تقنياً بمصفوفات CSE)، والتي يُحيط إكسل بموجبها الصيغة بأقواس معقوفة { } للإشارة إلى تفعيل الحساب المصفوفي المتعدد.
تقتضي هذه الاعتبارات التوافقية قيام مديري الأنظمة ومحللي البيانات بتقييم بيئة العمل الجماعية بدقة قبل نشر هذه النماذج؛ فإذا كانت جداول البيانات مخصصة للمشاركة عبر نظم تشغيل متنوعة أو منصات إكسل للويب والهواتف الذكية، يتعين التأكد من دعم كافة النسخ للمصفوفات الحديثة، أو اللجوء إلى حلول متوافقة مثل باور كويري لضمان تجانس الأداء وثبات المخرجات عبر مختلف البيئات.
3. التحليل التفكيكي للمرحلة الأولى: توليد المتسلسلات الرقمية الافتراضية
3.1 آلية عمل الدالة LEN في حساب الأبعاد النصية
تبدأ الرحلة الخوارزمية لاستخراج الأرقام من فحص العمق الطولي للمدخلات؛ حيث تتولى الدالة الأساسية LEN حساب إجمالي عدد المحارف والرموز والمسافات الموجودة في السلسلة النصية المستهدفة داخل الخلية. فإذا كانت الخلية A1 تحتوي على النص "ORD-9824-X"، فإن ناتج تنفيذ الدالة LEN(A1) سيكون الرقم 10، وهو ما يمثل الحجم الفيزيائي الكامل للبيانات الحرفية المخزنة.
تكمن الأهمية الجوهرية لهذه الدالة في تحديد الحدود القصوى لمجال البحث والمطابقة، مما يمنع محرك إكسل من محاولة فحص خانات غير موجودة تقع وراء نهاية النص، وهو ما يجنب النظام إهدار الموارد الحاسوبية أو الوقوع في أخطاء تجاوز النطاق المسموح. تعمل LEN كمعيار قياس ديناميكي يتأقلم لحظياً مع كل صف بشكل مستقل، مما يضمن دقة الفحص سواء كانت السلسلة تتكون من ثلاثة محارف أو مئات الخانات.
من الضروري إدراك أن الدالة LEN تعامل كافة المحارف غير المرئية، كالمسافات الفاصلة والمسافات غير القابلة للكسر (Non-breaking spaces) ومحارف العودة لسطر جديد (Line Breaks)، كخانات مستقلة بذاتها لها موقع تسلسلي في حساب البعد الإجمالي. هذا الإدراك الدقيق يمنح الصيغة اللاحقة القدرة على ترقيم كافة المواقع بصورة متصلة تضمن مسح السلسلة بالكامل دون ترك أي فراغات قد تحجب وجود أرقام تالية في النص.
3.2 التوليد الديناميكي للنطاق النصي باستخدام الدالة INDIRECT
عقب تحديد طول السلسلة النصية عبر دالة LEN، تظهر الحاجة إلى تحويل هذه القيمة الرقمية المجردة إلى نطاق خلايا هندسي فعلي يستطيع إكسل قراءته كمسار تسلسلي؛ وهنا يبرز دور الدالة المتقلبة INDIRECT. تقوم هذه الدالة بأخذ تمثيل نصي لمجال معين، مثل السلسلة "1:10"، وتحويله في الذاكرة الحسابية إلى مرجع مركب يشير فعلياً إلى الصفوف الممتدة من الصف الأول إلى الصف العاشر.
تتم عملية الصياغة من خلال دمج النص الثابت "1:" مع ناتج دالة الطول باستخدام معامل الربط النصي &، لتصبح العبارة المركبة INDIRECT("1:" & LEN(A1)). هذا البناء البرمجي الذكي يتيح توليد نطاق خلايا افتراضي يتمدد وينكمش ديناميكياً تبعاً لحجم النص المتاح في كل خلية على حدة، متجاوزاً بذلك عوائق النطاقات الثابتة التي قد تؤدي إلى تشويه نتائج الصفوف غير المتكافئة في الطول.
يجب التنويه من الناحية الأكاديمية إلى أن الدالة INDIRECT تُصنف تقنياً كدالة متقلبة (Volatile Function)، مما يعني أن إكسل يقوم بإعادة تقييمها وحسابها في كل مرة يجري فيها أي تعديل في أي جزء من ورقة العمل، حتى لو لم تكن الخلية المستهدفة ذات صلة بالتغيير. وبالرغم من كفاءة هذه الدالة في إنتاج المراجع المرنة، فإن استخدامها في أوراق العمل الضخمة التي تحتوي على عشرات الآلاف من الصفوف قد يؤثر نسبياً على زمن المعالجة وسرعة استجابة البرنامج.
3.3 استخراج مصفوفة الترتيب التسلسلي عبر الدالة ROW
بمجرد قيام الدالة INDIRECT بتوليد المرجع الديناميكي الافتراضي للصفوف، تتدخل الدالة ROW لتحويل هذا النطاق الهندسي إلى مصفوفة رقمية أحادية البعد تضم أرقاماً متتالية تبدأ من الرقم 1 وتصل إلى القيمة القصوى لطول النص. فإذا كان النطاق المتولد هو 1:10، فإن تنفيذ الدالة ROW(INDIRECT("1:10")) ينتج عنه المصفوفة الحسابية: {1; 2; 3; 4; 5; 6; 7; 8; 9; 10}.
تؤدي هذه المصفوفة الرقمية دوراً محورياً يحاكي تماماً بنية حلقة التكرار For...Next المستخدمة في اللغات البرمجية؛ حيث تمثل هذه الأرقام المتتابعة المؤشرات الموقعية (Index Positions) لكل محرف داخل السلسلة النصية قيد المعالجة. هذا التوليد الداخلي للمصفوفة يلغي الحاجة إلى إنشاء أعمدة مساعدة (Helper Columns) لترقيم المحارف، مما يحافظ على نظافة ورقة العمل وتماسك بنيتها الهيكلية.
يمثل استخراج هذا الترتيب التسلسلي القاعدة التي ترتكز عليها العمليات اللاحقة لتقطيع واختبار النصوص؛ فالمحرك الحسابي لإكسل يتعامل مع هذه المصفوفة كمدخلات متزامنة يتم تمريرها دفعة واحدة للمرحلة التالية، مما يُعزز من سرعة المعالجة المصفوفية مقارنة بالتنفيذ المتسلسل خطوة بخطوة، ويُمكّن الصيغة من تحليل كافة أجزاء النص في جزء ضئيل من الثانية.
4. التحليل التفكيكي للمرحلة الثانية: التجزئة والاختبار الجبري للمحارف
4.1 وظيفة الدالة MID في تقطيع النصوص حرفاً بحرف
تُعد الدالة MID الأداة الأساسية لاستقطاع النصوص من مواضع محددة داخل السلاسل النصية؛ حيث تتطلب هذه الدالة عادةً ثلاثة وسائط رئيسية: النص الأصلي، وموضع البدء، وعدد المحارف المطلوب اقتطاعها. في الصيغة المركبة، يتم توظيف الدالة MID بأسلوب غير تقليدي يعتمد على تمرير مصفوفة المؤشرات الرقمية الناتجة عن ROW كوسيطة لموضع البدء، مع تثبيت طول الاستقطاع عند خانة واحدة فقط، هكذا: MID(A1, ROW(...), 1).
ينتج عن هذه العملية تقطيع السلسلة النصية الأحادية إلى مصفوفة ممتدة من المحارف الفردية المستقلة؛ فإذا طبقنا الدالة على النص "A12B"، فإنها بدلاً من استخراج مقطع واحد، ستقوم بتفكيك النص إلى مصفوفة حرفية تحتوي على أربعة عناصر: {"A"; "1"; "2"; "B"}. يُعامل كل حرف أو رقم في هذه المصفوفة ككيان نصي منعزل ومستقل تماماً داخل الذاكرة التخزينية للصيغة.
يضمن تثبيت طول الاستقطاع عند القيمة 1 دقة الفرز الفردي؛ إذ يسمح للنظام بإخضاع كل رمز على حدة لعمليات الفحص والتحقق دون تداخل محرفين معاً، وهو ما يتيح التمييز الدقيق بين الأرقام والحروف والرموز الخاصة مهما كان نمط توزعها داخل السلسلة الأصلية، ممهداً الطريق للمرحلة الرياضية الحاسمة في تمييز الطبيعة العددية للمحارف.
4.2 المعالجة الجبرية بالضرب في واحد للتحقق من النوعية
بعد تفكيك السلسلة النصية إلى مصفوفة من المحارف المعزولة، تواجهنا معضلة فنية تتمثل في أن الأرقام المستخرجة، مثل "1" و"2"، لا تزال مخزنة برمجياً كنصوص محاطة بعلامات تنصيص افتراضية وليست قيماً عددية حقيقية. لحل هذه المشكلة، تعتمد الصيغة على تقنية التحويل القسري للأنواع (Implicit Type Coercion) من خلال إجراء عملية حسابية بسيطة ومحايدة، وهي إما إضافة صفر + 0 أو الضرب في واحد * 1، وتُلحق هذه العملية بناتج دالة MID مباشرة.
تستند هذه التقنية الجبرية إلى سلوك محرك إكسل عند محاولة تطبيق عملية حسابية على قيمة نصية تمثل رقماً بصرياً؛ إذ يحاول النظام تلقائياً تحويل السلسلة النصية إلى قيمة رقمية صريحة لإتمام العملية الجبرية بنجاح. وعليه، فإن المحرف النصي "1" عند جمعه مع الصفر "1" + 0، يتحول داخلياً وبنجاح إلى الرقم الصحيح 1، مجرداً من أي صفة نصية سابقة وجاهزاً للمعالجة الرياضية المتخصصة.
تُعد هذه العملية اختباراً دقيقاً لطبيعة المحرف؛ فالأرقام تقبل الإضافة الجبرية وتتحول إلى قيم حقيقية دون أي عائق، مما يُميزها بوضوح عن المحارف غير العددية التي تعجز عن التجاوب مع هذه العملية الرياضية. هذه الخطوة البسيطة هي التي تفصل في الواقع بين المحتوى الكمي والمحتوى الوصفي داخل السلسلة النصية المركبة.
4.3 المنطق التقييمي لتوليد أخطاء القيمة واستخدامها الوظيفي
يبرز الذكاء التصميمي للصيغة في استغلال عجز النظام الرياضي عن معالجة الحروف الأبجدية كأداة للفرز الحتمي؛ فعندما يطبق محرك إكسل العملية الحسابية + 0 على محرف نصي صريح مثل الحرف "A"، يفشل التحويل القسري تلقائياً لعجز الخوارزمية عن إيجاد مكافئ حسابي للأبجدية، مما يترتب عليه إنتاج رسالة الخطأ القياسية الموضعية #VALUE! في ذلك الموقع بالذات.
إن توليد رسالة الخطأ #VALUE! هنا ليس عيباً في الصيغة أو إخفاقاً في تنفيذها، بل هو هدف مقصود بحد ذاته يُستخدم كعلامة وظيفية فارقة لعزل العناصر غير المرغوب فيها. تتحول المصفوفة في هذه المرحلة من مصفوفة نصوص مختلطة إلى مصفوفة تباينية دقيقة تضم قيماً رقمية صحيحة في مواضع الأرقام، ورسائل خطأ صريحة في كافة المواضع الأخرى التي تحتوي على نصوص أو فواصل أو رموز خاصة.
وبناءً على ذلك، إذا كان لدينا النص "A12B"، فإن تنفيذ العبارة MID(...) + 0 سينتج عنه المصفوفة الوسيطة التالية: {#VALUE!; 1; 2; #VALUE!}. توفر هذه المصفوفة خريطة موضعية واضحة المعالم تسمح للدوال المنطقية في المراحل اللاحقة بفرز البيانات الصالحة وتطهير المصفوفة من الشوائب بسهولة تامة وبأعلى درجات الموثوقية الخوارزمية.
5. التحليل التفكيكي للمرحلة الثالثة: المعالجة المنطقية للأخطاء وتجميع المخرجات
5.1 استخدام الدالة IFERROR لتنقية عناصر المصفوفة
عقب توليد المصفوفة الوسيطة التي تختلط فيها الأرقام الصريحة برسائل الخطأ #VALUE!، يأتي دور الدالة المنطقية الوقائية IFERROR لتنقية هذا الخليط وإعادة تنظيم البيانات. تقبل الدالة IFERROR وسيطتين: الأولى هي التعبير الخاضع للتقييم، والثانية هي القيمة البديلة التي يجب إرجاعها في حال ثبوت وجود خطأ حسابي في الوسيطة الأولى.
تُحيط الدالة IFERROR بالعملية الحسابية السابقة وتُحدد القيمة البديلة كسلسلة نصية فارغة يرمز لها بعلامتي تنصيص متتاليتين "" هكذا: IFERROR(MID(...) + 0, ""). تقوم خوارزمية الدالة بفحص كل عنصر في المصفوفة على حدة وبشكل فوري؛ فإذا كان العنصر رقماً صحيحاً ناجحاً من المعالجة الجبرية السابقة، تتركه كما هو دون أدنى تعديل، أما إذا كان العنصر عبارة عن رسالة خطأ #VALUE!، فإنها تستبدله فوراً بالنص الفارغ.
تضمن هذه المعالجة القضاء النهائي على كافة التأثيرات السلبية للمحارف غير الرقمية داخل ورقة العمل؛ فبدلاً من أن تتسبب أخطاء القيمة في تعطيل المصنف بالكامل أو ظهور علامات التحذير غير المرغوبة، يتم تحييد الحروف والرموز بطريقة ناعمة وآمنة برمجياً، مع الحفاظ الكامل على سلامة القيم الرقمية المتبقية ومواقعها الأصلية في تسلسل المعالجة.
5.2 هيكلة مصفوفة المخرجات المنقاة قبل التجميع النهائي
بعد اكتمال عملية الفلترة المنطقية عبر الدالة IFERROR، تتشكل في الذاكرة العشوائية لإكسل مصفوفة بيانات نهائية عالية النقاء ومعدة للدمج؛ وفي هذه المصفوفة، تم استبدال كافة المحارف الأبجدية، والمسافات البيضاء، وعلامات الترقيم بعناصر فارغة ""، في حين احتفظت الأرقام بوجودها المستقل وقيمتها الحسابية الدقيقة.
وبالعودة إلى نموذجنا التطبيقي على السلسلة النصية "A12B"، تتحول المصفوفة بعد مرورها بالدالة IFERROR إلى الصورة الهيكلية التالية: {""; 1; 2; ""}. يوضح هذا التوزيع المكاني كيف تم الحفاظ على البعد الهيكلي للأرقام وتسلسلها الطبيعي كما وردت في السلسلة الأصلية، دون حدوث أي تداخل أو تغيير في الترتيب الرياضي للخانات (الآحاد، العشرات، وغيرها).
تتميز هذه المصفوفة المنقاة بجاهزيتها التامة لاستقبال أوامر التجميع دون الخوف من وقوع تعارض في أنواع البيانات؛ إذ تم التخلص من أي عوائق تقنية قد تربك محرك الحساب. وتعد هذه المرحلة الوسيطة بمثابة الجسر التقني الفاصل بين مرحلة التفكيك والفرز، ومرحلة إعادة التركيب والتصدير النهائي للبيانات المفلترة.
5.3 التجميع النهائي عبر TEXTJOIN وتوليد النتيجة النهائية
تصل العملية الخوارزمية إلى ذروتها التنفيذية عندما تستقبل الدالة TEXTJOIN مصفوفة المخرجات المنقاة؛ حيث تُفعل خاصية Ignore Empty = TRUE لتبدأ الدالة في مسح عناصر المصفوفة وامتصاص كافة السلاسل النصية الفارغة "" الناتجة عن تعويض الأخطاء، متجاهلة إياها تماماً كأنها لم تكن موجودة في الحسابات.
في الوقت ذاته، تقوم الدالة بالتقاط العناصر الرقمية المتبقية 1 و2 ودمجها ببعضها مباشرة باستخدام الفاصل الفارغ المحدد ""، ليتولد عن ذلك السلسلة العددية الموحدة "12". يخرج الناتج النهائي في مظهر رقمي ناصع ومتصل، متحرراً تماماً من كافة الشوائب النصية، والرموز، والمسافات التي كانت تحيط به في الخلية المصدرية الأصلية.
يجدر بالباحث والمحلل الانتباه في هذه الخطوة إلى أن القيمة الناتجة عن دالة TEXTJOIN تظل من الناحية التقنية سلسلة نصية (Text String) ذات مظهر رقمي وليست رقماً حسابياً، نظراً لأن وظيفة الدالة الأساسية هي تجميع النصوص. وسنستعرض في الأقسام اللاحقة من هذا الدليل كيفية تحويل هذا الناتج التجميعي إلى قيمة رياضية صريحة صالحة للمقارنات والمعادلات الرياضية الفورية.
6. دليل تطبيقي خطوة بخطوة: تنفيذ الصيغة على نماذج بيانات واقعية
6.1 إعداد بيئة العمل وهيكلة جدول البيانات التجريبي
يتطلب التطبيق العملي للصيغة إعداد ورقة العمل وفق منهجية علمية تحد من احتمالات الخطأ وتسهل إدارة البيانات؛ ولتحقيق ذلك، نبدأ بتنظيم البيانات المصدرية غير المتجانسة في عمود مخصص، وليكن العمود A ابتداءً من الخلية A2، ونخصص العمود B لاستقبال النتائج الرقمية المستخرجة ونطلق عليه تسمية وصفية واضحة مثل “الرقم المستخرج”.
قبل الشروع في كتابة الصيغة، يُنصح بتطبيق تدقيق أولي على بيانات العمود A للتحقق من عدم احتوائها على مسافات بادئة غير مرئية قد تؤدي إلى تشويه حجم السلسلة؛ ويمكن الاستعانة بالدالة TRIM ودالة CLEAN لتنقية المدخلات من محارف التحكم الخاصة بنظام التشغيل. كما يُفضل تعيين تنسيق خلايا عمود النتائج B على النمط “عام” (General) لتفادي أي تعارض تنسيقي قد يفرضه إكسل مسبقاً على محتويات الخلية.
من الأهمية بمكان تصميم جدول بيانات تجريبي يضم حالات نصية متباينة لاختبار الصيغة بدقة؛ مثل نصوص تحتوي على أرقام في البداية كـ "8844_Store"، ونصوص تقع أرقامها في المنتصف مثل "Invoice_9021_Verified"، وحالات تضم أرقاماً متفرقة مثل "Item 3 Code 9 Vol 2"، بالإضافة إلى نصوص تخلو تماماً من الأرقام لتقييم سلوك الصيغة في الحالات الحدية (Edge Cases).

6.2 كتابة الصيغة المركبة وتثبيت المراجع بدقة
لتطبيق المعادلة بدقة، ننتقل إلى الخلية B2 المحاذية لأول صف من صفوف البيانات غير المنتظمة، ونقوم بكتابة الصيغة المركبة مع التأكد من إدخال المرجع النسبي الدقيق للخلية المصدرية دون تثبيت علامة الدولار $ على رقم الصف، وذلك لضمان انسياب المرجع بسلاسة عند نسخه لاحقاً إلى الأسفل؛ وتُكتب الصيغة كما يلي:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:" & LEN(A2))), 1) + 0, ""))
أثناء كتابة الصيغة في شريط المعادلات، ينبغي توخي الحذر الشديد فيما يتعلق بضبط الأقواس؛ فالصيغة تحتوي على أربعة مستويات متداخلة من الأقواس المفتوحة والمغلقة. ويساعد التلوين التلقائي للأقواس في إكسل على التأكد من إغلاق كل دالة في موضعها المنطقي السليم، حيث يؤدي أي خطأ في تموضع الأقواس إلى ظهور رسالة تنبيه تفيد بوجود خطأ تركيبي في المعادلة.
إذا كنت تعمل على إصدار حديث من إكسل، يكفي النقر على زر Enter لترى القيمة الرقمية قد ظهرت بنجاح في الخلية B2. أما إذا كنت تستخدم بيئة عمل تعتمد إصدار إكسل 2019 غير المتصل بالسحابة، فيجب عليك الضغط معاً على مفاتيح Ctrl + Shift + Enter لإجبار النظام على التعامل مع الصيغة كمعادلة مصفوفة، حيث ستلاحظ ظهور القوسين الحاصريْن { } محيطين بالمعادلة في شريط الصيغ تلقائياً.
6.3 تعميم المعادلة والتحقق الرياضي من سلامة المخرجات
عقب التأكد من سلامة عمل الصيغة في الخلية B2 وظهور النتيجة المرجوة بدقة، نقوم بتعميم المعادلة على بقية صفوف جدول البيانات؛ ويمكن إجراء ذلك بسلاسة من خلال النقر المزدوج على “مقبض التعبئة التلقائية” (AutoFill Handle) الموجود في الزاوية السفلية اليسرى (أو اليمنى حسب اتجاه الواجهة) لخلية النتيجة، مما يضمن نسخ الصيغة بسرعة على امتداد النطاق الموازي لبيانات العمود A.
بعد اكتمال التعبئة، تبدأ مرحلة المراجعة والتحقق الرياضي من سلامة المخرجات؛ وهنا يجب فحص النتائج المستخرجة عبر الصفوف المختلفة بعناية. ستلاحظ في الحالات التي تحتوي على أرقام متفرقة في السلسلة النصية مثل "A1B2C3" أن الصيغة قامت بدمج هذه الخانات معاً في تسلسل واحد هو "123"، وهو السلوك الافتراضي المتوقع من الدالة TEXTJOIN عند استخدام فاصل نصي فارغ.
أما في الحالات التي تخلو فيها الخلية المصدرية كلياً من أي أرقام، كأن تكون السلسلة "Pure Text"، ستلاحظ أن الصيغة تُخرج قيمة فارغة تماماً دون توليد أي أخطاء حسابية مزعجة، وهو ما يؤكد نجاح الدالة IFERROR في امتصاص كافة أخطاء التحويل. يمنح هذا الثبات التشغيلي النموذج موثوقية عالية تجعله جاهزاً للاعتماد المؤسسي دون الحاجة لتدخلات يدوية إضافية لتصحيح المخرجات الشاذة.
7. معالجة الحالات الخاصة والتحديات التركيبية في النصوص
7.1 التعامل مع الأرقام العشرية والفواصل الحسابية
تواجه الصيغة القياسية السابقة قصوراً وظيفياً كبيراً عند التعامل مع القيم المالية والقياسات الفيزيائية التي تتضمن أرقاماً كسرية تحتوي على الفاصلة العشرية (Decimal Point)؛ فالنقطة أو الفاصلة تُعامل حسابياً كرمز نصي غير رقمي، وبالتالي عند تطبيق العملية الحسابية + 0 عليها، ينتج عنها خطأ #VALUE!، مما يؤدي إلى حذفها عبر الدالة IFERROR وتحويل الرقم العشري مثل "Price 19.95 USD" إلى العدد الصحيح "1995"، وهو تشويه فادح للقيمة الحقيقية.
للتغلب على هذه المشكلة وحماية الفاصلة العشرية من الحذف، يتعين تعديل المنطق الداخلي للصيغة لاستثناء العلامة العشرية من الفلترة؛ ويمكن تحقيق ذلك عبر دمج دالة فحص نصي إضافية تسمح بتمرير النقطة "." جنباً إلى جنب مع الأرقام الحقيقية. وتعتمد الصيغة المعدلة على التحقق المزدوج عبر دالة ISNUMBER أو باستخدام دالة الاستبدال لضمان الحفاظ على موضع الفاصلة الحسابية في مكانها الدقيق ضمن السلسلة المستخرجة.
كما يجب الانتباه إلى التباين الإقليمي في إعدادات النظام الحسابي؛ فالأنظمة التي تتبع المعايير الأوروبية والعربية تستخدم الفاصلة المقلوبة , كفاصل عشري، بينما تعتمد الأنظمة الأمريكية والبريطانية النقطة . كعلامة عشرية وتستخدم الفاصلة المقلوبة كفاصل للآلاف. يجب مواءمة الصيغة المصممة مع الإعدادات الإقليمية لنظام التشغيل لتجنب حدوث أخطاء تحويل قد تجعل الأرقام المستخرجة غير قابلة للقراءة الرياضية الصحيحة.
7.2 استخراج الأرقام السالبة والرموز الحسابية المرتبطة
يمثل التعامل مع الإشارات الجبرية، وتحديداً إشارة السالب "-"، تحدياً مركباً آخر في المعالجة النصية التلقائية؛ فالإشارة السالبة تلعب دوراً رياضياً جوهرياً في التمييز بين الخسائر والأرباح في القيود المالية، أو التعبير عن القيم تحت الصفر في القراءات المخبرية. وفي الصيغة القياسية الكلاسيكية، يتم التعامل مع علامة الطرح بوصفها رمزاً نصياً يُحذف تلقائياً من المخرجات، مما يحول كافة الأرقام السالبة المستخرجة إلى قيم موجبة بصورة افتراضية وغير صحيحة.
تتطلب معالجة هذا الخلل تضمين خوارزمية ذكية تتحقق من وجود علامة السالب وموقعها النسبي من الرقم؛ فإذا كانت الإشارة متصلة بالرقم مباشرة وتسبقه كـ "-500"، يجب الاحتفاظ بها وتضمينها في عملية التجميع النهائي. أما إذا كانت علامة الشرطة مستخدمة كمجرد رابط نصي بين كلمتين مثل "Item-Code-12"، فيتعين استبعادها بحذر لتجنب إنتاج تعابير رقمية مشوهة لا تعبر عن قيم سالبة حقيقية.
في السياقات المحاسبية المعقدة، تُكتب الأرقام السالبة أحياناً محصورة بين قوسين مثل (1500) بدلاً من وضع إشارة الطرح الصريحة؛ وتتطلب هذه المعالجة استخدام صيغ فحص نمطية متقدمة تتعرف على وجود الأقواس الدائرية في طرفي النص، وتقوم برمجياً بضرب القيمة العددية المستخرجة في المعامل -1 لتعكس بدقة القيمة المحاسبية السالبة المطلوبة في شجرة الحسابات.
7.3 إدارة الأرقام المتفرقة مقابل الأرقام المستقلة المتعددة
ينشأ في كثير من السيناريوهات العملية تباين بين الرغبة في جمع كافة الخانات الرقمية المتفرقة في رقم مركب واحد، وبين الحاجة لعزل كل كتلة عددية مستقلة بذاتها؛ فإذا كانت السلسلة النصية تمثل عنواناً مثل "Apartment 4 Building 12"، فإن الصيغة القياسية السابقة ستقوم بدمج الأرقام معاً لتنتج الرقم "412"، وهو رقم مضلل يدمج رقم المبنى برقم الشقة في كيان واحد لا معنى له.
لحل هذه المعضلة والفصل بين التجمعات الرقمية المستقلة، يمكن تعديل وسيطة الفاصل النصي في الدالة TEXTJOIN لتصبح مسافة تفريقية " " أو فاصلة منقوطة، ولكن هذا التعديل البسيط مع الصيغة السابقة قد يضع مسافة بين كل خانة رقمية وأخرى "4 1 2". لذلك، يتطلب الأمر تطبيق صيغة مصفوفية أكثر تقدماً تدمج بين الدالة TEXTSPLIT والدوال الشرطية لرصد التغير في حالة المحارف من نص إلى رقم، وبالتالي إدراج الفاصل فقط عند حدود الانتقال بين الكتل العددية والكتل النصية.
يتيح هذا التمييز الإدراكي للمحلل السيطرة المطلقة على مخرجاته؛ حيث يمكنه استخراج كل رقم مستقل في عمود مخصص، أو إبقائها مصفوفة مفصولة برموز معيارية تتيح لاحقاً تجزئتها عبر أعمدة منفصلة بسهولة، وهو ما يضمن الحفاظ على الاستقلالية المعنوية والدلالية لكل رقم ورد في السلسلة الأصلية.
8. البدائل المتقدمة في Microsoft 365: الدوال الديناميكية الحديثة
8.1 استخدام الدالة TEXTSPLIT والدوال المساعدة لعزل الأرقام
شهدت منظومة ميكروسوفت 365 طفرة نوعية في أدوات معالجة النصوص مع إدخال دوال المصفوفات الديناميكية المتخصصة، وعلى رأسها الدالة الثورية TEXTSPLIT؛ حيث تتيح هذه الدالة تقسيم النصوص بناءً على مصفوفة متكاملة من الفواصل الحرفية دون الحاجة إلى الصيغ الطويلة والمعقدة المعتمدة على ROW وINDIRECT.
تعتمد المنهجية الحديثة على تمرير مصفوفة ثابتة تضم كافة الحروف الأبجدية والرموز الشائعة كوسائط فصل للدالة TEXTSPLIT، مما يؤدي إلى تقطيع النص الأصلي وتجاوز كافة الكلمات والرموز، لينتج عن ذلك مصفوفة مقتصرة حصرياً على الأرقام الحقيقية. وتكتمل هذه المنظومة بربطها بالدالة TOCOL لفرز المصفوفة في عمود واحد، واستخدام الدالة FILTER لاستبعاد الخلايا الفارغة بأسلوب أنيق ومنطقي يتسم بأقصى درجات الوضوح البرمجي.
تتميز هذه الحلول المعاصرة ببساطة بنيتها التركيبية، وسهولة تتبع منطقها الإجرائي وصيانتها من قبل المحللين المبتدئين؛ كما أنها تتفادى تماماً استخدام الدوال المتقلبة التي كانت تثقل كاهل المعالجات الحسابية في الماضي، مما يمنحها أفضلية تشغيلية واضحة تجعلها الخيار المفضل والبديل الطبيعي للصيغ التوافقية القديمة في بيئات العمل المحدثة.
8.2 بناء دالة مخصصة باستخدام LAMBDA وREDUCE
قدمت ميكروسوفت مفهوماً برمجياً متقدماً لجداول البيانات من خلال الدالة LAMBDA، والتي تمكّن المستخدمين من بناء دوالهم المخصصة (Custom Functions) دون كتابة سطر برمجي واحد بلغة فيجوال بيسك؛ وبدمج هذه الدالة مع الدوال التكرارية المتقدمة مثل REDUCE، أصبح بالإمكان صياغة خوارزمية فائقة القوة لاستخراج الأرقام قابلة لإعادة الاستخدام بسهولة مطلقة.
تقوم الفكرة الخوارزمية للدالة REDUCE على المرور التتابعي عبر مصفوفة الحروف النصية، وفي كل خطوة تكرارية، يتم تطبيق دالة SUBSTITUTE لاستبدال الحرف المعني بنص فارغ؛ وهكذا تتلاشى كافة المحارف الأبجدية والرموز تدريجياً، لتبقى الأرقام فقط في نهاية الحلقة التكرارية كقيمة نهائية مصفاة. يمكن تغليف هذه الصيغة داخل “مدير الأسماء” (Name Manager) تحت اسم دال مثل EXTRACTNUM(text).
يوفر هذا النهج التجريدي مزايا استثنائية في بيئات العمل المؤسسية الكبرى؛ فبدلاً من كتابة معادلات معقدة يمتد طولها لعدة أسطر في خلايا متعددة، يكتفي المحلل باستدعاء الدالة المخصصة البسيطة =EXTRACTNUM(A2) عبر المصنف بالكامل. هذا التوحيد يقلل فرص الخطأ البشري عند نقل الصيغ، ويرفع مقروئية أوراق العمل، ويسهل إدارة التحديثات المنطقية المركزية على مستوى المؤسسة.
8.3 تقييم الكفاءة الحسابية والأداء للأوراق الضخمة
تتفاوت التقنيات السابقة تفاوتاً جوهرياً في استهلاك الموارد الحوسبية وزمن المعالجة، خاصة عند التعامل مع جداول البيانات الضخمة التي تحتوي على مئات الآلاف من السجلات؛ فالصيغة الكلاسيكية المعتمدة على INDIRECT تُعد عبئاً ثقيلاً على الذاكرة العشوائية (RAM) ووحدة المعالجة المركزية (CPU) نظراً لخاصية التقلب المستمر التي تجبر البرنامج على إعادة بناء النطاقات الوهمية وفحصها دورياً مع كل تحديث طفيف في أي خلية بالملف.
في المقابل، تتمتع الدوال الديناميكية الحديثة مثل LAMBDA ومجموعات المصفوفات الموجهة بكفاءة تشغيلية أعلى بكثير؛ إذ تستغل تقنيات التحسين الخوارزمي المضمنة في المحرك الحسابي الجديد لـ Microsoft 365، والتي تتجنب إعادة الحساب غير الضرورية، وتتعامل مع البيانات ككتل ذاكرية متجاورة بدلاً من استهلاك مؤشرات العناوين المنفصلة كما تفعل الدالة INDIRECT.
ولقد حققت ميكروسوفت قفزة نوعية حاسمة في مايو 2024 بإطلاق مجموعة دوال التعابير النمطية المدمجة رسمياً (Built-in Regex Functions) لمستخدمي Microsoft 365، وفي مقدمتها الدالة REGEXEXTRACT المعتمدة على محرك PCRE2 القياسي. تتيح هذه الدالة استخراج الأرقام بلمسة خوارزمية واحدة فائقة السرعة عبر الصيغة =REGEXEXTRACT(A2, "d+")، متفوقة على كافة الصيغ المصفوفية المركبة القديمة من حيث البساطة التعبيرية وسرعة المعالجة واستقرار النظم، مما يجعلها المعيار الذهبي المستقبلي لمعالجة السلاسل النصية في إكسل.
9. تقنيات الأتمتة الموازية: باور كويري ولغة VBA
9.1 استخراج الأرقام عبر بيئة Power Query ولغة M
يمثل محرك باور كويري (Power Query) المدمج في إكسل الحل الصناعي الأكثر متانة وكفاءة لمعالجة وتطهير البيانات على مستوى خطوط استخراج وتحويل وتحميل البيانات (ETL Pipeline)؛ حيث يتعامل المحرك مع مجموعات البيانات الكبيرة خارج نطاق خلايا ورقة العمل المباشرة، مما يحرر واجهة المستخدم من بطء الاستجابة المرتبط بالمعادلات المصفوفية الثقيلة.
تعتمد المعالجة داخل باور كويري على لغة البرمجة الوظيفية المتقدمة (M Code)، والتي توفر دالة متخصصة ومباشرة لاستبقاء محارف معينة تسمى Text.Select. ومن خلال هذه الدالة البسيطة، يمكن للمستخدم إنشاء عمود مخصص وتطبيق المعادلة التالية:
Text.Select([ColumnName], {"0".."9"})
تقوم هذه العبارة البرمجية الأنيقة بمسح النص البرمجي في كل سجل واستخلاص الأرقام الواقعة بين 0 و9 حصرياً، متجاهلة كافة المحارف والرموز الأخرى بمرونة مطلقة وسرعة فائقة.
تتجلى الميزة الاستراتيجية لباور كويري في قابلية الإجراءات للأتمتة الكاملة والتكرار؛ فبمجرد بناء الخطوات التحويلية لمرة واحدة، يتم حفظها كمسار تدفق ثابت يمكن تحديثه بنقرة زر واحدة (Refresh) فور وصول دفعات جديدة من البيانات الخام غير المهيكلة، مما يجعله الحل المثالي والمنهجي لمستودعات البيانات الدورية والتقارير الشهرية المتكررة.
9.2 بناء دالة مخصصة (UDF) باستخدام لغة Visual Basic
تحتفظ البرمجة النصية عبر لغة Visual Basic for Applications (VBA) بمكانة متميزة لدى مطوري النماذج المحاسبية المتطورة ومصممي أدوات العمل المخصصة؛ إذ تتيح بناء دوال برمجية محددة من قبل المستخدم (User Defined Functions – UDF) تتكامل في ورقة العمل كأي دالة قياسية مدمجة دون الحاجة إلى تعقيد الصيغ المباشرة في شريط المعادلات.
يتم بناء الدالة المخصصة من خلال فتح محرر الأكواد (VBE) وإدراج وحدة برمجية قياسية (Standard Module) تحتوي على خوارزمية فحص تتابعي تدور حول محارف السلسلة النصية؛ وتعتمد الخوارزمية على حلقة تكرار بسيطة تقرأ النص حرفاً بحرف وتختبر كل خانة باستخدام الدالة الشرطية IsNumeric، فإذا ثبتت القيمة العددية للمحرف، يتم دمجه في متغير نصي تجميعي يُعاد كناتج نهائي للدالة عند اكتمال الحلقة، كما يتضح في البناء البرمجي المفاهيمي التالي:
Function ExtractNumeric(SourceText As String) As String
Dim i As Long, Result As String, Char As String
For i = 1 To Len(SourceText)
Char = Mid(SourceText, i, 1)
If IsNumeric(Char) Then Result = Result & Char
Next i
ExtractNumeric = Result
End Function
بمجرد حفظ هذا الكود ضمن مصنف ممكّن لوحدات الماكرو بتنسيق .xlsm، تصبح الدالة متاحة للاستخدام المباشر في خلايا الجدول عبر كتابة =ExtractNumeric(A2). يوفر هذا الأسلوب استقلالية وظيفية كاملة، ويبسط شكل ورقة العمل إلى أقصى حد ممكن، ويجعل الصيانة البرمجية محصورة في نافذة الكود دون التخوف من قيام المستخدمين النهائيين بالعبث بالصيغ الدقيقة في الخلايا.
9.3 توظيف التعابير النمطية (Regular Expressions) للدقة المطلقة
عندما تزداد شروط الاستخراج تعقيداً، وتتطلب التمييز بين أنواع محددة من الأرقام، كأرقام الهواتف الدولية، أو الأرقام البريدية، أو المعرفات الضريبية ذات الأنماط المركبة، تصبح الطرق الرياضية التقليدية عاجزة عن الوفاء بالغرض؛ وهنا يبرز الاستخدام الكلاسيكي لمكتبات التعابير النمطية عبر لغة VBA من خلال تفعيل الكائن البرمجي VBScript.RegExp.
تتيح التعابير النمطية صياغة قواعد بحث دقيقة وموجزة باستخدام الرموز الوصفية؛ فالنمط d+ يبحث عن أي تتابع عددي متصل، في حين يمكن للنمط (?<!w)d{5}(?!w) استخراج الرموز البريدية المكونة من خمسة أرقام دون غيرها من الأرقام الأخرى المبعثرة في النص. يقوم الكائن البرمجي بالبحث في السلسلة النصية واستخراج كافة التطابقات بدقة خوارزمية مطلقة تتجاوز قدرات أي صيغة رياضية مدمجة.
ومع ذلك، ينبغي على مطوري النماذج الموازنة بين المرونة اللامحدودة للتعابير النمطية وبين صعوبة صيانتها ومراجعتها؛ إذ تتطلب كتابة أنماط الـ Regex خبرة برمجية متخصصة قلما تتوفر لدى مستخدمي إكسل العاديين. كما أن الاعتماد على مكتبات النظام الخارجية عبر VBA قد يواجه قيوداً تشغيلية عند محاولة تشغيل الملف على بيئات أنظمة أخرى كأجهزة ماك (macOS) أو إصدارات الويب، مما يفرض توثيق هذه الوحدات بعناية لضمان استمرارية عمل النموذج.
10. استكشاف الأخطاء وتصحيح المخرجات وأفضل الممارسات
10.1 التعامل مع مشكلة تحول الأرقام المستخرجة إلى نصوص
يقع كثير من المحللين في فخ تقني شائع بعد نجاح تنفيذ صيغة الاستخراج؛ حيث يفترضون أن الأرقام المستخرجة عبر الدالة TEXTJOIN أصبحت جاهزة على الفور للمعادلات الحسابية، ليتفاجأوا لاحقاً بأن دوالاً مثل SUM أو AVERAGE تُنتج صفراً أو تتجاهل تلك الخلايا بالكامل. يعود هذا السلوك إلى حقيقة أن مخرجات دوال التجميع النصية هي دائماً سلاسل محرفية (Strings) تخضع لقواعد التنسيق النصي حتى لو بدت أرقاماً صريحة للعين المجردة.
لتحويل هذا المخرج النصي إلى قيمة رياضية صريحة قابلة للعمليات الحسابية، تتوفر عدة آليات تقنية؛ أبسطها وأكثرها شيوعاً استخدام المعامل الجبري الثنائي -- (Double Unary) في مقدمة الصيغة بالكامل، هكذا: =--TEXTJOIN(...). يقوم هذا المعامل بإجبار محرك إكسل على تحويل النص إلى رقم حقيقي، ويمكن تحقيق النتيجة ذاتها بتغليف الصيغة داخل الدالة الحسابية VALUE() أو بإجراء عملية ضرب محايدة في الرقم واحد * 1.
ومع ذلك، يجب توخي الحذر الشديد قبل تطبيق هذا التحويل القسري؛ فإذا كانت الخلية المستهدفة خالية من الأرقام ونتج عن الصيغة نص فارغ ""، فإن تطبيق المعامل -- أو الدالة VALUE سيؤدي فوراً إلى انفجار خطأ القيمة #VALUE!. لتفادي هذا السلوك غير المرغوب، يُفضل دائماً تغليف الصيغة النهائية بدالة شرطية أو وقائية مثل IFERROR(--TEXTJOIN(...), "") لضمان الحفاظ على نظافة الخلية في حال عدم العثور على أرقام.
10.2 الحفاظ على الأصفار البادئة في الأكواد والرموز التعريفية
تمثل مشكلة “الأصفار البادئة” (Leading Zeros) أحد أكثر التحديات حساسية في هندسة البيانات؛ فالكثير من المعرفات الرقمية المهمة، مثل الأرقام القومية، وأرقام الحسابات المصرفية (IBAN)، والرموز الشريطية (Barcodes)، تبدأ بالرقم صفر، مثل الكود "004821". وعند تطبيق تقنيات التحويل الحسابي الصريح المذكورة في الفقرة السابقة على هذه الأرقام، يقوم إكسل بحذف الأصفار البادئة تلقائياً باعتبارها غير ذات دلالة رياضية، ليتحول الكود السابق إلى 4821، مما يفسد القيمة التعريفية للبيانات بالكامل.
لتجنب هذا الفقدان الكارثي للبيانات، يتعين على المحلل التمييز المنهجي الصارم بين “الأرقام الحسابية” (Quantitative Numbers) التي تُستخدم في العمليات الرياضية كالأسعار والكميات، وبين “الأكواد الرقمية” (Categorical Codes) التي تُستخدم فقط لغايات التعريف والتمييز. ففي حالة الأكواد التعريفية، يجب الامتناع تماماً عن تطبيق أي معاملات تحويل قسري (كالضرب في واحد أو استخدام VALUE)، وترك مخرجات الدالة TEXTJOIN كنص ثابت ومستقل للحفاظ على الأصفار في أماكنها بدقة.
وفي الحالات التي يتطلب فيها النموذج إظهار الأصفار البادئة مع ضرورة الاحتفاظ بالخاصية العددية للرقم، يمكن اللجوء إلى التنسيق المخصص للخلايا (Custom Number Formatting)؛ كأن يتم تحديد تنسيق الخلية بنمط ثابت يتضمن أصفاراً متتالية مثل 000000، أو استخدام الدالة TEXT لإعادة ضبط القناع البصري للمخرجات، مما يحقق التوازن المثالي بين المظهر الوظيفي المطلوب والتكامل الرياضي للنظام.
10.3 أفضل الممارسات لتوثيق وصيانة أوراق العمل المعقدة
نظراً للتعقيد التركيبي الذي تتسم به الصيغ المصفوفية لاستخراج الأرقام، فإن تركها داخل مصنفات العمل دون توثيق كافٍ يمثل خطراً تشغيلياً كبيراً يهدد استدامة العمل؛ فغالباً ما يواجه المستخدمون اللاحقون صعوبة بالغة في فك شفرة هذه المعادلات وتعديلها عند حدوث أي خلل، مما قد يدفعهم إلى حذفها أو ارتكاب أخطاء فادحة أثناء محاولة التحديث.
تقتضي أفضل الممارسات المهنية إنشاء “أعمدة تدقيق واختبار” (Audit Columns) منفصلة بجانب أعمدة المخرجات؛ حيث يتم استخدام دوال مثل ISNUMBER وLEN للتأكد المستمر من أن القيم المستخرجة تقع ضمن النطاقات الطولية والقيمية المتوقعة، وتوليد إشعارات تحذيرية باستخدام “التنسيق الشرطي” (Conditional Formatting) عند رصد أي خروج عن المعايير المعتمدة، مثل استخراج قيم فارغة لسجلات يُفترض منطقياً أن تضم قيماً عددية.
أخيراً، يُنصح بتضمين تعليقات توضيحية (Notes) مثبتة على رؤوس الأعمدة المعنية تشرح بإيجاز المنهجية المتبعة، وتحدد ما إذا كانت الصيغة تتطلب إدخالاً مصفوفياً من نمط CSE أو إدخالاً عادياً، مع توضيح أدنى إصدار من إكسل يلزم لتشغيل الملف دون أخطاء. إن التوثيق المنهجي الدقيق للنماذج الحسابية لا يقل أهمية عن بنائها الفني، فهو الضمانة الحقيقية لاستمرار موثوقية القرارات المستندة إلى تلك البيانات الرقمية الحيوية.
خاتمة
استعرضنا في هذا الدليل التخصصي الأبعاد النظرية والتطبيقية المعمقة لمهمة استخراج الأرقام من السلاسل النصية غير المتجانسة في برمجية ميكروسوفت إكسل؛ وهي المهمة التي تشكل حجر الزاوية في تنقية وتجهيز البيانات للتحليلات الكمية والنمذجة الرياضية. وقد تبين لنا من خلال التحليل التفكيكي للصيغة القياسية الكلاسيكية كيف تتكامل الدوال الأساسية LEN وINDIRECT وROW وMID وIFERROR وTEXTJOIN لتشكيل خوارزمية فحص حرفي متزامنة تحاكي حلقات التكرار البرمجية بأعلى درجات الدقة والاتساق.
كما بينت المقارنة التحليلية مع التقنيات الحديثة الفارق الجوهري في الكفاءة بين الحلول التوافقية القديمة والبدائل المبتكرة المتاحة في منظومة Microsoft 365؛ حيث أحدثت دوال المصفوفات الديناميكية مثل LAMBDA وTEXTSPLIT، وأدوات التعابير النمطية الرسمية الحديثة مثل REGEXEXTRACT، نقلة نوعية تتيح اختصار الصيغ المعقدة وتحسين زمن المعالجة وتقليل استهلاك الذاكرة العشوائية بصورة ملحوظة، فضلاً عن الحلول الصناعية التي يقدمها محرك باور كويري لأتمتة عمليات التنقية على مستوى المؤسسات.
ختاماً، يتطلب النجاح المهني في إدارة وتنقية البيانات في إكسل فهماً واعياً لطبيعة البيانات ومقاصد استخدامها؛ فالمحلل الحصيف هو من يميز بدقة متى يجب إبقاء الأرقام كنصوص لحماية الأكواد والأصفار البادئة، ومتى يتعين تحويلها قسرياً إلى قيم حسابية لإدراجها في التحليلات الإحصائية. إن الالتزام بأفضل ممارسات التوثيق والتحقق واختيار الأداة البرمجية الأنسب لكل بيئة تشغيلية يظل الضمانة الأساسية لتحويل البيانات الخام المشوهة إلى أصول معلوماتية موثوقة تسهم في دعم اتخاذ القرارات الرشيدة بثقة واقتدار.
المراجع
- Gulwani, S. (2011). Automating string processing in spreadsheets using input-output examples. In POPL ’11: Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (pp. 317–330). Association for Computing Machinery. https://doi.org/10.1145/1926385.1926423
- Microsoft Corporation. (n.d.). TEXTJOIN function. Microsoft Support. Retrieved October 24, 2023, from https://support.microsoft.com/en-us/office/textjoin-function-357b449a-ec91-49d0-80c3-0e8fc845691c
- Microsoft Corporation. (n.d.). Power Query Text.Select function. Microsoft Learn. Retrieved October 24, 2023, from https://learn.microsoft.com/en-us/powerquery-m/text-select
- Microsoft Corporation. (2024). REGEXEXTRACT function. Microsoft Support. Retrieved May 18, 2024, from https://support.microsoft.com/en-us/office/regexextract-function-4b96a9ef-7848-4363-95c0-43b8110b6046