السلام عليكم ورحمة الله وبركاته
سأل سائل بسؤال قد سُئِل قائلاً {أن عنده نص وليكن كالتالى}
CODE
A(10)B(5.45)C(.05)<br />
ويريد أن يستخدم دالة جمع تكن نتيجتها مجموع الأرقام داخل تلك الأقواس () بالنص أعلاه
وهنا أيها السادة الكرام السائل يريد لسؤاله المسئول جواباً صريحاً يجيب السؤال الذى سأله أعلاه فأجبت بجواباً متواضعاً لسؤاله المسئول
(أى كلام وكنافه بالمانجا)
المهم والمفيد برمجت دالة اسميتها SumIn واليكم بكود الدالة أدناه
CODE
Function SumIn(area, Optional b$ = "()") As Double
'Developer: Eslam Abdullah
Dim a$, ar, nm: With CreateObject("VBScript.RegExp")
a = Mid(b, 1, 1): b = Mid(b, 2, 1)
a = IIf(InStr("(){}[]^$+*?.|\", a), "\" & a, a): b = IIf(InStr("(){}[]^$+*?.|\", b), "\" & b, b)
.Pattern = a & "(\d*\.?\d+)" & b: .Global = True
For Each ar In area
For Each nm In .Execute(ar)
SumIn = SumIn + nm.SubMatches(0)
Next nm
Next ar
End With
End Function
ما هذا هذا ماذا (جمله مقتبسه من ا/ياسر خليل )
هذه دالة معرفة بسيطه وبناء تلك الدالة هو
CODE
=SumIn(area,[brackets])<br />
سهل جدا هتقولى ازاى لوك يعنى بص يعنى انظر
تحتوى الدالى على 2 باراميتر فحسب وفقط لا غير
اول باراميتر: لادخال نطاق الخلايا اللى هتجمع منه الارقام وبس
تانى باراميتر: لكتابة رمزين الذان يحيطان بالارقام وبس برضوا
واذا تجاهلت الباراميتر التانى ستاخذ الدالة افتراضيا بالقوسين () وبس برضوا برضوا
يلا بينا ناخد مثال ونكتب سوا فى الخلايا A1 و A2 و C1 النص التالى (انسخ النص فى الــ 3 خلايا أدناه)
CODE
A(10)B(5.45)C(.05)<br />
واكتب المعادله كالتالى وتابع النتيجة
CODE
=SumIn(A1,"()")
او طالما سنعمل على القوسين ممكن تكتبها كدا وتابع النتيجة
CODE
=SumIn(A1)<br />
بس خلينا بالطريقه الاولى عشان نشوف ازاى نشتغل بالرموز
تعالى نجرب بقى نجمع النطاق A1:A2 ونكتبها كدا وتابع النتيجة
CODE
=SumIn(A1:A2,"()")
وتعالى برضوا نجمع النطاق A1:A2 و C1 ونكتبها كدا وتابع النتيجة
CODE
=SumIn((A1:A2,C1),"()")
ولا تحاول عزيزى مستخدم الدالة تشغل الجى وتروق الدى
وتكتب فى الباراميتر الثانى اكثر من حرفين عندها هتعتمد الدالة على اول 2 برضوا
او تعاند وتكتب حرف واحد او نص فارغ "" هتعاند الدالة وترجع خطا برضوا برضوا
طبعا ممكن تغير الرمز البادئ والرمز الذى ينتهى براحتك وعيش يامان
وأخيرا مرفق ملف عمل بالموضوع
اذا نلقاكم فى يوم جديد ايها الاخوة الكرام بسعادة تغمر القلوب
وهنا استودعكم عند من لا تضيع عنده الودائع
والسلام عليكم ورحمة الله وبركاته