تُعد معالجة السلاسل النصية وتنقيتها داخل جداول البيانات الإلكترونية من الركائز الأساسية التي تقوم عليها علوم هندسة البيانات والتحليل المالي والإحصائي المعاصر. فعند التعامل مع قواعد بيانات ضخمة واردة من واجهات برمجة التطبيقات (APIs) أو أنظمة إدارة تخطيط موارد المؤسسات (ERP) أو منصات التجارة الإلكترونية، يواجه محللو البيانات تحديات متواصلة تتمثل في وجود شوائب نصية غير مرغوب فيها، ولاحقات أو سوابق إدارية مشوهة، ورموز تحكم خفية تعيق عمليات الفرز والمطابقة والحساب. ومن هنا، يبرز برنامج مايكروسوفت إكسيل بوصفه بيئة حسابية مرنة توفر ترسانة واسعة من الأدوات والخوارزميات والصيغ الرياضية المخصصة لتطهير النصوص وتفكيكها بدقة متناهية، محولاً البيانات الخام المشوشة إلى أصول معلوماتية نقية وقابلة للاستثمار المؤسسي.
تتجاوز مسألة إزالة نص محدد من خلية أو نطاق خلايا مجرد النقر العابر على أزرار التحرير، لتشمل فهماً عميقاً للبنية المعمارية للنصوص الرقمية، وكيفية تفسير محرك إكسيل للبايتات ومحارف اليونيكود (Unicode) والترميز القياسي الأمريكي لتبادل المعلومات (ASCII). كما تتطلب هذه المهارة إتقان التمييز بين الاستبدال القائم على مطابقة القيمة النصية الصرفة والاستبدال القائم على الموضع المكاني للحرف داخل السلسلة، فضلاً عن فهم التدرج المنطقي بين أدوات الواجهة الرسومية التفاعلية، والدوال التقليدية المتداخلة، والدوال المصفوفية الديناميكية المتقدمة، وصولاً إلى محركات الاستعلام المؤتمتة مثل Power Query وبيئات البرمجة التخصصية عبر لغة Visual Basic for Applications.
يقدم هذا المرجع الأكاديمي الشامل دليلاً تأصيلياً وتطبيقياً متكاملاً لكيفية استئصال وحذف النصوص والرموز غير المرغوب فيها من خلايا إكسيل. وسيتم استعراض كافة المنهجيات والتقنيات، بدءاً من الخصائص المجهرية لدالتي SUBSTITUTE و REPLACE، مروراً بالدوال الحديثة في بيئة Microsoft 365 مثل دوال التعابير النمطية (Regular Expressions) ودوال التجميع الحلقي (REDUCE و LAMBDA)، وصولاً إلى استراتيجيات معالجة الرموز غير المرئية وبناء خوارزميات أتمتة فائقة السرعة للمصنفات الكبرى.

