recent
اخر الاخبار

ترقيم متطور في Excel — تحديث تلقائي لكل مجموعة حسب النوع

التقنيه للبرامج
الصفحة الرئيسية

ترقيم تلقائي ذكي في Excel — عد وتحديث تلقائي حسب النوع (Type) بدون فرز أو إعادة ترتيب يدوية

مقدمة

سنتعلم في هذا المقال كيفية عمل ترقيم تلقائي في Excel حسب النوع (Type) دون الحاجة لإعادة الترتيب أو الفرز اليدوي. ستتمكن من إنشاء ترقيم متسلسل لكل نوع تلقائيًا، وسيتم تحديث الأرقام تلقائيًا عند إضافة بيانات جديدة أو تعديل أي صف.

لماذا تحتاج للترقيم التلقائي حسب النوع؟

الترقيم اليدوي يسبب أخطاء عند إضافة أو حذف صفوف، أو عند تغيير نوع عنصر معين. الترقيم التلقائي يعتمد على العمود الخاص بالنوع (Type)، ويعيد الحساب تلقائيًا، مما يوفر الوقت ويزيد الدقة.

الطريقة 1 — صيغة بسيطة باستخدام COUNTIFS

إذا كان لديك الأعمدة: A = Item، B = Type، ضع هذه الصيغة في C2 واسحب للأسفل:

=IF($B2="","",COUNTIFS($B$2:$B2,$B2))

الصيغة تحسب عدد مرات ظهور النوع حتى الصف الحالي، وبالتالي كل نوع يأخذ ترقيمًا مستقلًا ومتسلسلًا.

الطريقة 2 — صيغة لا تتأثر بالترتيب أو الفرز

للحصول على ترقيم يبقى صحيحًا عند الفرز أو التصفية:

=IF($B2="","",SUMPRODUCT(($B$2:$B$1000=$B2)*($A$2:$A$1000<=$A2)))

يستخدم SUMPRODUCT لتحديد عدد السطور التي لها نفس النوع ومعرّف ≤ الصف الحالي.

الطريقة 3 — Excel 365 / Excel 2021 باستخدام الدوال الديناميكية

باستخدام UNIQUE وFILTER وSEQUENCE يمكنك إنشاء جدول مُرقّم لكل نوع تلقائيًا:

=LET(
 types, UNIQUE(B2:B1000),
 result, BYROW(types, LAMBDA(t,
   LET(
     rows, FILTER(A2:C1000, B2:B1000=t),
     nums, SEQUENCE(ROWS(rows)),
     HSTACK(nums, rows)
   )
 )),
 VSTACK(result)
)

الطريقة 4 — حل VBA لتحديث تلقائي عند أي تعديل

استخدم هذا الماكرو لتحديث الترقيم تلقائيًا لكل نوع عند أي تغيير في الجدول:

Sub AutoNumberByType()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dict As Object
    Dim i As Long
    Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    Set dict = CreateObject("Scripting.Dictionary")
    For i = 2 To lastRow
        If Trim(ws.Cells(i, "B").Value) <> "" Then
            t = ws.Cells(i, "B").Value
            If Not dict.exists(t) Then
                dict.Add t, 1
            Else
                dict(t) = dict(t) + 1
            End If
            ws.Cells(i, "C").Value = dict(t)
        Else
            ws.Cells(i, "C").Value = ""
        End If
    Next i
End Sub

نصائح تطبيقية

  • استخدم Table (Ctrl+T) لتطبيق الصيغ على الصفوف الجديدة تلقائيًا.
  • احتفظ بعمود ID ثابت عند الحاجة لترقيم مستقل عن الفرز.
  • جرب الحلول على نسخة من الملف قبل التطبيق الفعلي.
  • إذا تعمل على ملف مشترك، الأفضل استخدام الصيغة دون ماكروز لتجنب مشاكل الأمان.

خاتمة

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

اعلان رسائل المدونة

google-playkhamsatmostaqltradent