كيفية إنشاء نطاق مسمى ديناميكي في Excel؟
عادةً، تكون النطاقات المسماة (Named Ranges) مفيدة جدًا لمستخدمي Excel. يمكنك تعريف سلسلة من القيم في عمود، وتسمية هذا العمود، ثم يمكنك الإشارة إلى هذا النطاق باستخدام الاسم بدلاً من مراجع الخلايا. لكن في معظم الأحيان، تحتاج إلى إضافة بيانات جديدة لتوسيع قيم البيانات للنطاق المشار إليه في المستقبل. في هذه الحالة، عليك العودة إلى الصيغ (Formulas) > مدير الأسماء (Name Manager) وإعادة تعريف النطاق ليشمل القيمة الجديدة. لتجنب ذلك، يمكنك إنشاء نطاق مسمى ديناميكي مما يعني أنك لا تحتاج إلى ضبط مراجع الخلايا كلما أضفت صفًا أو عمودًا جديدًا إلى القائمة.
إنشاء نطاق مسمى ديناميكي في Excel عن طريق إنشاء جدول
إنشاء نطاق مسمى ديناميكي في Excel باستخدام الدالة
إنشاء نطاق مسمى ديناميكي في Excel باستخدام كود VBA
إنشاء نطاق مسمى ديناميكي في Excel عن طريق إنشاء جدول
إذا كنت تستخدم Excel 2007 أو الإصدارات الأحدث، فإن أسهل طريقة لإنشاء نطاق مسمى ديناميكي هي إنشاء جدول Excel مسمى.
لنفترض أن لديك نطاقًا من البيانات التالية التي تحتاج لأن تصبح نطاقًا مسمى ديناميكيًا.
1. أولًا، سأقوم بتعريف أسماء النطاقات لهذا النطاق. حدد النطاق A1:A6 وأدخل الاسم Date في مربع الاسم، ثم اضغط على مفتاح Enter. لتحديد اسم للنطاق B1:B6 باسم Saleprice بنفس الطريقة. وفي الوقت نفسه، أنشئ صيغة =sum(Saleprice) في خلية فارغة، انظر إلى لقطة الشاشة:
2. حدد النطاق وانقر فوق إدراج (Insert) > جدول (Table)، انظر إلى لقطة الشاشة:
3. في مربع الحوار إنشاء جدول (Create Table)، تحقق من أن الجدول يحتوي على عناوين (My table has headers) (إذا لم يكن للنطاق عناوين، قم بإلغاء التحديد)، انقر فوق زر موافق (OK)، وسيتم تحويل بيانات النطاق إلى جدول. انظر إلى لقطات الشاشة:
![]() | ![]() | ![]() |
4. وعندما تقوم بإدخال قيم جديدة بعد البيانات، سيتم ضبط النطاق المسمى تلقائيًا وسيتم أيضًا تغيير الصيغة التي تم إنشاؤها. انظر إلى لقطات الشاشة التالية:
![]() | ![]() | ![]() |
ملاحظات:
1. يجب أن تكون بياناتك الجديدة المحاذية للبيانات السابقة، مما يعني أنه لا يوجد صفوف أو أعمدة فارغة بين البيانات الجديدة والبيانات الموجودة.
2. في الجدول، يمكنك إدخال بيانات بين القيم الموجودة.
إنشاء نطاق مسمى ديناميكي في Excel باستخدام الدالة
في Excel 2003 أو الإصدارات السابقة، لن تكون الطريقة الأولى متاحة، لذلك إليك طريقة أخرى لك. يمكن للدالة OFFSET( ) التالية القيام بذلك نيابة عنك، ولكنها معقدة بعض الشيء. لنفترض أن لدي نطاقًا من البيانات الذي يحتوي على أسماء النطاقات التي قمت بتحديدها، على سبيل المثال، A1:A6 اسم النطاق هو Date، واسم النطاق B1:B6 هو Saleprice، وفي نفس الوقت، أنشأت صيغة لـ Saleprice. انظر إلى لقطة الشاشة:
يمكنك تغيير أسماء النطاقات إلى نطاقات مسماة ديناميكية بالخطوات التالية:
1. انتقل إلى النقر فوق الصيغ (Formulas) > مدير الأسماء (Name Manager)، انظر إلى لقطة الشاشة:
2. في مربع الحوار مدير الأسماء (Name Manager)، حدد العنصر الذي تريد استخدامه، وانقر فوق زر تحرير (Edit).
3. في مربع الحوار تحرير الاسم (Edit Name) المنبثق، أدخل هذه الصيغة =OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1) في مربع النص يشير إلى (Refers to)، انظر إلى لقطة الشاشة:
4. ثم انقر فوق موافق (OK)، وبعد ذلك كرر الخطوة 2 والخطوة 3 لنسخ هذه الصيغة =OFFSET(Sheet1!$B$1, 0, 0, COUNTA($B:$B), 1) في مربع النص يشير إلى (Refers to) لاسم النطاق Saleprice.
5. وقد تم إنشاء النطاقات المسماة الديناميكية. عندما تقوم بإدخال قيم جديدة بعد البيانات، سيتم ضبط النطاق المسمى تلقائيًا وسيتم أيضًا تغيير الصيغة التي تم إنشاؤها. انظر إلى لقطات الشاشة:
![]() | ![]() | ![]() |
ملاحظة: إذا كانت هناك خلايا فارغة في منتصف النطاق الخاص بك، ستكون نتيجة صيغتك خاطئة. وذلك لأن الخلايا غير الفارغة لا يتم احتسابها، وبالتالي سيكون نطاقك أقصر مما ينبغي، وسيتم استبعاد آخر الخلايا في النطاق.
تلميح: شرح لهذه الصيغة:
- =OFFSET(المرجع, الصفوف, الأعمدة, [الارتفاع], [العرض])
- =OFFSET(Sheet1!$A$1, 0, 0, COUNTA($A:$A), 1)
- المرجع يشير إلى موقع الخلية الابتدائية، في هذا المثال Sheet1!$A$1؛
- الصف يشير إلى عدد الصفوف التي ستنقلها لأسفل، بالنسبة إلى الخلية الابتدائية (أو لأعلى إذا استخدمت قيمة سالبة)، في هذا المثال، 0 يشير إلى أن القائمة ستبدأ من الصف الأول.
- العمود يشير إلى عدد الأعمدة التي ستنقلها لليمين، بالنسبة إلى الخلية الابتدائية (أو لليسار باستخدام قيمة سالبة)، في صيغة المثال أعلاه، 0 يشير إلى توسيع 0 أعمدة لليمين.
- [الارتفاع] يشير إلى الارتفاع (أو عدد الصفوف) للنطاق بدءًا من الموقع المعدل. $A:$A، سيحسب جميع العناصر المدخلة في العمود A.
- [العرض] يشير إلى العرض (أو عدد الأعمدة) للنطاق بدءًا من الموقع المعدل. في الصيغة أعلاه، ستكون القائمة بعرض عمود واحد.
يمكنك تغيير هذه الوسائط حسب حاجتك.
إنشاء نطاق مسمى ديناميكي في Excel باستخدام كود VBA
إذا كان لديك عدة أعمدة، يمكنك تكرار وإدخال صيغة فردية لكل الأعمدة المتبقية، لكن ذلك سيكون عملية طويلة ومكررة. لتسهيل الأمور، يمكنك استخدام كود لإنشاء النطاق المسمى الديناميكي تلقائيًا.
1. قم بتفعيل ورقة العمل الخاصة بك.
2. اضغط باستمرار على مفاتيح ALT + F11، وستفتح نافذة Microsoft Visual Basic for Applications.
3. انقر فوق إدراج (Insert) > وحدة (Module)، والصق الكود التالي في نافذة الوحدة.
كود VBA: إنشاء نطاق مسمى ديناميكي
Sub CreateNamesxx()
'Update 20131128
Dim wb As Workbook, ws As Worksheet
Dim lrow As Long, lcol As Long, i As Long
Dim myName As String, Start As String
Const Rowno = 1
Const Colno = 1
Const Offset = 1
On Error Resume Next
Set wb = ActiveWorkbook
Set ws = ActiveSheet
lcol = ws.Cells(Rowno, 1).End(xlToRight).Column
lrow = ws.Cells(Rows.Count, Colno).End(xlUp).Row
Start = Cells(Rowno, Colno).Address
wb.Names.Add Name:="lcol", RefersTo:="=COUNTA($" & Rowno & ":$" & Rowno & ")"
wb.Names.Add Name:="lrow", RefersToR1C1:="=COUNTA(C" & Colno & ")"
wb.Names.Add Name:="myData", RefersTo:="=" & Start & ":INDEX($1:$65536," & "lrow," & "Lcol)"
For i = Colno To lcol
myName = Replace(Cells(Rowno, i).Value, " ", "_")
If myName <> "" Then
wb.Names.Add Name:=myName, RefersToR1C1:="=R" & Rowno + Offset & "C" & i & ":INDEX(C" & i & ",lrow)"
End If
Next
End Sub
4. ثم اضغط على مفتاح F5 لتشغيل الكود، وسيتم إنشاء بعض النطاقات المسماة الديناميكية والتي تم تسميتها باستخدام قيم الصف الأول كما يقوم بإنشاء نطاق ديناميكي يدعى MyData والذي يغطي جميع البيانات.
5. عند إدخال قيم جديدة بعد الصفوف أو الأعمدة، سيتم توسيع النطاق أيضًا. انظر إلى لقطات الشاشة:
![]() |
![]() |
![]() |
ملاحظات:
1. باستخدام هذا الكود، أسماء النطاقات لا تظهر في مربع الاسم (Name Box)، ولعرض واستخدام أسماء النطاقات بسهولة، قمت بتثبيت Kutools لـ Excel، ومع لوحة التنقل (Navigation Pane)، يتم سرد أسماء النطاقات الديناميكية التي تم إنشاؤها.
2. باستخدام هذا الكود، يمكن توسيع نطاق البيانات بالكامل عموديًا أو أفقيًا، ولكن تذكر أنه لا ينبغي وجود صفوف أو أعمدة فارغة بين البيانات عند إدخال قيم جديدة.
3. عند استخدام هذا الكود، يجب أن يبدأ نطاق بياناتك من الخلية A1.
المقالة ذات الصلة:
كيفية تحديث الرسم البياني تلقائيًا بعد إدخال بيانات جديدة في Excel؟
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!