- 1. مقدمة منهجية لمعالجة النصوص وتطهير البيانات في إكسيل
- 2. التشريح النظري والتقني لدالة SUBSTITUTE في إكسيل
- 3. إزالة نص فردي محدد باستخدام دالة SUBSTITUTE: التطبيق العملي
- 4. إزالة نصوص متعددة متزامنة عبر التداخل المتقدم لدوال SUBSTITUTE
- 5. توظيف دالة REPLACE للحذف القائم على الموقع الموضعي للنص
- 6. استخدام أدوات البحث والاستبدال التفاعلية لإزالة النصوص
- 7. دوال إكسيل 365 الحديثة لمعالجة وإزالة السلاسل النصية
- 8. تقنيات متقدمة: دمج دالة REDUCE مع LAMBDA لمعالجة قوائم النصوص
- 9. معالجة وإزالة النصوص غير المرئية والرموز الخاصة والمسافات
- 10. أتمتة إزالة النصوص المحددة باستخدام Power Query
- 11. الأتمتة البرمجية المتقدمة عبر Visual Basic for Applications (VBA)
- 12. أفضل الممارسات، التحقق من الصحة، ومعالجة الأخطاء الشائعة
- خاتمة
- المراجع
1. مقدمة منهجية لمعالجة النصوص وتطهير البيانات في إكسيل
1.1 أهمية تطهير النصوص في إدارة البيانات الضخمة
يشكل تطهير النصوص (Data Cleansing) مرحلة تمهيدية حاسمة في دورة حياة البيانات؛ حيث تُشير الأدبيات الإحصائية وهندسة النظم إلى أن البيانات غير المنقحة مسؤولة عن إخفاق نسبة هائلة من نماذج التعلم الآلي والتحليلات التنبؤية. في بيئة إكسيل، يؤدي تراكم النصوص الشائبة، مثل رموز العملات الملتصقة بالأرقام أو الواصلات الإضافية أو البادئات المكررة في الرموز التعريفية للمنتجات، إلى تشويه عمليات الفرز المنطقي، وعرقلة دوال البحث والربط العلائقي مثل XLOOKUP و VLOOKUP، وإفساد التقارير التجميعية في الجداول المحورية (Pivot Tables).
يعزز التطهير المنهجي للنصوص موثوقية نماذج اتخاذ القرار المؤسسي من خلال تقليل تكرار البيانات الملوثة (Data Contamination) وتفادي اتخاذ قرارات تسعيرية أو استثمارية مبنية على قراءات رقمية خاطئة. فعلى سبيل المثال، عند استيراد تقرير مالي يحتوي على قيم مثل “1500 USD” أو “1500 SAR”، فإن محرك الحسابات في إكسيل يتعامل مع هذه الخلايا كسلاسل نصية جامدة تفقد قيمتها الرياضية، مما يؤدي إلى ظهور أخطاء حسابية حرجة من نوع #VALUE! عند محاولة جمعها أو إدراجها ضمن معادلات التدفق النقدي المخصوم.
تتجلى الصعوبة التقنية هنا في التمييز الدقيق بين النصوص الأبجدية الصرفة، والنصوص الرقمية التي تظهر كأرقام ولكنها مُخزنة بتنسيق نصي (Numbers Stored as Text). يتطلب هذا التمايز معالجة خاصة تضمن استئصال الشوائب النصية مع إعادة هيكلة الخلية المستهدفة لتستعيد خواصها العددية الصحيحة دون فقدان الدقة الحسابية أو حدوث أخطاء التقريب غير المرغوبة.
1.2 المفاهيم الأساسية لمعالجة السلاسل النصية في بيئة الجداول الحسابية
تعتمد معمارية السلسلة النصية (String Architecture) في برمجيات الجداول الحسابية على تسلسل ترتيبي من المحارف (Characters)، حيث يُخزن كل محرف بموجب فهرس محدد يمثل موقعه الفيزيائي داخل الذاكرة المخصصة للخلية. يتعامل محرك إكسيل مع النصوص استناداً إلى مصفوفات ثنائية تتبع معايير ترميز محددة؛ مما يجعل استيعاب آلية توزيع البايتات أمراً جوهرياً لضبط عمليات الإزالة والاقتطاع بدقة بالغة وتجنب كسر النصوص متعددة اللغات.
تلعب مسألة حساسية حالة الأحرف (Case Sensitivity) دوراً محورياً في تحديد نجاح أو فشل عمليات المطابقة النصية، لا سيما في اللغات التي تميز بين الأحرف الكبيرة والصغيرة كاللغة الإنجليزية. تتبنى بعض الدوال مثل SUBSTITUTE منطقاً صارماً يتحرى التطابق الحرفي لحالة الرمز، بينما تتجاهل أدوات أخرى مثل وظيفة البحث والاستبدال الرسومية هذا الفارق افتراضياً، ما لم يتم تقييدها بضوابط تحقق مسبقة تضمن عدم التعديل على نصوص برمجية أو رموز تسلسلية حساسة.
من الناحية المفاهيمية، يجب التمييز الرياضي الدقيق بين الحذف المادي للمحرف وعملية استبداله بالسلسلة النصية الفارغة (Empty String المميزة برمز علامتي التنصيص المزدوجتين “”). فالاستبدال بالسلسلة الفارغة لا يعني تفريغ بنية الخلية تماماً من التمثيل المنطقي، بل يعني تقليص طول السلسلة النصية بمقدار عدد البايتات المحذوفة، وهو ما يؤثر مباشرة على نتائج دوال الفحص الحجمي مثل دالة LEN وخصائص تقييم الفراغات.
2. التشريح النظري والتقني لدالة SUBSTITUTE في إكسيل
2.1 البنية النحوية والوسطاء الخاصة بالدالة
تُعد دالة SUBSTITUTE حجر الزاوية في عمليات الإزالة النصية الموجهة داخل إكسيل، حيث صُممت خصيصاً لاستبدال نص قديم بنص جديد داخل سلسلة محددة بناءً على تطابق المحتوى النصي وليس على الموقع الفيزيائي للحرف. تتم صياغة الدالة وفق البنية النحوية التالية:
=SUBSTITUTE(text, old_text, new_text, [instance_num])
- وسيط النص المستهدف (text): يمثل السلسلة النصية الأصلية المراد معالجتها، ويكون في الغالب مرجعاً لخلية محددة (مثل A2) أو نصاً مدخلاً بشكل مباشر بين علامتي تنصيص.
- وسيط النص القديم (old_text): يحدد الجزء النصي أو الرمز الشائب المطلوب البحث عنه واستئصاله بدقة من الخلية.
- وسيط النص الجديد (new_text): يمثل النص البديل الذي سيحل محل النص القديم؛ ولأغراض الحذف والإزالة التامة، يتم تزويد هذا الوسيط بسلسلة نصية فارغة يُعبر عنها برمزين متتاليين لعلامات التنصيص دون أي مسافة بينهما (“”).
- وسيط رقم التكرار الاختياري (instance_num): يتيح للمحلل تحديد رقم الظهور المستهدف لعملية الاستبدال، وفي حال إغفاله، تقوم الدالة باستبدال كافة تكرارات النص القديم دون استثناء داخل الخلية المستهدفة.
يوفر الوسيط الاختياري instance_num مستوى فائقاً من التحكم الانتقائي؛ إذ يسمح بمعالجة تكرارات معينة للنص الشائب دون المساس بالتكرارات الأخرى التي قد تحمل دلالة تصنيفية أو بنيوية في السلسلة الأصلية، وهو ما يمنح الدالة مرونة برمجية عالية في معالجة الهياكل المعقدة كالسجلات الطبية وأكواد الفواتير.
2.2 الخصائص الحسابية والمنطقية لدالة SUBSTITUTE
تتميز دالة SUBSTITUTE بخوارزمية مطابقة قطعية وصارمة تفرض حساسية كاملة لحالة الأحرف (Case Sensitive)؛ فالرمز “A” يختلف اختلافاً جوهرياً في التقييم المنطقي للدالة عن الرمز “a”. هذه الخاصية تجعلها الخيار الأمثل للتعامل مع البيانات المعيارية المشفرة وحقول قواعد البيانات العلائقية التي تتطلب دقة متناهية لمنع التعديل غير المقصود على بيانات فرعية متشابهة لفظياً.
تتعامل الدالة مع المسافات الفارغة والفواصل وعلامات الترقيم بوصفها رموزاً نصية كاملة الأهلية تمتلك قيم أسكي (ASCII) مستقلة في جدول الرموز. وبالتالي، فإن محاولة إزالة مسافة فاصلة تتطلب تمرير المسافة بوضوح داخل وسيط النص القديم كرمز ” “، مع إدراك أن المسافات المزدوجة تُعامل ككيان تركيبي يختلف عن المسافة المفردة من حيث التقييم الحسابي للذاكرة.
من منظور استهلاك الموارد الحاسوبية (Memory Footprint)، تتمتع دالة SUBSTITUTE بكفاءة تنفيذية عالية للغاية؛ إذ تنفذ عمليات المسح الخطي والاستبدال في وقت خطي من رتبة O(N) بالاستناد إلى طول السلسلة، مما يجعلها تتفوق بشكل ملحوظ على الدوال المصفوفية المركبة والدوال التكرارية التقليدية عند تطبيقها على أوراق عمل تحتوي على مئات الآلاف من الصفوف المترابطة.

