الاستاذ مجدى
برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: 613623
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: 829894
ادارة المنتدي برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: 103798

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Uoou_u10


الاستاذ مجدى
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةالأستاذ التعليمأحدث الصورضع التسجيلدخولالتسجيل
سبحانك لا علم لنا إلا ما علمتنا أنك أنت العليم
عزيزى الزائر قم بالتسجيل بالمنتدى لمشاهدة باقى الاقسام المهمه
مع تحيات مجدى عبد المنعم محمود يونس ببورسعيد " مدير المنتدى "
أهلا بك من جديد يا زائر آخر زيارة لك كانت في الخميس يناير 01, 1970
آخر عضو مسجل Heliany فمرحبا به


 

 برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2:

اذهب الى الأسفل 
2 مشترك
كاتب الموضوعرسالة
مجدى يونس
Admin
مجدى يونس


عدد المساهمات : 3773
تاريخ التسجيل : 22/02/2013
العمر : 69

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Empty
مُساهمةموضوع: برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2:   برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Avatarالإثنين ديسمبر 02, 2013 2:42 pm

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2:
لنقاط الأساسية

مقدمة
ما المقصود بتابع يعيد أكثر من قيمة؟
مثال فيديو يوضح استخدام توابع تعيد أكثر من قيمة (حل مجموعة معادلات خطية)
كتابة تابع يعيد أكثر من قيمة
خاتمة

مقدمة

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

قبل البدء ولفهم النقطة سأشير إلى بعض توابع إكسل الأصلية.

التابع Sin: هو تابع يعيد جيب الزاوية، عدد المدخلات 1، ويعيد قيمة واحدة فقط.

التابع Max: عدد المدخلات (غير محدد)، ويعيد قيمة واحدة فقط هي الأكبر بين هذه المدخلات.

بعض التوابع تعيد مصفوفة بدلاً من قيمة واحدة فمثلاً:

التابع Transpose: عدد المدخلات (1) ولكنه من النوع Array أي مصفوفة، ويعيد أيضاً مصفوفة هي منقول تلك المصفوفة.

إن التعامل مع التوابع التي تعيد مصفوفات يختلف قليلاً عن التعامل مع التوابع التي تعيد قيمة واحدة فقط.

فمثلاً لإدخال التابع Sin نكتب في إحدى الخلايا:

=Sin(A1)

ثم نضغط Enter فيتبدل محتوى الخلية إلى قيمة جيب الزاوية التي قيمتها هي القيمة الموجودة في الخلية A1 بالراديان.

لكن إذا أردنا أن نقوم بحساب منقول مصفوفة ولتكن محصورة في المجال A1:D2 وأردنا أن نضع هذا المنقول في المجال A4:B7 نقوم بما يلي:

نختار المجال الهدف A4:B7 ثم نكتب في إحدى الخلايا العبارة التالية:

=TRANSPOSE(A1:D2)

حيث A1:D2 في العلاقة هو المجال الذي يعبر عن دخل التابع Transpose وهو المصفوفة التي نريد إيجاد منقولها، وهو مبين في الشكل (5-1).

ثم نضغط Ctrl+Shift+Enter فنحصل على المنقول كما هو موضح في اللوحات التالية:

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Figure05-01

الشكل (5-1): اختيار المجال الهدف وكتابة المعادلة في الخلية الأولى منه

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Figure05-02

الشكل (5-2): بعد الضغط على Ctrl+Shift+Enter نكون قد أدخلنا التابع بشكل صحيح

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

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

من المعلوم أن جملة معادلات خطية تكتب بشكل مصفوفي بالشكل التالي:

A.x=b

حيث A هي مصفوفة الأمثال، و b هو شعاع الطرف الثاني، و x هو شعاع المجاهيل.

إن حل المعادلة السابقة جبرياً هو بالشكل:

x=A-1.b

وتوابع إكسل المستخدمة هي:

MMULT: وهذا التابع يعيد جداء مصفوفتين، هما في حالتنا مقلوب المصفوفة A والشعاع b.

