فضل حسين قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 الى خبراء واعضاء منتداى العزيز والعظيم سلام الله عليكم ورحمته وبركاته مرفق ملف موضح به المطلوب وجزاكم الله كل خير توزيع المواد تحت اسماء اعمدتها.rar
بن علية حاجي قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 السلام عليكم ورحمة الله أخي الكريم فضل، بفضل الله ثم بمعادلة بسيطة تم المطلوب... لا تنسونا بدعائكم الصالح، ولا تنسو الدعاء لابنتي في ظاهر الغيب... أخوك بن علية توزيع المواد تحت اسماء اعمدتها.rar
إبراهيم ابوليله قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 (معدل) الاخ بن على ما اروع ماقدمته بارك الله فيك وطامعين فى شرح المعادله اللهم يجعل اعمالك فى ميزان حسناتك تم تعديل يوليو 9, 2012 بواسطه إبراهيم ابوليله
جمال عبد السميع قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 ماشاء الله عليك أستاذي العظيم ( بن علية الحاجة ) دالة في منتهي الذكاء والبساطة بارك الله فيك وحفظ إبنتكم من كل سؤ
فضل حسين قام بنشر يوليو 9, 2012 الكاتب قام بنشر يوليو 9, 2012 (معدل) الاستاذ الفاضل الكبير / بن علية الحاجى اسمح لى اولا وقبل كل شئ ان ادعو لابنتك الكريمة ربى الكريم العظيم ان يباركلك الله فيها ويشفيها ويعافيها الله من كل مكروه . مع دعائى لها ايضا بظاهر الغيب . اللهم انت الشافى العافى اللهم انت الروؤف الرحيم اللهم انت الغفور الكريم اللهم انت الخالق العظيم بحقك ياعظيم ياكريم اشفى واعفى وبارك فى ابنة حبيبنا واخونا بن علية الحاجى واشفى يارب كل مريض بحقك ياعظيم . اللهم امين اللهم امين . ثانيا :- استاذى الكبير / بن علية الحاجى ايه الجمال ده وايه الحلاوة دى وايه الابداع ده . عايز اقولك حاجة . دائما فى حلولك بتشعرنى بان برنامج الاكسل اللى مع سيادتك مختلف تماما عن برنامج الاكسل اللى معانا . فأنا اشعر والله بأن برنامج الاكسل اللى مع سيادتك ومع حلولك بانه اكسل له مذاق خاص وله طعم خاص . فأنا اشعر بان اكسلك يابن علية دائم بطعم السكر بطعم جميل ومختلف تماما على الاكسل الذى بين ايدينا . الف شكر لك ياحبيبى يابن علية ياراجل ياسكر جزاك الله كل خير وففقك الله واعطاك كل ماتتمناه فأنت شخصية جميلة حقا وتستاهل كل خير . تم تعديل يوليو 9, 2012 بواسطه فضل 1
رجب جاويش قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 اخوتى الأفاضل لإثراء الموضوع هذا كود يقوم بعمل المطلوب Sub ragab() For i = 2 To 21 MyArr = Trim(Cells(i, 2)) For Each cll In [c1:p1] x = UBound(Filter(Split(MyArr, ","), cll)) + 1 If x > 0 Then Cells(i, cll.Column) = cll Next Next End Sub توزيع المواد تحت اسماء اعمدتها رجب.rar
هاني عدلي قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 معادلة سهلة و بسيطة من الأستاذ / بن عليه , و كود و لا أروع من الأستاذ / رجب جاويش بارك الله فيكم جميعاً و زادكم علماً تحياتي للجميع
هاني عدلي قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 (معدل) · مخفي بواسطه عبدالله المجرب, يوليو 11, 2012 - بدون مشاركة مخفي بواسطه عبدالله المجرب, يوليو 11, 2012 - بدون مشاركة . تم تعديل يوليو 9, 2012 بواسطه أ / هاني عدلي
فضل حسين قام بنشر يوليو 9, 2012 الكاتب قام بنشر يوليو 9, 2012 نجم الاكسل الاستاذ الفاضل / رجب جاويش حقا لك ان تفخر يانجم الاكسل بهذا العمل الرائع بسم الله وماشاء الله والحمد لله ولااله الا الله والله اكبر ولاحول ولاقوة الا بالله . حقا لك ان تفخر يانجم الاكسل بهذا العمل الرائع . كود مفيش اروع من كده ولااجمل من كدة . عمل انا بعتبره بصمة حقيقية وعمل تاريخى لك يانجم الاكسل . عمل بصراحة استوقفنى وادهشنى كثيرا لجماله وابداعه . واسمحلى يانجم الاكسل ياصاحب الوجه البشوش الجميل ياصاحب الخلق الرفيع ان ارفع لسيادتكم القبعة اجلالا واحتراما وتقديرا لهذا العمل الرائع الجليل من شخصية رائعة جميلة. عمل سيظل فى الذاكرة لنجم الاكسل . كل الاحترام والتقدير والحب لنجم الاكسل داعيا له مزيدا من الرقى والتقدم ومزيدا من الابداع والجمال . جزاك الله كل خير يانجم على ماتقدمه وسوف تقدمه . داعيا لك المولى عز وجل ان يجعل هذه الاعمال فى ميزان حسناتك اللهم امين . نجم الاكسل اظن امام هذا الكود الرائع وامام هذا الفكر العالى اظن انه ان الاوان لتلاميذ ومحبين واعضاء هذا الصرح العظيم وانا أولهم مثلما استمتعوا بالحل يجب ايضا ان يستمتعوا بالعلم والفهم والشرح من استاذ جليل مثلك . لذلك اسمح لى ان استئذن من سيادتكم اذا كان وقتكم وظروفكم تسمح . بأن تقوم سيادتكم بشرح هذا الكود وبالذات وظائف الكلمات الاتية trim ubound filter spilt ارجو الا اكون اثقلت او تجاسرت على سيادتكم بطلبى هذا ولكن عذرى او عزائى الوحيد هو كرم اخلاقكم الذى تعودنا عليه منكم وحسن اخلاقكم الذى ليس له مثيل . انا سوف انتظر وبكل لهفة وبكل حب وبكل استمتاع شرح سيادتكم . الذى اتوقع بانه سوف لايقل جمالا عن كودكم وابداعكم . جزاكم الله كل خير مع اجمل المنى وارق التهانى لشخصكم الكريم ولاتنسى يانجم الاكسل لك ان تفخر بهذا العمل الرائع فضل
رجب جاويش قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 أخى الحبيب فضل هذا الكلام الجميل كثير على جدا فأنا حتى الآن ما زلت تلميذ أتلقى العلم من أساتذة هذا المنتدى العظيم وأى عمل أو كود أقوم بعملة ما هو الا حصيلة ما تعلمته من الأساتذة المبدعين وهم كثير ولكنى أخص بالذكر منهم اثنين لشدة حبى وتقديرى لهم فقد تعلمت منهم الكثير والكثير وهم الأستاذ / عبد الله باقشير والأستاذ / عبد الله المجرب لذا أخى الحبيب كان من الصعب أن يقوم التلميذ بشرح ما تعلمه من أساتذته ولكن تلبية لطلبك أقوم بمحاولة للشرح أدعو الله أن يوفقنى فيها البداية MyArr = Trim(Cells(i, 2)) دالة TRIM تترك مسافة واحدة بين الكلمات وتزيل كل المسافات الزائدة الأخرى وبالتالى يكون MyArr مساوى لقيمة الخلية Cells(i, 2) بعد ازالة المسافات الزائدة السطر التالى For Each cll In [c1:p1] بداية حلقة تكرارية لجميع الخلايا من C1 الى P1 وهى الخلايا التى تحتوى على أسماء مواد الدور الثانى أما الجملة التالية فهى جملة مركبة تعلمتها من الأستاذين الكبيرين عبد الله باقشير وعبد الله المجرب x = UBound(Filter(Split(MyArr, ","), cll)) + 1 ولفهم هذه الجملة لابد من تجزئتها وفهم آليه عمل كل جزء أولا ( من الداخل الى الخارج) 1- دالة SPLIT تقوم بتجزئة نص معين ( جملة مثلا ) الى عدة نصوص أو أجزاء ( كلمات مثلا ) وبالتالى الدالة Split(MyArr) تقوم بتجزئة النص المكتوب فى الخلية المقصودة مثال اذا كانت الخلية الموجودة فى العمود ( B ) عمود مواد الدور الثانى تحتوى على ( " تاريخ – فيزياء" ) مثلا فان ناتج التقسيم يكون " تاريخ" "-" "فيزياء" 2- دالة FILTER تقوم بعمل تصفية لناتج التقسيم ( الموجود فى الخطوة السابقة ) ويكون معيار التصفية هو الخلية cll وهى الخلايا من C1 الى P1 Filter(Split(MyArr), cll) فاذا كانت الخلية cll تساوى عربى مثلا فان ناتج التصفية يكون فارغ ( بناءا على ناتج التقسيم السابق) واذا كانت الخلية cll تساوى تاريخ مثلا فان ناتج التصفية يكون " تاريخ" فقط وهكذا 3- الدالة UBound تستخدم مع المصفوفات Arrays لمعرفة الحد الأعلى للمصفوفة وكما فى المثال السابق اذا كان ناتج التصفية فارغ مثلا يكون ناتج الدالة UBound هو -1 أما اذا كان ناتج التصفية " تاريخ" مثلا يكون حد واحد وتكون رتبته ( (index له ( صفر ) ثم بعد ذلك تم اضافة رقم 1 الى الجملة x = UBound(Filter(Split(MyArr, ","), cll)) + 1 وبالتالى اذا كانت قيمة x تساوى الصفر معنى ذلك أن ناتج التصفية فارغ وأما اذا كانت قيمة x أكبر من الصفر معنى ذلك أن ناتج التصفية له قيمة تساوى قيمة خلية من الخلايا من C1 الى P1 وبالتالى تكون الخطوة التالية هى وضع قيمة الخلية فى المكان المناسب فى العمود الخاص بها فى النهاية عذرا للاطالة وليعذرنى أساتذتى عن أى خطأ فى الشرح دمتم فى رعاية الله وحفظه أخوكم / رجب جاويش
فضل حسين قام بنشر يوليو 9, 2012 الكاتب قام بنشر يوليو 9, 2012 استاذى الفاضل نجم الاكسل رجب جاويش كل التحية والتقدير شاكرا لك هذا الشرح الجميل والمفيد . جزاك الله كل خير وبارك الله فيك فهذا عهدنا بك يانجم فى هذا الصرح العظيم وهو العطاء والعطاء بدون حدود . الف شكر وبالمناسبة وللظروف السعيدة وحظى السعيد وجد وانا بكتب لك هذة المشاركة اسم العلامة الكبير عبدالله بافشير اسفل المشاركة متابع هذة المشاركة .. ففرصة طيبة لان ادعو العلامة الكبير للمشاركة معنا فى هذا الكود . وان كان لى ملحوظة بسيطة على شرح الكود وهى تخص وكما فى المثال السابق اذا كان ناتج التصفية فارغ مثلا يكون ناتج الدالة UBound هو -1 واظن انها صفر ولااعلم ماهو الصح بالضبط دالة filter مش فاهم دورها قوى دالة ubound هل هى تحضر اخر رقم فى المصفوفة ولا ايه لست ادرى ومش عارف بالضبط على اى حالة بعد اذن استاذى الكبير نجم الاكسل ان ادعو العلامة الكبير عبدالله باقشير للمشاركة وادلاء رأيه وعلمه فى النهاية شاكر لك ياحبيبى يانجم الاكسل شكرا جزيلا وسعيد جدا بشرحك وبمشاركتك .
رجب جاويش قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 أخى الحبيب / فضل اذا كان ناتج التصفية فارغ يكون ناتج الدالة UBound هو -1 ثم بعد اضافة رقم 1 تكون قيمة x تساوى صفر أما دالة filter تقوم بعمل تصفية للبيانات حسب معيار معين أما دالة ubound تحضر اخر رقم فى المصفوفة أى الحد الأعلى للمصفوفة وفى هذه الجزئية يمكنك مراجة الرابط التالى للعالم الكبير / عبد الله باقشير http://www.officena.net/ib/index.php?showtopic=42397 وطبعا شرف لى مشاركة أستاذى العالم الكبير / عبد الله باقشير
رجب جاويش قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 أخى الحبيب / فضل هذا مقطع فيديو صغير يؤكد لك النقطة الخاصة بدالة UBound test1.rar
رجب جاويش قام بنشر يوليو 9, 2012 قام بنشر يوليو 9, 2012 أخى الحبيب / فضل هذا مقطع فيديو صغير يوضح فكرة الدالة Filter test2.rar
فضل حسين قام بنشر يوليو 10, 2012 الكاتب قام بنشر يوليو 10, 2012 استاذى الفاضل الكبير نجم الاكسل رجب جاويش سلام الله عليكم ورحمته وبركاته اشكر سيادتك على اهتمامك وحرصك على توصيل المعلومة . وهذا ليس بغريب على شخصية فاضلة مثلك تتمتع بسعة الصدر وحسن الخلق . وانا والله سعيد بهذة المشاركة ويكفينى فخرا بأن اتشارك مع نجم الاكسل استاذنا الفاضل جزاه الله كل خير / رجب جاويش ولكن وتحديدا واستفسارى هو بالنسبة لهذا الكود تحديدا x = UBound(Filter(Split(MyArr, ","), cll)) + 1 متفقين سويا بانه سوف يقوم باخراج رقم سواء كان هذا الرقم صفر او سالب واحد او واحد هنا السؤال الجوهرى مين فى هذه الدوال الثلاث ubound او filter او spilt كان المسئول عن اخراج هذا الرقم سواء كما قلنا صفر او واحد او سالب واحد فهمنا بالطبع ان دالة spilt وهى دالة من دوال visual basic 6 تقوم بتقطيع او بتجزئة النص الى عدة نصوص وفهمنا ايضا ان دالة ubound تقوم باحضار اخر رقم فى المصفوفة ودالة filter تقوم بعمل فلترة او تصفية على حسب معيار معين فمن اين خرج هذا الناتج سواء كان الصفر او الواحد او السالب واحد وشكرا ياحبيبى وارجو الا اكون اثقلت عليك جزاك الله كل خير وجعل جميع اعمالك فى ميزان حسناتك وشكرا
رجب جاويش قام بنشر يوليو 10, 2012 قام بنشر يوليو 10, 2012 أخى الحبيب / فضل كما قلت أنت فان دالة UBound تقوم باحضار اخر رقم فى المصفوفة ( الحد الأعلى للمصفوفة ) وبالتالى تكون هذه الدالة هى المسئولة عن اخراج الرقم -1 ( والذى يعنى عدم وجود بيانات تصفية ) أو صفر ( والذى يعنى وجود بيان تصفية واحد ) هذه الأرقام طبعا قبل الجمع مع الواحد الموجود فى نهاية الجملة
فضل حسين قام بنشر يوليو 10, 2012 الكاتب قام بنشر يوليو 10, 2012 (معدل) استاذى الكبير الفاضل / رجب جاويش اسمحلى ان استغل وجودك فى المنتدى الان وانا بكتب مشاركتى للاستفسار واجراء الحديث الممتع معك حول الكود اولا :- ما فائدة جمع الرقم واحد وممكن الاستغناء عنه بالتعديل البسيط لهذا السطر من الكود هكذا فبدلا من اكبر من جعلتها يساوى والكود يعمل بطريقة عادية وممتازة , If x = 0 Then Cells(i, cll.Column) = cll ثانيا :- ان مش متخيل شكل المصفوفة هل هى المصفوفة مرقمة مثلا من صفر الى مثلا 5 وبالتالى تخيلى عند احضار اخر رقم فى المصفوفة سوف اجد ارقام مختلفة ليست بالضرورة -1 ثالثا :- لن اخفى عنك سرا انا شاكك فى دالة filter وهى المسئولة عن هذا الرقم وان دورها مثل دور دالة countif عندنا فى الاكسل ولكن ليس معى دليل او ضمان لهذا الشك رابعا :- منتظر تفسيرك ورايك ياحبيبى . تم تعديل يوليو 10, 2012 بواسطه فضل 1
رجب جاويش قام بنشر يوليو 10, 2012 قام بنشر يوليو 10, 2012 أخى الحبيب / فضل هذا مزيد من الشرح عن دالة Filter نفرض أن لدينا الكود الآتى Sub ragab() a = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") b = Filter(a, "S") End Sub نلاحظ أن ناتج الفلترة فى المثال السابق يكون صفيف Array الحد الأدنى له صفر ويتكون من جميع القيم التى تحتوى على حرف S فى الصفيف a وهى حساسة لحالة الأحرف ( كبيرة أو صغيرة ) وهى كالآتى b(0) = "Sunday" b(1) = "Saturday" فاذا غيرنا معيار التصفية الى " sunday" مثلا يكون ناتج التصفية صفيف Array يتكون من حد واحد فقط ( رتبته صفر ) وهو كالاتى b(0) = "Sunday" وهكذا أرجو أن تكون دالة Filter قد اتضحت كيفية عملها بشكل بسيط أخوك / رجب جاويش
رجب جاويش قام بنشر يوليو 10, 2012 قام بنشر يوليو 10, 2012 أخى الحبيب / فضل اليك مقطع فيديو صغير يزيل الشك الخاص بدالة Filter تماما ويؤكد لك أنها بعيدة عن دالة countif تماما وأنها ينتج عنها صفيف Array حده الأدنى صفر ويتكون من جميع القيم الناتجة عن عملية الفلترة test5.rar
فضل حسين قام بنشر يوليو 10, 2012 الكاتب قام بنشر يوليو 10, 2012 استادى الفاضل / رجب جاويش سامحنى سامحك الله وان شاء الله سوف تكون اخر ملاحظة ماهو تفسيرك عند تنفيذ هذا الكود وظهور رقم 1 Sub ragab() a = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") b = UBound(Filter(a, "S")) Range("a1").Value = b End Sub
رجب جاويش قام بنشر يوليو 10, 2012 قام بنشر يوليو 10, 2012 أخى الحبيب / فضل كما اتفقنا من قبل أن دالة Filter فى هذا المثال ينتج عنها Array ( حده الأدنى صفر ) ويتكون من عنصرين كالآتى b(0) = "Sunday" b(1) = "Saturday" ويكون الحد الأدنى صفر والحد الأعلى 1 وكما اتفقنا أيضا أن دالة UBound تعطى الحد الأعلى للمصفوفة الناتجة لذا يكون الناتج 1
فضل حسين قام بنشر يوليو 10, 2012 الكاتب قام بنشر يوليو 10, 2012 استاذى الفاضل الكبير/نجم الاكسل رجب جاويش كل الشكر والتقدير لشخصكم الكريم على المجهود الكبير الذى تبذلونه فى نشر العلم والمعرفة . وسعيكم المخلص على تلبية كل استفسارات وتساؤلات الاعضاء . لايسعنى فى النهاية يااستاذى الكبير الا ان اشكر سيادتكم مرة ثانية على علمكم الوفير وعطائكم وسعة صدركم وحسن خلقكم . جزاك الله كل خير ياحبيبى يانجم ويارب نتقابل ان شاء الله فى مشاركات اخرى اكثر اثارة واكثر متعة . وان شاء الله فى القريب العاجل اخوك فضل
عبدالله المجرب قام بنشر يوليو 11, 2012 قام بنشر يوليو 11, 2012 السلام عليكم بعد اذن الاساتذة الكرام بصراحة اعجبني الحل البسيط للاستاذ بن عليه واقتبس اسمح لى اولا وقبل كل شئ ان ادعو لابنتك الكريمة ربى الكريم العظيم ان يباركلك الله فيها ويشفيها ويعافيها الله من كل مكروه . مع دعائى لها ايضا بظاهر الغيب . اللهم انت الشافى العافى اللهم انت الروؤف الرحيم اللهم انت الغفور الكريم اللهم انت الخالق العظيم بحقك ياعظيم ياكريم اشفى واعفى وبارك فى ابنة حبيبنا واخونا بن علية الحاجى واشفى يارب كل مريض بحقك ياعظيم . اللهم امين اللهم امين . ======================================== ثالثا :- لن اخفى عنك سرا انا شاكك فى دالة filter وهى المسئولة عن هذا الرقم وان دورها مثل دور دالة countif عندنا فى الاكسل ولكن ليس معى دليل او ضمان لهذا الشك حل ممتاز واستخدام رائع للصفيف من الاخ رجب واقول لاخي فضل يختلف عمل filter عن countif وهي كما شرحها الاخ رجب واذا اردت الحل بدالة countif اليك الحل Sub Abu_Ahmed() Dim cl As Range For i = 2 To 21 For Each cl In [C1:P1] If Application.CountIf(Cells(i, 2), "*" & cl & "*") >= 1 Then Cells(i, cl.Column) = cl Next cl Next i End Sub
عبدالله باقشير قام بنشر يوليو 11, 2012 قام بنشر يوليو 11, 2012 السلام عليكم الاخ الحبيب والخلوق بن عليه حفظك الله وحفظ ابنتك الحبيبة من كل مكروه وابلغكم رمضان وغفر لكم واقتبس اسمح لى اولا وقبل كل شئ ان ادعو لابنتك الكريمة ربى الكريم العظيم ان يباركلك الله فيها ويشفيها ويعافيها الله من كل مكروه . مع دعائى لها ايضا بظاهر الغيب . اللهم انت الشافى العافى اللهم انت الروؤف الرحيم اللهم انت الغفور الكريم اللهم انت الخالق العظيم بحقك ياعظيم ياكريم اشفى واعفى وبارك فى ابنة حبيبنا واخونا بن علية الحاجى واشفى يارب كل مريض بحقك ياعظيم . اللهم امين اللهم امين . تقبل تحياتي وشكري
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.