3. إزالة نص فردي محدد باستخدام دالة SUBSTITUTE: التطبيق العملي
3.1 صياغة المعادلة الأساسية للإزالة الفردية
لإجراء عملية استئصال لنص فردي شائب داخل جدول إكسيل، يتم بناء المعادلة بتمرير مرجع الخلية المحتوية على القيمة الخام وتحديد النص المستهدف استبعاده بدقة متناهية، مع ضبط وسيط الاستبدال على الحالة الصفرية (السلسلة الفارغة). لتوضيح ذلك رياضياً وعملياً، لنفترض وجود سجل إداري يحتوي على أرقام المنتجات في العمود A مسبوقة ببادئة موحدة مثل “REF-“، فيمكن صياغة المعادلة في الخلية B2 على النحو التالي:
=SUBSTITUTE(A2, “REF-“, “”)
تعتمد آلية سحب وتطبيق المعادلة على الاستفادة من مقبض التعبئة التلقائية (AutoFill Handle) أو الضغط المزدوج على الزاوية السفلية للخلية المعنية، مما يؤدي إلى نسخ الصيغة الحسابية على امتداد العمود النشط. يقوم محرك إكسيل بتعديل المراجع النسبية للخلية آلياً مع كل صف، ليجري عملية التطهير النصي على ملايين السجلات في أجزاء من الثانية دون تدخل يدوي إضافي.
تتعدد التطبيقات الإدارية والرياضية لهذه المعادلة الأساسية؛ حيث تُستخدم بكثافة لحذف الوحدات القياسية واللواحق التوضيحية الملصقة بالكميات المادية، مثل حذف لاحقة “KG” من بيانات المخازن أو إزالة الرموز الإقليمية مثل “SA-” من أرقام الهويات الوطنية، محولةً القيم إلى نصوص نظيفة جاهزة للتحويل الرقمي والمعالجة الحسابية المتقدمة.
3.2 معالجة حالات التكرار المحددة داخل الخلية الواحدة
في كثير من السيناريوهات الميدانية، قد تتضمن الخلية الواحدة تكرارات متعددة للرمز ذاته، ولكن متطلبات المعالجة تقتضي إزالة ظهور محدد فقط دون التأثير على المواضع الأخرى. تبرز هنا القوة التشغيلية لوسيط instance_num؛ فإذا افترضنا وجود نص يحتوي على الفاصلة المنقوطة في مواضع متعددة مثل “Item;01;Warehouse;Section”، وأردنا إزالة الفاصلة الأولى فقط مع الإبقاء على الفواصل اللاحقة كفواصل تنظيمية، تصاغ المعادلة على النحو الآتي:
=SUBSTITUTE(A2, “;”, “”, 1)
وبالمثل، يمكن توجيه الدالة لاستهداف الظهور الثاني أو الثالث من خلال تعديل الرقم الصحيح في نهاية الدالة. يوضح الجدول التالي أنماطاً تطبيقية لتوظيف وسيط التكرار لعزل النصوص المحددة:
- إزالة أول شرطة فقط:
=SUBSTITUTE(A2, "-", "", 1)يحول “ABC-123-XYZ” إلى “ABC123-XYZ”. - إزالة ثاني شرطة فقط:
=SUBSTITUTE(A2, "-", "", 2)يحول “ABC-123-XYZ” إلى “ABC-123XYZ”. - إزالة الظهور الأخير ديناميكياً: يتطلب دمج SUBSTITUTE مع دالتي LEN لتحديد العدد الإجمالي للتكرارات واستهداف الظهور الأخير حسابياً:
=SUBSTITUTE(A2, "-", "", LEN(A2)-LEN(SUBSTITUTE(A2, "-", ""))).
تكتسب هذه التقنية أهمية استثنائية في إعادة هيكلة أرقام الهواتف الدولية والأكواد التسلسلية ذات الهياكل الثابتة، حيث تُزال أرقام الفواتح أو الرموز المضللة مع الحفاظ على الفواصل البنيوية التي تفصل بين المقاطع المكانية والوظيفية للكود.
4. إزالة نصوص متعددة متزامنة عبر التداخل المتقدم لدوال SUBSTITUTE
4.1 هندسة الدوال المتداخلة (Nested Functions Architecture)
عندما تفرض طبيعة البيانات ضرورة التخلص من حزمة متنوعة من النصوص والرموز غير المرغوبة داخل الخلية نفسها في خطوة واحدة، لا تكفي الدالة المنفردة، بل يتم اللجوء إلى تقنية تداخل الدوال (Nested Functions). تعتمد هذه الهندسة على تغليف دالة SUBSTITUTE داخل دالة أخرى، بحيث يُصبح الخرج النصي المنقى للدالة الداخلية بمثابة الدخل النصي الخام للدالة الخارجية المحيطة بها، وفق البنية الهيكلية التالية:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, “Text1”, “”), “Text2”, “”), “Text3”, “”)
يخضع هذا التكوين لقاعدة التقييم من الداخل إلى الخارج (Inside-Out Evaluation)؛ حيث يقوم محرك إكسيل أولاً بفحص النص الأصلي واستئصال “Text1″، ثم يمرر السلسلة الناتجة إلى المستوى الوسيط لإزالة “Text2″، وأخيراً ينفذ المستوى الخارجي الحذف النهائي للنص “Text3”. يضمن هذا الترتيب المتسلسل عدم حدوث تضارب بين عمليات التبديل وحماية اتساق البيانات النصية.
مع ذلك، يجب الانتباه إلى القيود التقنية لمحرك الصيغ في إكسيل؛ فرغم أن البرنامج يتيح تداخل الدوال لغاية 64 مستوى من المستويات المتتابعة، إلا أن الإفراط في التداخل قد يؤدي إلى استنزاف موارد المعالجة وانخفاض أداء المصنفات الضخمة، فضلاً عن صعوبة تتبع الأخطاء المنطقية الناتجة عن إغفال الأقواس أو تشابك وسائط النصوص.
4.2 سيناريوهات تطبيقية لتطهير أسماء المستخدمين والرموز المعقدة
تبرز التطبيقات العملية لتداخل الدوال بكثافة في عمليات تنظيف أسماء المستخدمين والحسابات الواردة من منصات التواصل أو نماذج التسجيل الإلكتروني، والتي غالباً ما تكون محاطة بأقواس ورموز غير ملائمة لقواعد البيانات التقليدية. لتطهير حقل يحتوي على نصوص ملوثة برموز مثل الأقواس وعلامات التعجب والشرطات، يمكن بناء صيغة متداخلة خماسية المراحل:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, “(“, “”), “)”, “”), “!”, “”), “-“, “”)
تُعد هذه الصيغة أداة معيارية لتنظيف الحقول المالية التي تمزج بين القيم النقدية ومحارف العملات والفواصل مثل إزالة علامة الدولار ($)، والفاصلة الألفية (,)، والمسافات الزائدة من سلاسل مثل “$ 1,250.00″، مما يمهد لتحويلها مباشرة إلى أرقام مالية قياسية صالحة للإدراج في موازين المراجعة والقوائم الختامية.
لضمان عدم تشوه النص الأصلي أثناء مروره بسلسلة التصفية المتعددة، يجب ترتيب النصوص المحذوفة وفق الأولوية المنطقية؛ بحيث تُزال السلاسل النصية المركبة والأطول أولاً، تليها المحارف الفردية والرموز الفرعية، لتفادي إزالة أجزاء متطابقة قد تؤدي إلى تكسير الكلمات الحيوية في البيانات.
4.3 استراتيجيات إدارة الصيغ المعقدة لتسهيل القراءة والصيانة
تتسم الصيغ المتداخلة الطويلة بالتعقيد البصري الذي يجعل من الصعب قراءتها وتدقيقها من قِبل محللي البيانات الآخرين. للتغلب على هذه العقبة، يُنصح بتنسيق شريط الصيغة في إكسيل باستخدام فواصل الأسطر البرمجية بالضغط على المفتاحين Alt + Enter داخل شريط المعادلة. يتيح هذا التنسيق توزيع كل مستوى استبدال على سطر مستقل مع إبراز الأقواس المقابلة له، مما يرفع من مقروئية الصيغة إلى حد كبير.
كما يُعد توظيف النطاقات المسماة (Named Ranges) ركيزة أساسية في بناء النماذج المالية الشفافة؛ إذ يمكن تسمية النصوص المستهدفة بالإزالة بأسماء دلالية مثل InvalidChar_1 أو عزلها في جداول مرجعية متخصصة يسهل الرجوع إليها ومراجعتها دورياً من قِبل فرق التدقيق المالي والإداري دون الحاجة إلى تفكيك كود الصيغة الأساسية.
تقتضي أفضل ممارسات الجودة البرمجية اختبار كل حلقة استبدال على عينة مصغرة ومستقلة من البيانات قبل تعميم المعادلة المركبة على النطاق الكلي، للتأكد من خلو المسار الحسابي من أي تعارض منطقي أو إزالة عرضية لأحرف تشكل جزءاً بنيوياً من السجلات المطلوبة.
5. توظيف دالة REPLACE للحذف القائم على الموقع الموضعي للنص
5.1 المقارنة التحليلية بين SUBSTITUTE و REPLACE
بينما تركز دالة SUBSTITUTE على التطابق التام لقيمة النص دون اكتراث بموقعه داخل الخلية، تعمل دالة REPLACE وفق مبدأ الإحداثيات الموضعية الثابتة، حيث تستهدف مقطعاً نصياً بناءً على نقطة بدايته وعدد الأحرف المراد استئصالها. تتم صياغة دالة REPLACE وفق المعايير التالية:
=REPLACE(old_text, start_num, num_chars, new_text)
- old_text: السلسلة النصية الأصلية الحاضنة للبيانات.
- start_num: الرقم الترتيبي الصحيح للمحرف الذي تبدأ عنده عملية الاستبدال.
- num_chars: الإجمالي الكمي لعدد المحارف المطلوب حذفها ابتداءً من نقطة البداية.
- new_text: النص البديل، ويُضبط بالسلسلة الفارغة (“”) لإتمام الحذف الموضعي.
تتفوق دالة REPLACE على SUBSTITUTE في الحالات التي تتمتع فيها البيانات ببنية هيكلية ثابتة الأطوال ومحددة القياسات المسبقة، مثل أرقام الحسابات البنكية الدولية (IBAN) أو الرموز البريدية؛ حيث تكون إزالة المقطع الواقع بين المحرف العاشر والخامس عشر مطلوبة بغض النظر عن القيمة الفعلية للنصوص المخزنة في تلك الخانات.
5.2 دمج دالتي FIND و SEARCH مع دالة REPLACE
لتحويل الحذف الموضعي الثابت إلى حذف ديناميكي مرن يتكيف مع السلاسل النصية متغيرة الأطوال، يتم دمج دالة REPLACE مع دوال البحث عن المواقع مثل دالتي FIND و SEARCH. تقوم دالة FIND بحساب الموقع الفهرسي الدقيق لبداية النص المراد إزالته مع مراعاة حساسية حالة الأحرف، بينما تؤدي دالة SEARCH الوظيفة ذاتها ولكن دون حساسية لحالة الأحرف.
تظهر القوة الرياضية لهذا الدمج عند صياغة معادلة تستهدف إزالة مقطع يبدأ برمز معين ويمتد لعدد محدد من الأحرف دون معرفة رقمه الترتيبي المسبق في الخلية. على سبيل المثال، لإزالة بادئة تبدأ بالرمز “#” وتمتد لثلاثة أحرف داخل الخلية A2، تُصاغ المعادلة كالآتي:
=REPLACE(A2, SEARCH(“#”, A2), 3, “”)
تمنح هذه الصيغة الحركية استقراراً تشغيلياً عالياً؛ إذ تسمح باستئصال الأنماط النصية المشوشة حتى لو تحرك موضعها بين بداية السلسلة أو وسطها أو نهايتها عبر الصفوف المختلفة، مع ضمان تحييد الأخطاء الناتجة عن تباين أطوال السجلات المدخلة في الجداول المركزية.

6. استخدام أدوات البحث والاستبدال التفاعلية لإزالة النصوص
6.1 الواجهة الرسومية للبحث والاستبدال (Ctrl + H)
تُعد نافذة البحث والاستبدال التفاعلية (Find and Replace) التي يتم استدعاؤها عبر الاختصار Ctrl + H من أسرع الوسائل المباشرة المتاحة في واجهة إكسيل لتنقية وتطهير البيانات دون كتابة صيغ رياضية وسيطة. تعتمد هذه الطريقة على إدخال النص المطلوب استبعاده في حقل “البحث عن” (Find what) مع إبقاء حقل “استبدال بـ” (Replace with) فارغاً تماماً، ثم النقر على زر “استبدال الكل” (Replace All).
تتضمن النافذة خيارات تحكم متقدمة بالغة الأهمية، مثل خيار “مطابقة حالة الأحرف” (Match case) لتفادي تعديل نصوص مشابهة تختلف فقط في نوعية المحارف، وخيار “مطابقة محتويات الخلية بأكملها” (Match entire cell contents) الذي يمنع حذف المقاطع النصية الجزئية إذا كان الهدف هو تفريغ الخلايا التي تطابق النص بالكامل فقط دون غيرها.
تنطوي هذه المعالجة اليدوية المباشرة على مخاطر تشغيلية محتملة؛ نظراً لأنها تعدل على أصل البيانات المخزنة وتلغي التسلسل التاريخي للتراجع في حال حفظ المصنف. لذلك، تقتضي البروتوكولات الاحترافية لأمن البيانات أخذ نسخة احتياطية من المصنف، أو تطبيق الإجراء على نطاق محدد ومحدد مسبقاً بدلاً من تعميمه على كامل ورقة العمل لتجنب التدمير العرضي للبيانات المترابطة.
6.2 توظيف أحرف البدل (Wildcards) في عمليات الحذف الواسعة
تتيح أحرف البدل (Wildcard Characters) لمحترفي تحليل البيانات توسيع نطاق استئصال النصوص من خلال استهداف أنماط هيكلية عريضة تتجاوز الكلمات الثابتة. يوفر إكسيل ثلاثة أحرف بدل رئيسية تتحكم في خوارزميات الاستبدال:
- علامة النجمة (*): تمثل أي عدد عشوائي من المحارف المتتالية. على سبيل المثال، البحث عن
(* )واستبدالها بالفراغ يؤدي إلى استئصال الأقواس الهلالية وما بداخلها بالكامل أياً كان طول النص المحصور بينها. - علامة الاستفهام (?): تمثل محرفاً فردياً واحداً فقط في الموضع المحدد. فالبحث عن
ID-??يزيل الكلمة والرمز متبوعين بأي خانتين نصيتين دون المساس بالسلاسل الأطول. - علامة المدة (~): تُستخدم كرمز تجاوز وهروب (Escape Character) للتعامل مع أحرف البدل ذاتها؛ فعند الرغبة في إزالة علامة النجمة الحقيقية أو علامة الاستفهام دون تفعيل خاصيتها النمطية، يُكتب في حقل البحث
~*أو~?.
يوفر استخدام أحرف البدل قوة استثنائية في اختصار عشرات الخطوات اليدوية في خطوة استبدال واحدة، مما يجعله أسلوباً لا غنى عنه لتنظيف الملاحظات النصية، وإزالة التذييلات البريدية، وتجريد العناوين من الزوائد الجغرافية الموضحة بين علامات الحصر والأقواس.
7. دوال إكسيل 365 الحديثة لمعالجة وإزالة السلاسل النصية
7.1 إعادة هيكلة النصوص بواسطة دالتي TEXTBEFORE و TEXTAFTER
أحدثت مايكروسوفت قفزة نوعية في معالجة النصوص البرمجية عبر إطلاق منظومة الدوال الحديثة في حزمة Microsoft 365. تبرز دالتا TEXTBEFORE و TEXTAFTER كأدوات فائقة المرونة تتيح استخلاص المقاطع النصية واستبعاد النصوص الزائدة استناداً إلى محددات فاصلة (Delimiters) بديهية، متجاوزة التعقيدات الهندسية لدمج دوال FIND و MID و LEFT التقليدية.
تُستخدم دالة TEXTBEFORE لإرجاع كافة النصوص الواقعة قبل محدد معين، مما يؤدي عملياً إلى حذف المحدد وما يليه بالكامل. في المقابل، تستخلص دالة TEXTAFTER النص الواقع بعد المحدد وتستبعد ما قبله. على سبيل المثال، لإزالة اسم المستخدم وعلامة “@” من البريد الإلكتروني والإبقاء على اسم النطاق فقط في الخلية A2، تُطبق الدالة التالية:
=TEXTAFTER(A2, “@”)
تتضمن هذه الدوال وسائط متقدمة للتحكم في الأخطاء مثل وسيط if_not_found ووسيط match_mode الذي يسمح بتفعيل أو إلغاء حساسية حالة الأحرف بمرونة فائقة؛ مما يمنع ظهور قيم الأخطاء #N/A في التقارير المالية عند عدم العثور على المحدد النصي المطلوب في بعض السجلات الشاذة.
7.2 استخدام دالة TEXTSPLIT وتجميع المصفوفات الحركية
تمثل دالة TEXTSPLIT أداة المصفوفات الديناميكية المتطورة لتقسيم النصوص عبر الأعمدة أو الصفوف استناداً إلى محددات متعددة، وعند دمجها مع دالتي FILTER و TEXTJOIN، تمنح المحلل قدرة استثنائية على استئصال قائمة محددة من النصوص الشائبة وإعادة تجميع السلسلة بصورة نقية تماماً دون الحاجة لتداخلات دوال الاستبدال التقليدية.
يعتمد النموذج الهندسي لهذا الحل على تفكيك محتويات الخلية بواسطة TEXTSPLIT إلى مصفوفة محارف مستقلة، ثم تطبيق دالة FILTER لاستبعاد القيم النصية غير المرغوبة، ثم إعادة ربط الأجزاء المتبقية عبر دالة TEXTJOIN المجهزة بفاصل التجميع المناسب. يتجلى هذا التركيب في المعادلة المتقدمة التالية:
=TEXTJOIN(“”, TRUE, FILTER(TEXTSPLIT(A2, ” “), TEXTSPLIT(A2, ” “) “DELETE_ME”))
تتميز هذه المنهجية بالمرونة المعمارية المطلقة لبيئة المصفوفات الديناميكية (Dynamic Arrays)؛ حيث تتوسع وتنكمش وفق حجم السلسلة المدخلة، وتتعامل بسلاسة مع التكرارات والمواضع المتعددة، مما يجعلها حلّاً عالي الكفاءة لمعالجة النصوص التالفة الناتجة عن أخطاء التصدير الشبكي.
7.3 الثورة الجديدة: دوال التعابير النمطية (REGEXTEST, REGEXEXTRACT, REGEXREPLACE)
شهدت بيئة إكسيل مؤخراً إضافة دوال التعابير النمطية (Regular Expressions Functions) الأصلية، والتي تمثل أعلى مستويات المعالجة الاحترافية للنصوص البرمجية في العالم الرقمي. تتيح دالة REGEXREPLACE إزالة الأنماط النصية المعقدة بضربة واحدة عبر مطابقة القواعد المنطقية بدلاً من السلاسل الثابتة، وفق الصياغة المعيارية:
=REGEXREPLACE(text, pattern, replacement)
تسمح هذه الدالة باستئصال كافة الأرقام الممتزجة بالكلمات، أو إزالة الرموز الخاصة بالكامل، أو تنظيف التنسيقات البريدية المركبة من خلال كتابة نمط رياضي مختصر مثل "[0-9]" لإزالة الأرقام، أو "[^ws]" لحذف كافة علامات الترقيم والرموز غير الأبجدية، محققة ما كان يتطلب سابقاً عشرات الأسطر البرمجية في VBA.
تتفوق REGEXREPLACE جذرياً من حيث الكفاءة الحسابية ونقاء الكود البرمجي مقارنة بالصيغ المتداخلة التقليدية؛ إذ يتم تقييم النمط النمطي عبر محرك خوارزمي مدمج فائق السرعة، مما يقلل زمن الحوسبة للمصنفات الكبرى بنسب تتجاوز 70% ويوفر بيئة مستقرة تمنع تجميد النظام أثناء تحديث البيانات الحية.

8. تقنيات متقدمة: دمج دالة REDUCE مع LAMBDA لمعالجة قوائم النصوص
8.1 تطوير دالة مخصصة لإزالة قائمة كاملة من النصوص غير المرغوبة
تمثل الدوال المجهولة (LAMBDA) نقلة مفصلية في هندسة إكسيل؛ حيث تحول محرك الجداول إلى لغة برمجة كاملة الأهلية (Turing-Complete). وعند دمج LAMBDA مع الدالة التراكمية REDUCE، يستطيع المحلل بناء خوارزمية تكرار حلقي (Looping Mechanism) لمعالجة السلسلة النصية وتمرير قائمة كاملة من الكلمات المحظورة لحذفها دون أي تداخل يدوي في الصيغ.
تعتمد آلية دالة REDUCE على أخذ قيمة ابتدائية (نص الخلية المستهدفة)، ثم تطبيق مصفوفة من العناصر (قائمة النصوص المراد إزالتها) عنصراً تلو الآخر، بحيث يُمرر الناتج المنقى من كل تكرار إلى الخطوة التالية تلقائياً، وتُصاغ المعادلة على النحو الآتي:
=REDUCE(A2, TargetList, LAMBDA(accumulated_text, current_item, SUBSTITUTE(accumulated_text, current_item, “”)))
يوفر هذا التصميم الرياضي كوداً نظيفاً وقابلاً للتطوير؛ حيث يتكيف تلقائياً مع حجم قائمة النصوص المستهدفة، ملغياً الحاجة إلى إعادة صياغة الدوال المتداخلة أو تعديل بنيتها عند إضافة عناصر جديدة يراد استبعادها من تقارير المؤسسة.
8.2 بناء مراجع ديناميكية لقوائم الاستبعاد
لتعظيم الفائدة من تقنية REDUCE و LAMBDA، تقتضي أفضل الممارسات التنظيمية عزل الكلمات والنصوص المراد استئصالها في جدول إكسيل ديناميكي مستقل (Excel Table) يسمى مثلاً ExcludedWordsTable. يتيح هذا الفصل المعماري لمديري البيانات والمراجعين تحديث قائمة الاستبعاد بالحذف أو الإضافة دون لمس الصيغ الحسابية المركزية في جداول التقارير.
عند ربط الصيغة الحركية بنطاق الجدول المنظم، يقوم محرك الجداول الديناميكية بتوسيع نطاق المصفوفة آلياً ليشمل الكلمات المضافة حديثاً وتطبيق الحذف الفوري على كافة السجلات المرتبطة. يوضح الجدول التالي مقارنة تشغيلية لأداء هذه التقنيات مع أحجام البيانات المختلفة:
- الصيغ المتداخلة التقليدية: تتطلب تعديلاً يدوياً مستمراً، وتنهار فعاليتها مع زيادة عدد النصوص المحذوفة عن 10 عناصر.
- منظومة REDUCE + LAMBDA: مرونة تامة في التحديث الديناميكي، مع أداء حوسبي متوازن يتيح معالجة عشرات الآلاف من السجلات دون أخطاء بنيوية.
- أداء الذاكرة مع البيانات الضخمة: تحافظ LAMBDA على استقرار استهلاك الذاكرة العشوائية (RAM) عبر إعادة تدوير المتغيرات التراكمية أثناء التنفيذ الحلقي.
9. معالجة وإزالة النصوص غير المرئية والرموز الخاصة والمسافات
9.1 إزالة المسافات الشائبة والمكررة بواسطة TRIM
تُعد المسافات الزائدة من أخطر الشوائب النصية غير المرئية؛ نظراً لأنها تضلل دوال البحث المنطقي وتبدو مطابقة بالعين المجردة للبيانات السليمة. صُممت دالة TRIM خصيصاً لإزالة كافة المسافات البادئة (Leading) واللاحقة (Trailing) من السلسلة النصية، مع تقليص المسافات البينية المتعددة لتصبح مسافة فردية معيارية واحدة تفصل بين الكلمات.
تكمن الثغرة التقنية الكبرى في أن دالة TRIM مصممة للتعامل حصرياً مع المسافة القياسية الممثلة بالرمز ASCII 32. ومع ذلك، عند استيراد البيانات من صفحات الويب وقواعد بيانات الويب، غالباً ما تقترن البيانات بـ “المسافة غير المنكسرة” (Non-Breaking Space) المعروفة بالرمز ASCII 160 أو كود الويب ، والتي تعجز دالة TRIM المنفردة عن التعرف عليها أو إزالتها.
للتغلب على هذا القصور واستئصال المسافات المخفية بجميع أشكالها، يتم دمج دالتي SUBSTITUTE و TRIM في صيغة موحدة تقوم أولاً بتحويل المسافة غير المنكسرة (CHAR(160)) إلى مسافة عادية (CHAR(32))، ثم تمريرها لدالة TRIM لحذفها نهائياً:
=TRIM(SUBSTITUTE(A2, CHAR(160), ” “))
9.2 تنظيف الحروف غير القابلة للطباعة بواسطة دالة CLEAN
تحتوي تدفقات البيانات الواردة من الأنظمة القديمة (Legacy Systems) وأجهزة جمع البيانات المحمولة على محارف تحكم غير قابلة للطباعة (Non-Printable Characters)، وهي الرموز الواقعة في النطاق من 0 إلى 31 في جدول معايير ASCII (مثل رمز السطر الجديد الفعلي وعودة الحامل ونهاية الملف). تظهر هذه المحارف غالباً على هيئة مربعات فارغة أو إشارات غير مفهومة تشوه واجهات التقارير.
تعمل دالة CLEAN كمرشح تنقية متخصص لفحص السلسلة النصية وإزالة كافة رموز التحكم الممتدة من ASCII 0 إلى ASCII 31. ولتحقيق أعلى درجات الحصانة وتوليد نصوص نقية بنسبة 100%، صاغ خبراء هندسة البيانات الصيغة الثلاثية المعيارية التي تدمج التنظيف، واستبدال المسافات غير المنكسرة، وضبط المسافات البينية:
=TRIM(CLEAN(SUBSTITUTE(A2, CHAR(160), ” “)))
يُعد تطبيق هذه المعادلة المعيارية خطوة حتمية قبل البدء في بناء الجداول التجميعية أو ترحيل البيانات إلى مستودعات البيانات المؤسسية (Data Warehouses)؛ حيث تضمن استبعاد كافة الشوائب الفيزيائية والمحارف الصفرية التي قد تتسبب في انهيار خوارزميات الربط المالي واستعلامات SQL اللاحقة.
10. أتمتة إزالة النصوص المحددة باستخدام Power Query
10.1 استيراد البيانات وتطبيق استبدال القيم داخل محرر الاستعلام
يوفر محرك Power Query بيئة استخراج وتحويل وتحميل (ETL) مدمجة وفائقة القوة تتيح أتمتة تطهير البيانات على نطاقات حجمية هائلة تتجاوز حدود أوراق العمل التقليدية. تبدأ العملية بتحويل نطاق البيانات إلى جدول رسمي ثم نقله إلى محرر الاستعلام عبر التبويب “بيانات” (Data) والنقر على “من جدول/نطاق” (From Sheet/Table).
داخل واجهة محرر Power Query، يمكن تحديد العمود المستهدف واستخدام أداة “استبدال القيم” (Replace Values) لحذف النصوص غير المرغوبة عبر ترك حقل القيمة البديلة فارغاً. يتميز محرر الاستعلام بقدرته على تسجيل هذه الخطوة كإجراء تسلسلي ضمن شجرة الخطوات المطبقة (Applied Steps)، مما يعني تطبيق الإزالة ذاتها تلقائياً على أي دفعات بيانات جديدة بمجرد النقر على زر “تحديث” (Refresh).
تتيح لغة الاستعلامات M إمكانية تخصيص شرط الحذف الموضعي بدقة بالغة؛ حيث يمكن كتابة تعبيرات برمجية تفحص وجود النص الشائب بناءً على شروط منطقية مشتقة من أعمدة أخرى، مما يوفر بيئة معالجة مشروطة لا تتأثر بالأخطاء البشرية المرافقة للإجراءات اليدوية.
10.2 تنظيف السلاسل النصية بواسطة دالة Text.Remove في لغة M
تُعد دالة Text.Remove في لغة M من أقوى الأدوات وأكثرها شمولاً لتطهير النصوص البرمجية داخل Power Query. تتميز الدالة بقدرتها الفريدة على قبول قائمة كاملة من المحارف أو نطاق ترتيبي من الرموز وإزالتها دفعة واحدة من السلسلة النصية، وفق الهيكلية التالية:
Text.Remove([ColumnName], {“0”..”9″, “-“, “/”, “$”})
تسمح هذه الدالة بإنجاز عمليات تطهير شاملة يتعذر تنفيذها بالدوال التقليدية دون تداخلات مفرطة؛ مثل إزالة كافة الأرقام من أسماء العملاء بكتابة النطاق {"0".."9"}، أو إزالة كافة الحروف الأبجدية اللاتينية بكتابة {"a".."z", "A".."Z"}، أو استبعاد حزم الرموز الخاصة من خلال تمرير قائمة المحارف المحظورة.
تتمتع حلول Power Query بميزة استثنائية تتمثل في عزل عمليات التطهير الحاسوبية في ذاكرة المحرك الخلفي، مما يحافظ على خفة ورشاقة مصنف إكسيل الأساسي ويمنع البطء الناتج عن إعادة احتساب آلاف الدوال النصية عند فتح الملف أو تعديل أي قيمة فيه.
11. الأتمتة البرمجية المتقدمة عبر Visual Basic for Applications (VBA)
11.1 كتابة وحدات الماكرو (Macros) لإزالة النصوص في النطاقات المحددة
توفر بيئة Visual Basic for Applications (VBA) للمبرمجين والمحللين القدرة على بناء وحدات ماكرو سريعة لتطهير البيانات عبر النطاقات الضخمة دون ترك أي أثر لمعادلات حية قد تثقل المصنف. تعتمد التقنية الأكثر كفاءة على تحميل نطاق الخلايا بالكامل إلى مصفوفة ذاكرة (VBA Variant Array)، وتطبيق دالة الاستبدال في الذاكرة، ثم إعادة كتابة البيانات المنقاة إلى ورقة العمل دفعة واحدة.
يوضح الإجراء البرمجي التالي كيفية استئصال نص محدد عبر مصفوفات الذاكرة، متضمناً صندوق حوار تفاعلي (InputBox) يتيح للمستخدم إدخال النص المطلوب حذفه ديناميكياً:
- الإعلان عن مصفوفة البيانات والمتغيرات: يتم حجز مساحة في الذاكرة لقراءة النطاق المحدد (Selection).
- قراءة البيانات وتحليلها: يتم تكرار حلقة For…Next لمسح مصفوفة الخلايا وتطبيق دالة
Replace(CellData, TargetText, ""). - إرجاع البيانات المعالجة: تُسكب المصفوفة المنقاة مباشرة إلى النطاق الأصلي في خطوة أحادية تقلل من استهلاك المعالج بنسبة 95% مقارنة بالتعديل خلية تلو الأخرى.
يساعد إيقاف تحديث الشاشة عبر الأمر Application.ScreenUpdating = False قبل تشغيل الماكرو في تسريع معالجة ملايين السجلات لتتم في ثوانٍ معدودة، مما يجعل هذه التقنية الخيار الأفضل لإدارات تقنية المعلومات ومسؤولي قواعد البيانات الكبرى.
11.2 إنشاء دالة مخصصة (UDF) لحذف أنماط النصوص المحددة
في الحالات التي تتطلب توفير وظائف خاصة لمستخدمي المصنف لا تغطيها الدوال الافتراضية، يمكن برمجة دوال معرفة من قِبل المستخدم (User Defined Functions – UDF) باستخدام محرك التعابير النمطية VBScript.RegExp داخل محرر VBA، مما يتيح استدعاء الدالة مباشرة داخل الخلايا تماماً كأي دالة قياسية.
يتم بناء الدالة المخصصة RemovePattern لتستقبل وسيطين هما: الخلية المستهدفة والنمط النصي المراد حذفه. يقوم الكائن البرمجي الداخلي بتمشيط السلسلة وحذف كافة التطابقات بما في ذلك الأنماط المعقدة مثل استئصال جميع الرموز غير الرقمية أو تنظيف أشكال معينة من الكلمات المركبة.
تتضمن البرمجة الاحترافية للدوال المخصصة تضمين آليات متقدمة لإدارة الأخطاء (Error Handling) ومعالجة القيم الفارغة (Nulls)؛ لضمان إرجاع قيم فارغة سليمة أو رسائل توجيهية دون التسبب في انهيار شجرة الحسابات العامة لورقة العمل عند مواجهة بيانات غير متوقعة.
12. أفضل الممارسات، التحقق من الصحة، ومعالجة الأخطاء الشائعة
12.1 تقييم الكفاءة واستهلاك الموارد الحسابية في المصنفات المعقدة
يؤدي الاستخدام المكثف للدوال النصية المتداخلة عبر ملايين الصفوف إلى زيادة زمن إعادة الحساب (Calculation Time) وتضخم حجم ملف المصنف. تتأثر كفاءة المعالجة بتعقيد الدوال وشجرة التبعيات (Dependency Tree) التي يبنيها محرك إكسيل لمراقبة التغييرات الحسابية في الخلايا المترابطة.
للحفاظ على أعلى درجات الكفاءة التشغيلية، يُنصح بتطبيق مبدأ “التطهير والتحويل إلى قيم ثابتة” (Paste as Values) بمجرد الانتهاء من تدقيق البيانات والتأكد من دقة النصوص المنقاة. يؤدي التخلص من الصيغ الحسابية الحية واستبدالها بالقيم الناتجة إلى تحرير الذاكرة العشوائية وتأمين المصنف من التعليق المفاجئ عند مشاركته بين فرق العمل.
كما يُستحسن تجنب دمج الدوال المتقلبة (Volatile Functions) كدوال OFFSET و INDIRECT ضمن مسارات تطهير النصوص، واستبدالها بالدوال الفهرسية المباشرة والمصفوفات الثابتة التي لا تفرض إعادة الحساب إلا عند حدوث تعديل فعلي على الخلايا المغذية مباشرة.
12.2 الأخطاء الشائعة أثناء إزالة النصوص وكيفية تفاديها
يقع كثير من المحللين في فخ إزالة أجزاء نصية حيوية غير مقصودة نتيجة غياب الحدود الفاصلة للكلمات (Word Boundaries)؛ فعلى سبيل المثال، يؤدي طلب إزالة الحرف “م” بشكل مجرد إلى تشويه كافة الكلمات التي تتضمن هذا الحرف كعنصر هجائي أساسي بدلاً من استئصاله كبادئة مستقلة. لتفادي هذا الخطأ، يجب دائماً تضمين المسافات الفاصلة أو علامات الترقيم المحيطة بالنص المستهدف كجزء من وسيط old_text (مثل " م " أو " - ").
تتمثل المشكلة الشائعة الأخرى في تحول الأرقام إلى نصوص أو العكس بعد إزالة الرموز الحسابية أو الفواصل. عند إزالة محارف العملة لتجهيز العمود للجمع، قد تظل الخلية في حالة “نصية” تمنع دالة SUM من قراءتها. يتم حل هذه المعضلة بتغليف صيغة الإزالة بدالة VALUE أو إجراء عملية رياضية حيادية مثل إضافة صفر (+0) أو الضرب في واحد (*1) لإجبار إكسيل على إعادة تقييم السلسلة كقيمة عددية قياسية.
أخيراً، تقتضي معايير الجودة استخدام دوال التحقق المرجعي مثل ISNUMBER و ISTEXT ودالة LEN لفحص أطوال النصوص قبل وبعد التطهير والتأكد من مطابقة النتائج للمواصفات القياسية المعتمدة قبل ترحيلها إلى التقارير النهائية.
خاتمة
تُشكل مهارة إزالة النصوص المحددة من الخلايا في إكسيل حجر الزاوية في بناء تدفقات بيانات مؤسسية عالية الاعتمادية والدقة. لقد تدرجت هذه العملية من مجرد استبدال يدوي بسيط عبر واجهات الأوامر إلى منظومة هندسية متكاملة تشتمل على الدوال الصارمة مثل SUBSTITUTE و REPLACE، والدوال الديناميكية الحديثة لبيئة Microsoft 365 كالتعابير النمطية REGEXREPLACE و LAMBDA التكرارية، فضلاً عن حلول الأتمتة المتقدمة في Power Query والبرمجة النصية عبر VBA.
إن الاختيار الرشيد للأداة المناسبة يتوقف على حجم البيانات، وطبيعة الشوائب النصية، ومدى الحاجة إلى أتمتة العملية وتكرارها مستقبلاً. ومن خلال تبني أفضل الممارسات في التدقيق المسبق، وإدارة الذاكرة الحسابية، وتنسيق الصيغ المعقدة، يضمن محلل البيانات تحويل السجلات الخام المشوشة إلى أصول معلوماتية نقية تعزز من دقة القرارات الاستراتيجية وترتقي بكفاءة الأداء التشغيلي في بيئات الأعمال المعاصرة.
المراجع
- Alexander, M., Kusleika, R., & Walkenbach, J. (2019). Excel 2019 Bible. John Wiley & Sons.
- Microsoft Corporation. (2024). SUBSTITUTE function. Microsoft Support. https://support.microsoft.com/en-us/office/substitute-function-6434944e-a904-4336-a9b0-1e58df3bc332
- Microsoft Corporation. (2024). REGEXREPLACE function. Microsoft Support. https://support.microsoft.com/en-us/office/regexreplace-function-9c030bb2-5e47-4efc-bad5-45e80ebf6bd9
- Microsoft Corporation. (2024). Power Query documentation. Microsoft Learn. https://learn.microsoft.com/en-us/power-query/
- Walkenbach, J. (2015). Excel VBA Programming For Dummies (4th ed.). John Wiley & Sons.
- Winston, W. (2021). Microsoft Excel Data Analysis and Business Modeling (Office 2021 and Microsoft 365) (7th ed.). Microsoft Press.