اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

بن علية حاجي

الخبراء
  • Posts

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

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

  • Days Won

    46

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

  1. السلام عليكم ورحمة الله أخي الكريم، إذا كانت الورقة ahmed (بكلمة واحدة) من المصنف نفسه فإن المعادلة تكتب على الشكل: ("INDIRECT("ahmed!$e$"&Q2+1&":$e$81= أخوك بن علية
  2. السلام عليكم ورحمة الله أخي الكريم، أعرف أن الإخوة الأحباء لم يبخلوا بما فضل الله عليهم من علم ومعرفة جازاهم الله خير الجزاء زجعل كل ذلك في ميزان حسناتهم... ولإثراء الموضوع يمكن أيضا استعمال المعادلة التالية في E2 وسحبها للأسفل: =COUNTIF(A:A;"<="&$D2)-COUNTIF(A:A;"<"&$C2) أخوكم بن علية
  3. السلام عليكم ورحمة الله أخي الكريم عباد، الكود الذي اقترحته رائع وجميل جدا وقد كنت أعمل على كود يشبهه كثيرا في الفكرة ولكني لم أكمله... غير أني لاحظت أن الكود يجب تنفيذه مرتين حتى يتم عمله (لملء العمود الرابع) وأعتقد أن السبب هو في ترتيب أوامره (وخاصة فيما يخص المتغير A3) والكود يصبح بعد ترتيب أوامره حسب ما أراه (مجرد رأي) : Public Sub Ali_SumPct() Dim A1, A2, A3 As Variant With Application .ScreenUpdating = False .EnableEvents = False With ورقة1 For r = 2 To .Cells(Rows.Count, 1).End(xlUp).Row A1 = Evaluate("=SUMPRODUCT((تاريخ>=$F$3)*(تاريخ<=$G$3)*(حالة=""صادر"")*(الاسم = " & .Cells(r, 1).Address(False, True) & ")*(عدد))") A2 = Evaluate("=SUMPRODUCT((تاريخ>=$F$3)*(تاريخ<=$G$3)*(حالة=""وارد"")*(الاسم = " & .Cells(r, 1).Address(False, True) & ")*(عدد))") .Cells(r, "B") = A1: .Cells(r, "C") = A2 A3 = Evaluate("= " & .Cells(r, 2) & "-" & .Cells(r, 3) & " ") .Cells(r, "D") = A3 Next End With .EnableEvents = True .ScreenUpdating = True End With End Sub أخوك بن علية
  4. السلام عليكم ورحمة الله أخي الكريم سعيد، لمسة صغيرة جدا على كود الأخ الحبيب عبد الله لتوقيف نسخ المعادلات عند آخر خلية غير فارغة من العمود A ... أرجو أن يروقك هذا التعديل (البسيط جدا) أخوك بن علية تحويل معادلة الى كود.rar
  5. السلام عليكم ورحمة الله أخي الكريم، تم تسمية نطاق البيانات (من العنوان إلى آخر بيانات) بالتسمية Plage باستعمال معادلة بالدالة OFFSET وتم إدراج كود يقوم بتعويض كل 3 فراغات (" ") بفراغين (" ") ثم كل فراغين (" ") بـ (/) ثم يقوم بتحويل كل نص في كل خلية من النطاق بتقسيمه إلى خلايا في الأعمدة المجاورة (4 أعمدة بحساب العمود الأول) حسب الرمز /... الشرط الوحيد أن تفرق بين البيانات (الاسم-العمر-رقم البطاقة-العنوان) بعدة فراغات (على الأقل 3 فراغات -أو 2 فراغات-) أو بالرمز / (وهذا شرط أساسي لعمل الكود).... وأضيفت أيضا بعض التنسيقات التحسينية للأعمدة الأربعة بعد التقسيم .. الكل تجده في الملف المرفق... أرجو أن يكون هذا العمل مستوفيا المطلوب... أخوك بن علية تنسق الملف1.rar
  6. السلام عليكم ورحمة الله أخي الكريم، بهذه المشاركة لم أضف شيئا جديدا وإنما هو حل دمجت فيه حلي أخوايا الحبيبين محمود و رجب جازاهما الله عنا ألف خير... أخوك بن علية مبيعات يوميه2.rar
  7. السلام عليكم ورحمة الله أخي الكريم، لقد تم تعديل المعادلات اللازمة لترحيل (استدعاء) البيانات، والخطأ كان أولا في أنه تم نسخها جملة واحدة ولصقها في ملفك وتركت ارتباطها بالملف الذي نسختها منه وثانيا باعتبار أن المعادلات مرتبطة بخلايا (خلية رقم رتبة العميل-خلية الكود) ولم تقم بتعديل هذه الارتباطات وكان أيضا خلل في تسمية الورقة الأولى في الملف الذي نسخت منه المعادلات تسميتها "ورقة 1" وفي ملفك الأخير تسميتها "ورقه 1" وكل هذه الأمور تجعل المعادلات لا تأتي بثمارها... المهم أنه تم التصحيح والتعديل حسب المطلوب (على ما أعتقد)... تم إضافة كود الطباعة للملف (الذي أصبح من نوع xlmx.) مع تصحيحه حسب الخلية S6 التي تحوي "عدد العملاء". وتم أيضا تحجيم ورقة 2 للبيانات لتحتويها ورقة بحجم A4 حتى تكون لكل عميل ورقة واحدة تحوي جميع بياناته المحولة... وملاحظة أخرى : تبقي أرقام الأكواد التالية : 10801109 ، 10801113 ، 10801114 ، 11001064 موجودة في الورقة 1 وبها بيانات لبعض العملاء ولكنها غير موجودة في الورقة 2 أين تُرحل هذه البيانات... أخوك بن علية ملف مرفق به ملفين أحدهما لنسخة 2007 (أو أعلى) وآخر نسخة 2003 : مشروع تخرج أخير.rar
  8. السلام عليكم ورحمة الله أخي الكريم، يمكن أن تجد للمسألة أكثر من حل، منها استعمال الدالة COUNTIF (كما اقترح أخي العزيز هاني) أو الدالة SUMPRODUCT أو غيرها... وكمثال لاستعمال الدالة COUNTIF أقترح عليك المعادلة التالية بوسائط : =COUNTIF(RANGE;">=MIN")-COUNTIF(RANGE;"<MAX") حيث: RANGE : يمثل نطاق العلامات MIN : أصغر قيمة للمعدل MAX : أكبر قيمة للمعدل مثال : لو فرضنا أن نطاق العلامات هو A1:A100 فإن : 1. عدد درجات التلاميذ المحصورة بين 0 و 10 لا يساوي 10 يعطى بالمعادلة : =COUNTIF(A1:A100;">=0")-COUNTIF(A1:A100;"<10") أو بالمعادلة : =COUNTIF(A1:A100;"<10") 2. عدد درجات التلاميذ المحصورة بين 10 و 20 يعطي بالمعادلة : =COUNTIF(A1:A100;">=10")-COUNTIF(A1:A100;"<20") ويمكن إضافة الرمز = أمام العدد 20 لحساب قيمة المعدل 20 أو بالمعادلة : =COUNTIF(A1:A100;">=10") والله أعلم
  9. السلام عليكم ورحمة الله أخي الكريم، الإجابة على طلب مثل هذا (شرح المعادلات) تجعلنا نتقاعس ونتكاسل وخاصة إذا كانت المعادلات طويلة وذات وسائط كثيرة... ومرة أخرى سأحاول شرح المعادلات (وكود الطباعة) قدر المستطاع... المعادلة في الخلية C8 (مثلا) هي: =IF(ISERROR(OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2));"";IF(OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2)=0;"";OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2))) وهي دالة شرطية لاستدعاء بيانات خلايا من الورقة1 معينة بتقاطع عمود (رتبة العميل في الخلية I2) مع صف (رقم سطر الكود) وشرح أجزاء المعادلة يكون كما يلي: * الجزء الأول : IF(ISERROR(OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2));""; الذي يعني أنه في حالة إرجاع عملية البحث قيمة الخطأ (وهذا في حالة عدم وجود الكود من الخلية B8 في العمود A من الورقة 1) فإن المعادلة ترجع فراغا ""... يمكن استبدال هذا الجزء بالجزء: IF(ISERROR(MATCH($B8;ورقة1!$A:$A;0));""; * الجزء الثاني من المعادلة: IF(OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2)=0;"";OFFSET(ورقة1!$A$1;MATCH($B8;ورقة1!$A:$A;0)-1;$I$2)) وهذا الجزء يشتغل في حالة ما إذا كان شرط الجزء الأول غير متوفر أي في حالة وجود الكود من الخلية B8 في العمود A من الورقة 1، فيقوم بالبحث عن مضمون الخلية من الورقة1 (التي تعينها الدالة OFFSET انطلاقا من الخلية A1 من الورقة 1) التي هي تقاطع السطر (رقم سطر الكود في العمود A من الورقة 1) الذي يعينه الجزء MATCH($B8;ورقة1!$A:$A;0) والعمود (رقم عمود ترتيب العميل) الذي تعطيه الخلية I2 ويكون اختبار لهذه القيمة إذا كانت فارغة فترجع المعادلة فراغا وإذا كانت غير فارغة فترجع المعادلة مضمون الخلية المعينة... أرجو أني قربي شرح المعادلة الموجودة في C8 والتي تم سحبها للأسفل ثم تم نسخها في العمود F أمام الخلايا من العمود E التي تحوي أكوادا... بالنسبة لكود الطباعة فهو كود بسيط جدا وشرحه كما يلي: الكود: Sub Printing() Dim I As Integer For I = 1 To [I1] If I <= [I1] Then [I2] = I Activewindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False End If Next End Sub بفرض I متغيرا طبيعيا يقوم بتغيير I من القيمة 1 (أول عميل) إلى مضمون الخلية I1 (التي كتبت فيها معادلة باستعمال الدالة COUNTA تحصي عدد العملاء)... إذا كانت قيمة I أصغر من أن تساوي مضمون الخلية I1 فيضع هذه القيمة في الخلية I2 التي تعتمد عليها الخلية C5 (اسم العميل) بتغيير اسم العميل حسب ترتيبها وتعطيه المعادلة الموجودة في هذه الخلية بالدالة INDEX والتي هي : =INDEX(ورقة1!$1:$1;0;$I$2+1) وبالتالي تتغير كل البيانات المرحلة في الجدول حسب هذا العميل أي حسب العدد في الخلية I2 ، ثم يقوم الكود بطباعة الورقة (بيانات العميل) على الطابعة ويمر بعدها إلى العميل الموالي ويقوم الكود بالعمليات نفسها وهكذا إلى آخر عميل ويتوقف عمل الكود بعد الانتهاء من أمر طباعة بيانات آخر عميل.... أرجو أني وفقت في شرح المعادلات وعمل كود الطباعة... وأسألك وكل إخوتي وأخواتي بالمنتدى أن تدعو الله لي ولأهلي بالشفاء من كل داء وأن تلحو بالدعاء في كل حين... أخوكم بن علية
  10. السلام عليكم ورحمة الله أخي الكريم، تمت تعديلات على الملف وإضافة معادلات كثيرة وأعمدة إضافية (ملونة بالأخضر) للترحيل غير أنه لا يمكن ترتيب القيم المرحلة حسب المبالغ وإنها حسب ظهورها في الجدول (أي حسب رقم الحساب) ولم أجد بدا من ذلك (وأعتذر لذلك)... أخوك بن علية Book1.rar
  11. السلام عليكم ورحمة الله أخي الكريم، بعض التعديلات على الملف وتصحيح بعض الأخطاء (أرقام أكواد محجوزة بتنسيق نص تم تعديلها - أرقام كود مكررة تم حذفها - أرقام أكواد غير موجودة تم إضافتها باللون الأحمر) مع إضافة المعادلات المناسبة للترحيل والطباعة الكلية للعملاء وفق عددهم (الخلية I1) ورقم ترتيبهم (I2).... أرجو أني وفقت في تقريب الحل... أخوك بن علية مشروع تخرج.rar نسخة لأوفيس 2003 للاستفادة: مشروع تخرج.rar
  12. السلام عليكم ورحمة الله أخي الكريم محمود، والله أتحفتنا بهذه المعادلات الرائعة وقد وقفت منبهرا لهذه المعادلات، وهذا يعني أن لا حدود في الإكسيل للمعادلات والأكواد وما تعلمناه في الإكسيل (وفي غيره) إلا جزء ضئيل والطريق مازال طويلا... المهم أشكرك على تقاسمك لنا هذه الأفكار الجميلة والرائعة... وقد قمت أيضا بتوظيف آخر لهذه المعادلات (تطبيقا على الملف المعدل لأخي الحبيب طارق) بربطها بالتوقيت اللحظي لتوقيت الجهاز بالاستعانة بكود من النت لتغيير الوقت في الخلية AK1 في الملف المرفق... والتوقيت يبدأ بمجرد فتح الملف ولم أضع له ما يوقفه (زر توقيف) حتى أن غلق الملف لا يتم إلا بالضغط على حرف X بأعلى النافذة وليس بالطرق المعتادة لغلق الملفات... أخوكم بن علية من عجائب المعادلات3.rar
  13. السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، تم تعديل الكود حسب المطلوب حيث يقوم الكود بتحديد الورقات (الشيتات) المعنية وتطبيق الشروط عليها ثم معاينتها قبل الطباعة (أو طباعتها) ثم إعادة إظهار الصفوف التي تم إخفاؤها... أرجو أن تروقك هذه التعديلات وتفي بالمطلوب... أخوك بن علية Edit Print (5).rar
  14. السلام عليكم ورحمة الله أخي الكريم، كان من المفروض أن تلقي نظرة على الرابط : http://www.officena.net/ib/index.php?showtopic=45010 ... المهم وضعت لك في الملف المرفق المعادلات اللازمة للمطلوب فقط (كتابة رقم اللجنة أمام كل طالب في ورقة Control حسب عدد الطلبة في كل لجنة)... أخوك بن علية Book.rar
  15. السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، أعرف أني تأخرت عليك بالرد ولكن لظروف خاصة، قمت ببعض التعديلات على الكود السابق الذي (بفضل الله) جعلته يقوم بتحديد كل الأوراق (الشيتات) المراد طبعها (معاينتها قبل الطباعة) بعد توفير الشروط المطلوبة على نطاقات معينة لإخفاء الصفوف (وهذه العملية تبطئ قليلا عمل الكود نظرا لعدد الخلايا في هذه النطاقات)... تم ربط الكود بزر الطباعة الموجود في كل ورقة... أرجو أني فهمت المقصود من المطلوب هذه المرة... أخوك بن علية Edit Print (4).rar
  16. السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، لست أدري إن كنت قد فهمت المطلوب هذه المرة... قمت بإنشاء 3 نطاقات مسماة Plage3، Plage2، Plage1 وهي النطاقات المعنية في الأكواد في الأوراق الثلاثة (يمكنك التأكد من هذه النطاقات في خاصية "التسميات")... وفي الكود (الموحد) تم إضافة شرط بالدالة IF لإنشاء النطاق MyRange بإحدى التسميات السابقة حسب الورقة (الشيت) المختارة وباقي الأوامر بقيت على حالها مع تعديل طفيف في سطر إعادة إظهار الصفوف التي تم إخفاؤها قبل الطباعة (أو المعاينة قبل الطباعة)... وزر الطباعة في كل ورقة أصبح مرفقا بكود واحد فقط... أرجو أني فهمت واستوفيت المطلوب... أخوك بن علية Edit Print (3).rar
  17. السلام عليكم ورحمة الله أخي الكريم، تمت تعديلات أخرى على الورقات حتى تتماشى والمطلوب الجديد (تخصيص عدد الطلبة في اللجان)... ومن بين التعديلات ما يلي : -- في ورقة "البيانات" * تجد خلايا ملونة بالأخضر بها معادلات ضرورية (لا تُحذف ولا تُبدل) وهي تلقائية (حسب التخصيصات) * تجد أيضا خلايا ملونة بالأصفر لتخصيص عدد الطلبة في اللجان وتحجز يدويا (اللجان التي عدد الطلبة فيها 19 طالب تُترك فيها الخلايا -الملونة بالأصفر- فارغة) * تم إضافة تنسيق شرطي في جدول البيانات بتلوين سطر بداية كل لجنة باللون الأزرق... -- في ورقة "اللجان" : تم تعديل المعادلات فيه وتمديد الجدول إلى 24 سطر... إن شاء الله تروقك هذه التعديلات... أخوك بن علية قوائم مناداة.rar
  18. السلام عليكم ورحمة الله أخي الكريم، أنظر إلى الملف المرفق لعل فيه المطلوب! أخوك بن علية 123.rar
  19. السلام عليكم ورحمة الله أخي الكريم، تم حذف القائمة المنسدلة في الخلية B6 واستبدالها بمعادلة متعلقة بالتسمية Names والخلية R1 وإظافة كود لطباعة كل التقارير من 1 إلى قيمة الخلية T1 (عدد الأعضاء)... أرجو أن تروقك هذه التعديلات... أخوك بن علية بيانات الجيم.rar
  20. السلام عليكم ورحمة الله أخي الكريم، بعض التعديلات على شيتات المصنف مع إضافة معادلات تقوم بالمطلوب... تم أيضا إضافة كود خاص بطباعة كل اللجان... إذا كانت هناك ملاحظات على تقسيم اللجان (عدد الطلبة في كل لجنة) فتجدني (أو أحد غيري) إن شاء الله في الخدمة للتعديل على الملف حسب الطلب... أخوك بن علية مناداه فارغ.rar
  21. السلام عليكم ورحمة الله أخي الكريم، تم تلبية طلب واحد "ربط بيانات ورقة 3 مع جدول الورقة 2" بالنسبة للطلبات الأخرى فهي غير مفهومة، الرجاء توضيحها أكثر... أخوك بن علية 123.rar
  22. السلام عليكم ورحمة الله أخي الكريم، عذرا لهذا الخلل غير المقصود والذي سببه النت عندنا، فقد كتبت ردودي على مواضع والنت ينقطع كل دقيقتين... المهم الملف تم إرفاقه مع هذا الرد (رغم أني صححت الرابط في الرد السابق) أرجو أن لا تجد مشكلة في تحميله... ومعذرة مرة أخرى... أخوك بن علية تقرير1.rar
  23. السلام عليكم ورحمة الله أخي الكريم، كان من المفروض أن تقوم بالتعديلات (إضافة الأعمدة) على الملف السابق الذي تم وضع المعادلات فيه ولكنك فتحت ملفا جديدا وحتى صفحاته وتنسيقاته مختلفة لذا قمت بالكثير من التعديلات على ورقة "الكميات" (خاصة) والورقات الأخرى... تم أيضا تعديل طفيف على المعادلات التي تجلب البيانات المطلوبة (لتكون شبه تلقائية عند سحب المعادلات إلى اليسار وإلى الأسفل)... أرجو أن يفي هذا العمل بالمطلوب... ملاحظة: قد وضعت شرحا آخر (الشرح كان في ردين متتابعين) لكتابة المعادلات في ورقتي "التقرير الشهري" و"التقرير السنوي" استكمالا للشرح في موضوع جديد قبل هذا الرد وبالأمس كان موجودا بين الردود ولكن تفاجأت بعدم وجوده، لست أدري إن كان قد حدث خلل في المنتدى بالأمس أم أن أحد الإخوة من الإدارة قام بحذف الرد بالخطأ ظنا منه أن الرد مكرر لتشابهه مع الرد السابق له بالشكل والتنسيق... أخوك بن علية تقرير1.rar
  24. السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، فهمت قصدك جيدا وقد تم الحل في الملف المرفق... أخوك بن علية Edit Print (2).rar
  25. السلام عليكم ورحمة الله أخي الكريم، معذرة للتأخر في الشرح والرد (شرح معادلة ليس بالأمر الهين) ولكن سأحاول تبسيط الشرح قدر المستطاع المعادلة في الخلية C4 في ورقة كل عميل هي: =INDEX($C$7:$C$1000;LARGE(IF(($C$7:$C1000<>"")*($A$7:$A$1000=$A$4);ROW($7:$1000)-6);1)) التي ترجع مضمون خلية من النطاق C7:C1000 (عمود التاريخ) حسب أكبر رقم (أكبر ترتيب) السطر الذي يرجعه الجزء من المعادلة : (LARGE(SI(($C$7:$C1000<>"")*($A$7:$A$1000=$A$4);ROW($7:$1000)-6);1 بتوفر شرطين : الشرط الأول ("" <> C7:C1000) وهذا يعني خلايا النطاق C7:C1000 (عمود التاريخ) غير فارغة والشرط الثاني (A7:A1000=A4) والذي يعني أن تكون قيمة الرصيد من النطاق A7:A1000 (عمود الأرصدة) مساوية لقيمة الرصيد (آخر رصيد) في الخلية A4.... العدد (6 -) المضاف في المعادلة بعد (ROW($7:$1000 لجعل الترتيب (ترتيب الأسطر) يبدأ من 1 لأن النطاق 7:1000 بدأ من 7 العدد 1 في آخر المعادلة لترجع دالة LARGE أكبر القيم... والجزء (LARGE(SI(($C$7:$C1000<>"")*($A$7:$A$1000=$A$4);ROW($7:$1000)-6);1 يمكن استبداله بالجزء ((MAX(SI(($C$7:$C1000<>"")*($A$7:$A$1000=$A$4);ROW($7:$1000)-6 أرجو أني وفقت في الشرح أخوك بن علية
×
×
  • اضف...

Important Information