اذهب الي المحتوي
أوفيسنا

صياغة المعادلة في محرر الأكواد


الردود الموصى بها

صباح الخير للناس الغالية

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

 

وتقبلوا تحياتي

 

محرر كود المعادلات.rar

  • Like 4
رابط هذا التعليق
شارك

السلام عليكم بارك الله بك سيد الزباري وجعلها في ميزان حسناتك

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

رابط هذا التعليق
شارك

بارك الله فيك أخي الحبيب الزباري وجزيت خيراً على الموضوع الرائع والممتع

 

الفكرة جميلة ولكنها تحتاج لتطوير بالفعل ..

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

Sub TestRun()
    [c1].Formula = "=IFERROR(VLOOKUP(M2,$M$2:$N$7,2,0),"")"
End Sub

ستظهر رسالة خطأ بهذا الشكل

Untitled.png.426fb287c362f3d9040c8192f56

وسبب الخطأ هو أن علامات التنصيص يجب أن توضع بين علامتي تنصيص أخرى

يجب أن تكون هكذا

Sub TestRun()
    [c1].Formula = "=IFERROR(VLOOKUP(M2,$M$2:$N$7,2,0),"""")"
End Sub

*************

خطرت لي فكرة وهي استبدال التصيص بعلامتي تنصيص في المعادلة لكي تعمل بشكل جيد الدالة المعرفة

والاعتماد على أن تكون الدالة مطاطية بحيث تقدر تنسخ أي معادلة من أي خلية بالاعتماد على عنوان الخلية الهدف

الدالة بعد التعديل كالتالي

Function DisplayFormula(cel As Range)
    Dim str As String
    
    str = Replace(cel.Formula, """", """""")
    DisplayFormula = "[" & cel.Address(0, 0) & "].Formula=" & """" & str & """"
End Function

الآن سيظهر السطر الخاص بالمعادلة جاهز للعمل ويمكنك نسخه لمحرر الأكواد واستخدامه بكل سهولة

تقبل تحياتي

 

  • Like 4
رابط هذا التعليق
شارك

أخي الكريم

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

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

* يرجى عدم استخدام الاقتباسات إلا للضرورة

تقبل تحياتي

رابط هذا التعليق
شارك

أخي الكريم أحمد

التطوير لا يأتي من فراغ ..إنما الحاجة أم الاختراع ..

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

الدالة بداية جيدة لمن يريد تحويل المعادلات إلى أكواد ..

تقبل تحياتي

  • Like 1
رابط هذا التعليق
شارك

أخي الكريم ناصر سعيد ..

------------------------------

للعلم أنه ليس كود يتم تنفيذه إنما دالة معرفة تؤدي غرض معين .. الدالة المعرفة يتم استخدامها في الإكسيل كالدوال العادية التي تستخدمها

Function DisplayFormula(cel As Range)
    Dim str As String
    
    str = Replace(cel.Formula, """", """""")
    DisplayFormula = "[" & cel.Address(0, 0) & "].Formula=" & """" & str & """"
End Function

هذه هي شكل الدالة المعرفة وتوضع في موديول عادي مثلها مثل الأكواد العادية .. ويمكن استخدامها في ورقة العمل بشكل مباشر بعد ذلك

مثال : ضع القيمة 10 في الخلية A1 وضع القيمة 15 في الخلية A2 واكتب المعادلة التالية في الخلية A3 لجمع الخليتين

=SUM(A1:A2)

الآن في أي خلية وليكن الخلية E10 ضع المعادلة التالية التي سنستخدم فيها الدالة المعرفة

=DisplayFormula(A3)

ناتج المعادلة الخاصة بالدالة المعرفة سيكون كالتالي

[A3].Formula="=SUM(A1:A2)"

وهذا هو مربط الفرس أنه بهذا السطر أصبحت قادراً على أن تأخذ المعادلة بهذا الشكل وتنفذها من خلال محرر الأكواد في كود آخر .. أي أن الدالة المعرفة DisplayFormula تقوم بإظهار شكل السطر المطلوب لتنفيذ المعادلة في الأكواد ..

يمكنك نسخ هذا السطر على سبيل المثال في كود آخر بهذا الشكل (قم بنسخ الكود التالي)

Sub TestRun()
    [A3].Formula = "=SUM(A1:A2)"
End Sub

الآن قم بمسح محتويات الخلية A3 التي تحتوي على معادلة بالفعل وقم بتنفيذ الإجراء الفرعي الذي قمت بوضعه في محرر الأكواد والمسمى TestRun ..(اضغط Alt + F8) من لوحة المفاتيح وأنت في ورقة العمل لتظهر لك الأكواد .. اختر الكود المسمى TestRun ولاحظ الخلية A3 ... ستجد أن الكود يقوم بوضع المعادلة في الخلية A3 بهذا السطر ..

أرجو أن أكون وفقت في توصيل المعلومة

(يا ريت بقا تغير اسم الظهور للغة العربية وإلا هعتبر دا خصاااااااام ومش هرد عليك تاني :yes:)

تقبل تحياتي

  • Like 1
رابط هذا التعليق
شارك

شكرا شكرا لردك اخي الكريم ياسر

هل لو غيرت اسم الظهور الى العربيه على سبيل المثال هيتم تغيير اسم المستخدم عند دخولي المنتدى يعني اكتب اسم الدخول ناصر سعيد بالعربي

ثانيا

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

رابط هذا التعليق
شارك

أخي الكريم سعيد ناصر

نعم اسم الظهور مرتبط باسم الدخول .. ستكتب "سعيد ناصر" في أثناء الدخول على الموقع

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

رابط هذا التعليق
شارك

أخي الحبيب أنت صاحب الفضل بعد الله عزوجل في هذا الموضوع المتميز ...

وإن شاء الله نتابع الموضوع سوياً بحيث نطور الدالة ، كلما استجد أمر ما

تقبل تحياتي

رابط هذا التعليق
شارك

لو أردت أن تطبق المعادلة لأكثر من خلية مثلا [a3:a10] فقط تضيف على الكود هذا السطر

[a3:a10].FillDown

  • Like 2
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information