MINVERSE: وهذا التابع يعيد مقلوب مصفوفة ما، وفي حالتنا هي المصفوفة A.

والمعادلة في إكسل تكتب بالشكل التالي:

=MMULT(MINVERSE(matrix_A);matrix_b)

حيث أن matrix_A هو المجال الذي سنخزن فيه المصفوفة A، أما matrix_b فهو المجال الذي سنخزن فيه شعاع الطرف الثاني، والفيديو التالي يوضح كل العملية.

فيديو: طريقة حل عدة معادلات بعدة مجاهيل، قد تحتاج إلى تثبيت مشغل فلاش Adobe Flash Player
كتابة تابع يعيد أكثر من قيمة

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

افتح بيئة برمجة VBA وأضف وحدة برمجية جديدة إن لم يكن يوجد واحدة، وذلك كما تعلمت في الدروس السابقة.

نعرف التابع كما يلي:

Public Function ReturnTwoValues(A As Single, B As Single) As Single()

End Function

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

نضيف بين السطرين السابقين ما يلي:

Dim result(1, 0) As Single
result(0, 0) = A + B
result(1, 0) = A * B
ReturnTwoValues = result

قمنا بتعريف مصفوفة اسمها result مكونة من سطرين (أرقامهما 0 و 1) وعمود واحد (رقمه 0)

لاحظ أن ترقيم الأسطر والأعمدة يبدأ بصفر.

ثم قمنا بحساب A+B وتخزينه في السطر الأول من العمود الأول من المصفوفة، ثم حساب A*B وتخزينه في السطر الثاني من العمود الأول.

ثم أسندنا هذه المصفوفة result إلى التابع.

ملاحظة: لتعريف مصفوفة أعداد حقيقية مكونة من 4 أسطر وعمودين نستخدم الأمر:

Dim A(3,1) As Single

التابع كاملاً:

Public Function ReturnTwoValues(A As Single, B As Single) As Single()
Dim result(1, 0) As Single
result(0, 0) = A + B
result(1, 0) = A * B
ReturnTwoValues = result
End Function

لاستخدام هذا التابع، لنفرض أن القيمتين A و B موجودتان في الخليتين A1 و B1 كما هو موضح في الشكل:

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Figure05-03

الشكل (5-3): توضيح المثال

ونريد أن نحسب جمعهما وضربهما باستخدام التابع السابق ووضع النتيجة في المجال A3:A4

نختار المجال A3:A4 ثم نكتب المعادلة التالية كما هو موضح في الشكل السابق:

=ReturnTwoValues(A1;B1)

ثم نضغط Ctrl+Shift+Enter فنحصل على النتيجة المبينة في الشكل التالي:

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Figure05-04

الشكل (5-4): النتيجة المطلوبة

قم بتغيير القيم السابقة في الخليتين A1 و B1 ولاحظ تغير النتيجة.

أرجو أن تكون هذه النقطة واضحة.
خاتمة

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

http://www.jwdstructure.com/downloads/vba/excel-lesson05.zip

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://magdi54.forumegypt.net
bnnami




عدد المساهمات : 79
تاريخ التسجيل : 01/08/2022

برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Empty
مُساهمةموضوع: رد: برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2:   برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2: Avatarالسبت أغسطس 13, 2022 6:46 am

مميز ياخي العزيز شكرا تقبل تحياتي
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
برمجة إكسل - الدرس الخامس - إضافة تابع مخصص 2:
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» برمجة إكسل - الدرس الرابع - إضافة تابع مخصص 1:
» تطبيقات برمجة إكسل - التطبيق الأول - إضافة تابع حساب تسليح مقطع 1:
» تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 2:
» برمجة إكسل - الدرس الثالث - التعرف على بيئة برمجة VBA:
» برمجة إكسل - الدرس الأول - ما هي لغة VBA؟

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
الاستاذ مجدى :: قسم مجموعة الاوفيس :: قسم الاكسل-
انتقل الى: