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

بن علية حاجي

الخبراء
  • Posts

    4359
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    48

كل منشورات العضو بن علية حاجي

  1. السلام عليكم ورحمة الله أخي الكريم بالنسبة إلى هذا السؤال لا توجد دالة في إكسيل تقوم بإخفاء السطور أو الأعمدة مهما كانت الشروط، ولكن يمكن كتابة كود بـ VBA يقوم بهذه العملية وحسب الشروط التي تريدها... والله أعلم
  2. السلام عليكم ورحمة الله أستسمح إخواني الكرام الذين أبدعوا ولم يبخلوا بما عندهم حفظهم الله جميعا، أضيف طريقة أخرى باستعمال الدالة SUMPRODUCT في المثال التالي بالملف المرفق... أخوكم بن علية البحث عن رقم يقع بين رقمين.rar
  3. السلام عليكم ورحمة الله أخي الكريم طريقة الدالة في الترقيم جميلة جدا لم أكن أعرفها... أقدم لك طريقة أخرى باستعمال الدالة SUBTOTAL في الملف المرفق (قمت بوضع الصيغة في ملفك)... أخوك بن علية ترقيم بالدالة SUBTOTAL.rar
  4. السلام عليكم ورحمة الله أخونا الكريم أنور ضع مثالا حيا على ما تريده بالضبط وإن شاء الله ستجد الحل (والحل موجود في الردود السابقة)... أنظر إلى المرفق قمت بوضع الصيغة في إضافة عمود إلى أعمدة "طرابلس" وتم حساب المتوسط للقيم الثلاثة... أخوك بن علية سحب الفيلوكب.rar
  5. السلام عليكم ورحمة الله أخي الكريم يكاد الأمر يكون مستحيلا، لأجل ذلك يجب أن تكون عندك قاعدة بيانات بكل الأسماء في العالم (عربية - إنجليزية) وحتى برامج الترجمة تعجز عن ترجمة أسماء الأشخاص من لغة إلى أخرى... وحتى كتابة الأسماء بلغة واحدة تختلف من منطقة إلى أخرى فكيف إلى ترجمتها إلى لغة أخرى... يمكن أن يكون تبديل للحروف من لغة إلى أخرى ولكن (أعتقد) الأسماء في هذه الحالة تفقد معانيها ونطقها... والله أعلم
  6. السلام عليكم ورحمة الله أخي الكريم أنور... أعود إليك لتصحيح خطأ طرأ مني في الصيغة السابقة، لم أضع في الحسبان أن تكون كل قيم range معدومة (تساوي 0) لذا أضع وأغير الصيغة السابقة غلى الصيغة التالية (بفرض أن نضع فراغا في حالة انعدام كل قيم النطاق): =IF(COUNTIF(range;"<>0")=0;"";SUMIF(range;"<>0")/COUNTIF(range;"<>0")) وإذا كنت تستعمل إكسيل 2007 فقد تم إضافة دالة تقوم بحساب المعدل بشروط وهي الدالة AVERAGEIF وبالفرنسية MOYENNE.SI ويكون تطبيقها في مثالنا (مع فرض أنه يمكن أن تكون كل قيم النطاق معدومة) وتكون الصيغة كما يلي: =IFERROR(AVERAGEIF(range;">0");"") وبالفرنسية: =SIERREUR(MOYENNE.SI(range;">0");"") والله أعلم
  7. السلام عليكم ورحمة الله أخي الكريم أنور لم تفلح كل هذه الطرق التي اقترحها إخوتي الكرام... غريب!! والله ما قصروا وقد نوعوا الحلول الناجعة وما عليك إلا حيرة الاختيار... وأضيف هذه الطريقة بعد أن أستسمح من كل إخوتي الكرام وأعتقد أنه ما تريده، إستعمل أخي الكريم هذه الصيغة في ملفك وإن شاء الله يكون هذا هو المطلوب... =SUMIF(range;"<>0")/COUNTIF(range;"<>0") range هو النطاق الذي تريده... أخوك بن علية
  8. السلام عليكم ورحمة الله أخي الكريم قصي، أولا لا شكر على واجب وثانيا أود أن أعرف كيف تريد أن تكون النتيجة المطلوبة ؟ هل تريد أن نستخرج 10 طلاب فقط (من الأوائل) أم عشر رتب الأولى (ويمكن أن يأخذها أكثر من 10 طلاب حسب تكرارات هذه الرتب)... ثم ينبغي أن نستخرج هذه القائمة حسب علامة معينة (المعدل الذي به تم تعيين الطالب الناجح من الطالب غير الناجح) وهذا غير موجود في قاعدة ملفك (علامات الطلاب)... في انتظار تفسيراتك تقبل مني كل التحية والاحترام... أخوك بن علية
  9. السلام عليكم ورحمة الله أخي الكريم وضعت ورقة البطاقة في ملفك وقمت بربطها بقاعدة بياناتك وجعلت لك في البطاقة "قائمة منسدلة" في خانة إدخال الرقم الوظيفي ويمكنك من خلال هذه القائمة الرقم الذي تريد أو كتابته يدويا في هذه الخانة... وقد استعملت الصيغة التي قدمها أخي الكريم "الخالدي" في رد سابق وهذا لتبسيط الصيغة التي استعملت فيها خلية أخرى H2 (المخفية) في الورقة والتي سألتني عليها... ألق نظرة على الملف المرفق وإن شاء الله تجدني أو غيري في الخدمة.... لإلغاء حماية ورقة "البطاقة" الكلمة السرية هي 123 أخوك بن علية 123_1.rar
  10. السلام عليكم ورحمة الله أخي الكريم الخالدي، الفائدة لا تحتاج إلى إذن من أحد، أشكرك جزيل الشكر وبارك الله فيك وفي علمك... وفقك الله لكل خير... أخوك بن علية
  11. السلام عليكم ورحمة الله الخطأ وارد لأن عمل INDEX يعتمد على رقمين رقم السطر في القاعدة ومثلته في الصيغة بـ C7 ورقم العمود الذي يمثله رقم ترتيب العمود في قاعدة البيانات (في مثالنا هو رقم من 1 إلى 11 حسب المعلومة المطلوبة) وبما أن C7 هو رقم السطر وهو الرقم الوظيفي لذا فالمعلومات التي تكتب في البطاقة هي معلومات السطر الذي رقمه C7 (على أساس أن الرقم الوظيفي هو رقم تسلسلي تصاعدي)... الآن قمت ببعض التغييرات على القاعدة وعلى البطاقة وعلى الصيغ ليقبل رقما وظيفيا كيفيا حتى وإن لم يكن مرتبا والمثال في الملف المرفق خير دليل على ذلك... أخوك بن علية lordring2.rar
  12. السلام عليكم ورحمة الله بالتأكيد أخي الكريم، يمكنك ذلك وقد وضعت مثالا باستعمال الكود التالي: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A1") = Date Then 'هنا تضع الكود خاصتك ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End If End Sub عندما يكون التاريخ في الخلية A1 مساويا لتاريخ اليوم يقوم الكود بتنفيذ الأوامر المكتوبة بين شرط IF ونهاية الشرط END IFوفي المثال جعلته يقوم بالطباعة... والله أعلم
  13. السلام عليكم ورحمة الله تأخرت عليك أخي الكريم قصي، كنت أعمل على ملفات أخرى فمعذرة أخي الكريم... كما طلبت أخي إليك الملف المرفق به العمل باستعمال الدالة INDEX مع بعض التغييرات الأخرى... أخوك بن علية 15شهاده_INDEX.rar
  14. السلام عليكم ورحمة الله أخي الكريم السيد عبد الفتاح، إن أمر عرض الصور في الإكسيل تم تناوله عدة مرات بطرق مختلفة في المنتدى... أقدم لك منها ما قدمه أخونا الكريم عمر الحسيني حفظه الله بواسطة دالة مستحدثة سماها VLOOK_PIC في الملف المرفق... ألق نظرة عليها لعلها تكون لك حلا للمسألة... وهناك طرق أخرى تجدها في المنتدى... أخوك بن علية VLOOK_PIC.rar
  15. السلام عليكم ورحمة الله أختي الكريمة لقد تم المطلوب... جعلت كود الطباعة يتحقق أولا من إصدار إكسيل ثم يقوم بالطباعة باعتبار أن أمر الطباعة في إكسيل 2003 يختلف عن أمر الطباعة في إكسيل 2007... (والملف يمكن العمل به في الإصدارين)... أخوك بن علية printing.rar
  16. السلام عليكم ورحمة الله أخي الكريم في الملف المرفق وضعت عمود "الرقم الوظيفي" هو الثاني بعد عمود 'اسم الموظف' وغيّرت الدالة VLOOKUP بالدالة INDEX ويمكنك استعمالها وتغييرها حسب رقم العمود الذي تريد في الموضع الذي تريد... والله أعلم lordring1.rar
  17. السلام عليكم ورحمة الله أخي الكريم رجاء أعد إرفاق الملف بعد أن تقوم بـ" حفظ باسم" وتقوم بحفظه بإصدار آخر غير 2010 لأنه ليس معي هذا الإصدار... الذي يهمني هو قاعدة البيانات فقط وسأقوم وفقها بتغيير ما يجب تغييره... أخوك بن علية
  18. السلام عليكم ورحمة الله كما وعدتك أخي الكريم محمد، لقد عملت على الملف (الملف خاصتي) وقمت بتغيير بعض المعادلات ليعمل مثلما طلبت... بالنسبة للقصاصات تركتها على حالها لم أغيرها (12 قصاصة في كل ورقة) والرقم الذي يتم تغييره (في الخانة الصفراء) لا يدل على رقم القاعة بل على رقم الصفحة لذا يمكن أن تجد في ورقة واحدة قصاصات لقاعات مختلفة (حفاظا على الورق) والرقم في الأعلى يبين رقم القاعة ثم رقم ترتيب التلميذ في قائمة القاعة... ويبقى أيضا أن نربط القاعدة بورقة "مخطط الجلوس" سأعمل على ذلك لاحقا... في انتظار أي من الإخوة الكرام أن يقوم بعملية الترحيل بواسطة الأكواد تقبل تحياتي الخالصة... أخوك بن علية Listes_BAC_New.rar
  19. السلام عليكم ورحمة الله أخي الكريم محمد إن الأخ خبور خير هو من أعز الأحباب وليس لي أن أقول فيه شيء ينقص من قيمته ولا حتى في غيره... ثم إن ما قلته لا يستدعي كل هذا كل ردة الفعل هذه تجعلني بها مذنبا إلى هذه الدرجة... سأترك الموضوع في هذه اللحظة حتى لا يخرج الأمر من مساره... ولكني أعدك أن أحاول لاحقا العمل على ملفك ما دمت تقول إنك تعمل في مديرية التربية مما يعني أن قاعدة البيانات يكون لها الشكل نفسه والتنسيق نفسه لجميع مراكز الإجراء وذلك يسهل التعامل مع القاعدة ويسهل وضع طريقة الترحيل إن شاء الله... أخوك بن علية
  20. السلام عليكم ورحمة الله شكرا أخي الكريم على الورود الجميلة بارك الله فيك وجزاك عني ألف خير... بالنسبة لاستعمال الدالة VLOOKUP بدلا من الدالة INDEX لم يكن الاختيار أجباريا (استعملتها لأني تعودت استعمالها ولكني أفضل الدالة INDEX لأنها أقوى واستعمالها أحسن) وإذا أردت أخي الكريم أن أعيد لك العمل السابق باستعمال الدالة INDEX فلا يوجد أي إحراج... أخوك دائما بن علية
  21. وعليكم السلام ورحمة الله أخي محمد، الكل يعرفني بالمنتدى وبمنتديات أخرى أن صدري يسع الكثير والكثير، ومعذرة إن كان ردي السابق قد جعلك تفهم منه ما ليس في نيتي، أخي الكريم انا لا أحمل على احد مهما كان ولا اطعن في أحد... وإن لم يكن صدرنا متسعا لما واصلنا في التعليم لهذه المدة وقد مرت علينا أجيال وأجيال... فمعذرة أخي محمد مرة اخرى... أعود إليك أخي الكريم إلى الموضوع، تقول إنني لم أفهم ما تريده وقد عرفت أنك تريد ترحيل كل البيانات في قوائم القاعات (بالترتيب) حسب الشعب... وهذا لم نختلف فيه، إذا أن العمل الذي قدمته إليك وضعت فيه قاعدة بيانات خاصة يتم حجز معلومات الطلبة المترشحين في القاعات حسب الشعب (وقد ذكرت كيفية حجز أرقام اللجان والشعبة) لأننا وكما تعلم هذه القاعدة لا تأتي محضرة كما وضعتها في ملفك المرفق بل يتم حجزها من أول تلميذ من اول شعبة إلى آخر تلميذ في آخر شعبة (ونتحصل على هذه القوائم على شكل Listing من الديوان)، وملفي الذي أرفقته في ردود سابقة هو ملف فارغ يتم تحضير القاعات مبدئيا بطريقة الحجز التي ذكرتها) وقد وضعت بيانات قاعدتك في تطبيقي بالملف المرفق... أخوك بن علية Listes_BAC_N.rar
  22. السلام عليكم ورحمة الله أخي الكريم قصي، لم أنتبه لهذا الرد معذرة... بالنسبة للكتابة (Cells(1, 13 تدل على خلية واحدة هي تقاطع السطر 1 والعمود 13 أي هي الخلية M1 والكتابة (Cells(1, 14 تعني الخلية N1... فالكود هنا يقارن مضمون الخلية M1 مع الخلية N1 إذا كانت "أصغر منها او تساويها" فإنه يغير مضمون الخلية M1 إلى القيمة الموالية (مثلا إذا كان موجود فيها 5 فإنه يجعلها 6 وهكذا) فيتم عرض 15 شهادة الموالية (وإلا -لما يكون مضمون الخلية M1 لا يحقق شرط IF- فإن الكود يتوقف) والعكس بالنسبة للكود الثاني DOWN فإنه يقوم بمقارنة مضمون الخلية M1 مع الخلية O1 إذا كانت "أكبر منها تماما" فإنه يغير مضمون الخلية M1 إلى القيمة السابقة (مثلا إذا كان موجود فيها 5 فإنه يجعلها 4 وهكذا) فيتم عرض 15 شهادة السابقة (وإلا -لما يكون مضمون الخلية M1 لا يحقق شرط IF- فإن الكود يتوقف)... والله أعلم
  23. السلام عليكم ورحمة الله يمكن الاستغناء عن العبارة (M1 - 1) في الصيغ فبدلا من الصيغة (مثلا) : =IF(15*($M$1-1)+1>$P$1;"";15*($M$1-1)+1) نجعلها : =IF(15*$M$1+1>$P$1;"";15*$M$1+1) ونقوم بذلك في الصيغ الأخرى (أيضا) لكن ينبغي أن تكون أصغر قيمة للخلية M1 هي 0 ويتم ذلك بتغيير قيمة O1 من 1 إلى 0... والله أعلم
  24. السلام عليكم ورحمة الله أخي قصي نسيت أن أشرح لك المعادلة المكتوبة أمام "رقم الجلوس" في كل شهادة... تلاحظ أن أمام كل رقم جلوس من كل شهادة تجد صيغة مختلفة (وعددها 15 حسب عدد الشهادات المطلوب عرضها ويختلف فيها الرقم المضاف في الأخير فقط والباقي كله ثابت)... والصيغ هي كما يلي : =IF(15*($M$1-1)+1>$P$1;"";15*($M$1-1)+1) =IF(15*($M$1-1)+2>$P$1;"";15*($M$1-1)+2) =IF(15*($M$1-1)+3>$P$1;"";15*($M$1-1)+3) =IF(15*($M$1-1)+4>$P$1;"";15*($M$1-1)+4) =IF(15*($M$1-1)+5>$P$1;"";15*($M$1-1)+5) =IF(15*($M$1-1)+6>$P$1;"";15*($M$1-1)+6) =IF(15*($M$1-1)+7>$P$1;"";15*($M$1-1)+7) =IF(15*($M$1-1)+8>$P$1;"";15*($M$1-1)+8) =IF(15*($M$1-1)+9>$P$1;"";15*($M$1-1)+9) =IF(15*($M$1-1)+10>$P$1;"";15*($M$1-1)+10) =IF(15*($M$1-1)+11>$P$1;"";15*($M$1-1)+11) =IF(15*($M$1-1)+12>$P$1;"";15*($M$1-1)+12) =IF(15*($M$1-1)+13>$P$1;"";15*($M$1-1)+13) =IF(15*($M$1-1)+14>$P$1;"";15*($M$1-1)+14) =IF(15*($M$1-1)+15>$P$1;"";15*($M$1-1)+15) إذا كانت مثلا قيمة الخلية M1 تساوي 1 فإن قيمة (M1 - 1) تكون معدومة وبتعويضها في الصيغ السابقة تعطي (هذه الصيغ) الأعداد من 1 إلى 15 فيتم عرض الـ 15 شهادة الأولى إذا كانت قيمة الخلية M1 تساوي 2 فإن قيمة (M1 - 1) تساوي 1 وقيمة 15*(M1 - 1) في الصيغ تساوي 15 فتعطي الصيغ الأعداد من 16 إلى 30 فيتم بالتالي عرض 15 شهادة الموالية... وهكذا أرجو أن يكون شرحي مفهوما... أخوك بن علية
  25. السلام عليكم ورحمة الله جزاك الله خيرا ........ عملك الطيب في الملف واف .. واف واكثر من رائع =IF(15*($M$1-1)+1>$P$1;"";15*($M$1-1)+1) منا لي عدة اسئله وانا اثق في رحابة صدرك الخليه M1 لماذا كتبت فيها الرقم 12 ؟ الخليه M1 في المعادلة تطرح منها 1 ثم تضيف 1 اذن فلماذا الطرح والف شكر أهلا أخي قصي، بالنسبة للتغييرات التي منها تغيير الخلايا M1 و N1 و O1 و P1 * الخلية M1 هي خلية العدد المتغير بواسطة الكودان الذين وضعتهما (تصاعديا بالكود UP أو تنازليا بالكود DOWN)... * الخلية N1 وضعت فيها قيمة الحد الأعلى الذي تأخذه الخلية M1 وتم ذلك بواسطة دالة (وهو العدد الصحيح الذي يساوي أكبر قيمة في عمود رقم الجلوس في شيت القاعدة مقسوم على 15 لتحديد مجالات العرض التي طولها15) (يمكنك مراقبة الصيغة في هذه الخلية. * الخلية O1 وضعت العدد 1 (ثابت) وهو أصغر قيمة للخلية M1 * الخلية P1 وضعت صيغة تعطي أكبر قيمة لرقم الجلوس الموجود في القاعدة وذلك باستعمال الدالة MAX وهذه الخانة استعملتها في الشرط المكتوب في الكود التالي: =IF(15*($M$1-1)+1>$P$1;"";15*($M$1-1)+1) فعندما يكون رقم الجلوس المكتوب بالصيغة أكبر من الرقم الحقيقي الموجود في قاعدة البيانات فإن الشهادة تعرض فارغة دون معلومات بدلا من أن تعرض بالخطأ ملاحظة: كل أرقام هذه الخلايا تم تلوين الخط فيها بلون التعبئة (لا يجب مسح مضمونها)... والله أعلم
×
×
  • اضف...

Important Information