Skip to main content

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

Author: Xiaoyang Last Modified: 2025-07-21
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). بالنسبة للأخطاء غير المتوقعة، قم بمراجعة أنه لم يتم تعديل هيكل ورقة العمل لديك، مثل الخلايا المدمجة أو البيانات الموجودة في صفوف العنوان.


أفضل أدوات الإنتاجية لمكتب العمل

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

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


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

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