Skip to main content

كيفية ترقيم الصفوف تلقائيًا إذا كانت الخلية المجاورة غير فارغة في Excel؟

Author: Xiaoyang Last Modified: 2025-08-06
autonumber rows if adjacent cell not blank

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

ترقيم الصفوف تلقائيًا إذا كانت الخلية المجاورة غير فارغة باستخدام صيغة

ترقيم الصفوف تلقائيًا إذا كانت الخلية المجاورة غير فارغة باستخدام كود VBA


arrow blue right bubble ترقيم الصفوف تلقائيًا إذا كانت الخلية المجاورة غير فارغة باستخدام صيغة

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

1. حدد الخلية التي تريد أن يبدأ بها الترقيم (على سبيل المثال، A2 إذا بدأت بياناتك في B2). أدخل الصيغة التالية:

=IF(B2<>"",COUNTA($B$2:B2),"")
نصيحة: تتحقق هذه الصيغة مما إذا كانت الخلية B2 ليست فارغة. إذا كان هناك بيانات في B2، فإنها تحسب جميع الخلايا غير الفارغة من B2 وحتى الصف الحالي، مما ينشئ تسلسلًا مستمرًا للصفوف التي تحتوي على قيم. إذا كانت B2 فارغة، تعيد الصيغة خلية فارغة، مما يجعل الخلية في التسلسل فارغة.

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

autonumber if not blank with formula

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

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


arrow blue right bubble ترقيم الصفوف تلقائيًا إذا كانت الخلية المجاورة غير فارغة باستخدام كود VBA

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

1. اضغط على Alt + F11 لفتح نافذة محرر Visual Basic for Applications. في مستكشف المشروع، حدد دفتر العمل الخاص بك، ثم انقر نقرًا مزدوجًا على ورقة العمل ذات الصلة (مثل "Sheet1") ضمن "Microsoft Excel Objects".

2. في نافذة الكود التي تظهر، قم بلصق الكود التالي. يفترض هذا المثال أنك تريد ترقيم الصفوف في العمود A بناءً على ما إذا كان العمود B ليس فارغًا؛ يمكنك تعديل المراجع الخاصة بالنطاق الذي تحتاج إليه إذا لزم الأمر:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim chk As Range
    Set chk = Intersect(Target, Me.Columns("B"))
    If chk Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
    Call RenumberNonBlank(Me, "B", "A", 2)
    Application.EnableEvents = True
End Sub
Sub RenumberNonBlank(ws As Worksheet, _
                    keyCol As String, _
                    numCol As String, _
                    firstDataRow As Long)
    Dim lastRow As Long
    Dim r As Long
    Dim seq As Long
    lastRow = ws.Cells(ws.Rows.Count, keyCol).End(xlUp).Row
    seq = 1
    For r = firstDataRow To lastRow
        With ws
            If Trim(.Cells(r, keyCol).Value) <> "" Then
                .Cells(r, numCol).Value = seq
                seq = seq + 1
            Else
                .Cells(r, numCol).ClearContents
            End If
        End With
    Next r
End Sub

3. احفظ وأغلق محرر VBA. الآن، كلما قمت بإضافة أو تعديل أو مسح محتوى في العمود B، سيتم إعادة ترقيم العمود A فورًا، مما يعكس وجود (أو غياب) البيانات. سيتحرك التسلسل لأعلى أو لأسفل أثناء إضافة أو حذف الإدخالات في العمود B.

ملاحظات واحتياطات: يجب وضع هذا الماكرو تحديدًا في نافذة كود ورقة العمل المرغوبة (وليس في وحدة أو ThisWorkbook) ليكون قادرًا على الاستجابة لتحرير الخلايا. أيضًا، تأكد من تمكين الماكرو في إعدادات Excel الخاصة بك لكي يعمل الكود. إذا تغير "نطاق البيانات" إلى أعمدة أخرى غير A و B، قم بتحديث Set chk = Intersect(Target, Me.Columns("B")) و Call RenumberNonBlank(Me, "B", "A", 2) المراجع وفقًا لذلك.

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


أفضل أدوات زيادة الإنتاجية لمجموعة Office

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات بفضل: التنفيذ الذكي|توليد الشيفرة|إنشاء الصيغ المخصصة|تحليل البيانات وتوليد الرسوم البيانية|استدعاء الوظائف المحسنة
الميزات الشائعة: إيجاد أو تمييز أو وضع علامة على المكررات|حذف الصفوف الفارغة|دمج الأعمدة أو الخلايا دون فقدان البيانات|تقريب...
بحث متقدم: بحث V بمعايير متعددة|بحث V بقيم متعددة|بحث في عدة ورقات|مطابقة غامضة ....
قائمة منسدلة متقدمة: أنشئ قائمة منسدلة بسرعة|قائمة منسدلة معتمدة|قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد معين من الأعمدة |نقل الأعمدة |تغيير حالة إظهار/إخفاء الأعمدة المخفية| مقارنة النطاقات و الأعمدة ...
ميزات مميزة: التركيز على الشبكة|عرض التصميم|شريط الصيغ المحسن|إدارة أدوات المصنف وورقة العمل|مكتبة النص التلقائي (Auto Text)|منتقي التاريخ|دمج البيانات |تشفير/فك تشفير الخلايا|إرسال البريد الإلكتروني حسب القائمة|مرشح متقدم|تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض أو مائل أو يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ... )|أكثر من50 نوعاً من الرسوم البيانية (مخطط جانت، ...)|أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...)|19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ... )|12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...)|7 أدوات دمج و تقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...)|... والمزيد
استخدم Kutools بلغتك المفضلة – يدعم الإنجليزية، الإسبانية، الألمانية، الفرنسية، الصينية، وأكثر من40 لغة أخرى!

عزز مهاراتك في Excel مع Kutools لـ Excel، وتمتع بكفاءة غير مسبوقة. يقدم Kutools لـ Excel أكثر من300 ميزة متقدمة لتعزيز الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يجلب تجربة التبويبات إلى Office، ويجعل عملك أسهل بكثير

  • فعّل تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint
  • افتح وأنشئ مستندات متعددة في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ جديدة.
  • يمنحك زيادة إنتاجية تصل إلى50% ويوفر عليك مئات النقرات يومياً!