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

ياسر خليل أبو البراء

المشرفين السابقين
  • Posts

    13,165
  • تاريخ الانضمام

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

  • Days Won

    412

كل منشورات العضو ياسر خليل أبو البراء

  1. أنت النبراس الذي أضأت لي الطريق أحيانا بيكون صاحب الموضوع نفسه مش عارف يعبر عن طلبه بشكل جيد ، وهذه مشكلة في نظري تحدث كثيراً فيأتي الغوث من أصحاب الخبرة العاملين في نفس المجال تقبل تحياتي
  2. كلامك صحيح أخي الحبيب سليم ربنا يبارك فيك .. بس أعتقد إن تجهيز أرقام الجلوس بيكون مرة واحدة في أول العمل ولذلك لن تتم الإضافة بشكل دائم عموما كل السبل تؤدي إلى ما يريده سامي سامي لا يأبه لأحد تقبل تحياتي يا مبدع
  3. أخي علاء يا رب يا رب تكون مصيب في قولك وإلا هتحصل مصيبة بسبب كلامك ده نداء للأخ الكريم شريف حتى ولو لم يكن هذا في نيتك فقل أنك كنت تريد هذا الأمر .. مش عايزين علاء يسيب المجال المحاسبي (كدا المجال هيخسر أحد أكبر رجاله !!) ربنا يستر ربنا يستر
  4. أخي الفاضل أحمد الرشيدي قم ببناء التصور الذي تريده واطرح موضوع واتنين وتلاتة أو أكثر وفي كل مرة اطلب طلب جديد وإن شاء الله ستجد من يقدم لك يد المساعدة فقط كن محدد الهدف
  5. أخي الغالي أبو صلاح أعتقد كل الموضوعات التي تقدم في المنتدى هي بمثابة دروس تقدم الدورة توقفت شكلاً لكن الموضوعات التي تقدم في المنتدى تكمل ما بدأته الدورة بالنسبة لطلبك إذا كان قد تم فلا تنسى التوجيهات (حدد أفضل إجابة ليظهر الموضوع مجاب) تقبل تحياتي
  6. أخي الحبيب علاء لم ينوه الأخ شريف إلى ما تقول من الارتباط برقم الحساب ؟؟!!
  7. أبو صلاح جرب الكود التالي Sub TypeEgyptian() Dim LR As Long LR = Cells(Rows.Count, 4).End(3).Row Range("E6:E500").ClearContents With Range("E6:E" & LR) .Value = "مصري" End With End Sub تقبل تحياتي
  8. أخي الحبيب علاء رسلان إن كان كما تقول فجرب المعادلة بهذا الشكل علها تفي بالغرض بدون أعمدة مساعدة =SUMPRODUCT((LEFT($A$2:$A$17,3)=""&A20&"")*($C$2:$C$17))-SUMPRODUCT((LEFT($A$2:$A$17,3)=""&A20&"")*($D$2:$D$17)) تقبل تحياتي
  9. الأخ الفاضل أبو محمد نصري الأخ العزيز جلال محمد الغائب عن الأعين الحاضر في القلب بارك الله فيكم وجزيتم خير الجزاء
  10. الخطأ سببه نسخة الأوفيس القديمة بصراحة أنا بطلت 2003 من سنة 2007
  11. أخي الحبيب أبو يوسف جرب التعديل البسيط في الكود Sub SplitWB() 'يقوم الكود بفصل بيانات كل موظف في مصنف جديد مقسم إلى أوراق عمل جديدة '-------------------------------------------------------------------- 'تعريف المتغيرات Dim WB As Workbook Dim Arr Dim I As Long 'إلغاء خاصية اهتزاز الشاشة Application.ScreenUpdating = False Application.DisplayAlerts = False 'تعيين قيمة للمتغير ليساوي كل القيم في النطاق الحالي في ورقة العمل 'المتغير يخزن البيانات على شكل مصفوفة Arr = ThisWorkbook.Sheets("Sheet1").Cells(1).CurrentRegion.Value 'حلقة تكرارية من الصف الثاني وحتى آخر صف به بيانات 'الحد الأعلى للبعد الأول للمصفوفة ألا وهو بعد الصفوف [UBound(Arr, 1)] حيث يمثل هذا الجزء For I = 2 To UBound(Arr, 1) 'ليساوي المصنف الجديد [WB] تعيين المتغير Set WB = Workbooks.Add 'بدء التعامل مع المصنف الجديد With WB 'إضافة ورقة عمل باسم "ملاحظات" ، ووضع البيانات المرتبطة من العمود التاسع بالمصفوفة With .Sheets.Add .Name = "ملاحظات" .Range("A1") = "ملاحظات" .Range("B1") = Arr(I, 9) .Columns.AutoFit End With 'إضافة ورقة عمل باسم "الأداء والمعلومات المالية" ، ووضع البيانات المرتبطة من العمود الرابع والسابع والثامن بالمصفوفة With .Sheets.Add .Name = "الأداء والمعلومات المالية" .Range("A1").Resize(3, 1) = Application.Transpose(Array("التقييم السنوي", "الراتب", "البدلات")) .Range("B1") = Arr(I, 4) .Range("B2") = Arr(I, 7) .Range("B3") = Arr(I, 8) .Columns.AutoFit End With 'إضافة ورقة عمل باسم "المعلومات الأساسية" ، ووضع البيانات المرتبطة من العمود الأول والثاني والثالث والخامس بالمصفوفة With .Sheets.Add .Name = "المعلومات الأساسية" .Range("A1").Resize(5, 1) = Application.Transpose(Array("اسم الموظف", "تاريخ التعيين", "الجنسية", "الوحدة", "الشعبة")) .Range("B1") = Arr(I, 1) .Range("B2") = Arr(I, 2) .Range("B3") = Arr(I, 3) .Range("B4") = Arr(I, 5) .Range("B5") = Arr(I, 6) .Columns.AutoFit End With 'وهي ورقة عمل افتراضية في أي مصنف جديد [Sheet1] حذف ورقة العمل المسماة .Sheets("Sheet1").Delete 'حفظ المصنف الجديد في نفس مسار المصنف الحالي باسم البيان الموجود في العمود الأول بالمصفوفة .SaveAs ThisWorkbook.Path & "\" & Arr(I, 1) & ".xlsx" 'إغلاق المصنف الجديد الذي تم حفظه .Close End With 'الانتقال لصف جديد والتعامل مع مصنف جديد Next I Application.DisplayAlerts = True 'إعادة تفعيل خاصية اهتزاز الشاشة Application.ScreenUpdating = True 'رسالة تفيد بانتهاء عمل الكود MsgBox "Done !", vbInformation End Sub تم إضافة سطرين لإلغاء رسائل التنبيه وإعداة تفعيلها بعد انتهاء الكود الغريب أن الكود يعمل معي بدون رسالة الخطأ وعلى نفس النسخة 2007
  12. أنا لا أعمل على 2003 ..فقط 2007 و 2013 .. ننتظر أحد الأخوة العاملين على أزفيس 2003 ليفيدك
  13. وعليكم السلام ورحمة الله وبركاته جزيت خيراً أخي الغالي ابو يوسف على مرورك العطر وكلماتك الطيبة تقبل تحياتي
  14. أخي الكريم المنار يفضل في مثل تلك الموضوعات التي تستغرق الكثير من الوقت والجهد أن تكون الملفات المرفقة معبرة أكثر من ذلك .. وبالنسبة للمصنف المسمى اسم الموظف هو بنفس التنسيق تماماً الذي تريد العمل عليه أم أنه يختلف ويا ريت تضع عناوين حقيقية بدلاً من كلمة المتغير .. وبعض البيانات لمحاولة التطبيق عليها
  15. تمام الحمد لله .. أخيراً وصلنا للمطلوب وإن شاء الله تكونوا استفدتم تقبلوا تحياتي لو فيه أية شروحات أخرى مطلوبة يا ريت يكون في موضوعات مستقلة وبعد الانتهاء من كل الموضوعات بإذن الله يمكن تجميعها في موضوع واحد .. لا أحب الإطالة في الموضوع الواحد تقبلوا تحياتي
  16. ممكن ترفق شكل النتائج المتوقعة بشكل يدوي عشان نفهم المطلوب بشكل أعمق
  17. الأخ الفاضل سامي 741 روح للتبويب Formulas ثم Name Manager ثم حدد رقم_الجلوس المراد التعديل عليه (لاحظت أن هناك عدد 2 نطاق مسمى بنفس الاسم ..احذف واحد وأبقي على الآخر للتعديل عليه ) المهم اضغط Edit ثم في الحقل المسمى Refers To قم بوضع المعادلة التالية ثم أوك ثم Close =OFFSET('كنترول شيت'!$B$11,,,COUNTA('كنترول شيت'!$B$11:$B$1000)) تقبل تحياتي Dynamic Defined Name.rar
  18. أخي الحبيب علي الشيخ جزاكم الله خير الجزاء وبارك الله فيك .. يعجبني جداً أسلوب طرحك للموضوع (وأسلوب ضربك وجمعك بردو ههه)
  19. أخي الفاضل أهلا ومرحباً بك في المنتدى بين إخوانك هلا غيرت اسم الظهور للغة العربية كما فعل إخوانك .. بارك الله في أخونا المتألق الصاعد علي الشيخ ، وأستأذنه في تقديم الحل لعله يكون المطلوب تم الاستعانة بعود مساعد في العمود D وإدراج المعادلة التالية لحساب كميات الأصناف بشكل تجميعي =SUMIF($B$2:B2,B2,$C$2:C2) ثم تم عمل الكود التالي ليؤدي الغرض Sub CheckItem() Dim I As Long, X As Double Dim Cell As Range For Each Cell In Range("J5:J8") X = Application.WorksheetFunction.SumIf(Range("F2:F20"), Cell.Value, Range("G2:G20")) For I = 2 To 20 If Cells(I, 2).Value = Cell.Value And Cells(I, 4).Value > X Then Cell.Offset(, 1).Value = Cells(I, 1).Value: Exit For End If Next I Next Cell End Sub تقبلوا تحياتي Lot Number For Items.rar
  20. أخي الغالي أبو يوسف ما السطر الذي يحدث عنده خطأ ؟ وما هي نسخة الأوفيس التي تعمل عليها ؟ الأخ الكريم المنار أحسنت في فكرة تقديم موضوع جديد .. هل كنت فعلاً أنه يمكن معالجة الأمر بدون برمجة !! المعادلات عملها محدود للغاية ، بينما البرمجة تفتح لك آفاقاً واسعة في الملف المرفق يتم إنشاء مصنفات جديدة وأوراق عمل داخل المصنفات وإغلاق وحفظ هذه المصنفات بالإضافة إلى إدراج بيانات بها ...فكيف للمعادلات أن تقوم بمثل تلك الخطوات ؟؟
  21. أخي أسامة راجع الشرح الرقم 8 خاص بعدد أعمدة الإزاحة وتم شرحها بالتقصيل يا جميل
  22. الأخ الكريم سامي نوهت من قبل ألا تكون المشاركات متتالية بهذا الشكل ادينا فرصة نرد على مشاركة مشاركة وإلا (من يطارد عصفورين يفقدهما) أحب التأني في الطلب ..فقط طلب واحد في كل مرة إلى أن يأتيك الرد ..وأفضل دائماً طرح موضوع مستقل لكل طلب كنوع من التنظيم دا لأن الخلية دي مش في نطاق أرقام الجلوس بالتالي لازم تحدد الصف والعمود بهذا الشكل لتصبح المعادلة بهذا الشكل =OFFSET('كنترول شيت'!$R$10,-1,8) لاحظ أن البيانات تبدأ من الصف رقم 11
  23. أخي الفاضل قم باستبدال الفاصلة بالفاصلة المنقوطة
  24. السلام عليكم ورحمة الله وبركاته إخواني الكرام ..جمعة مباركة عليكم إليكم شرح الطريقة الرابعة من معادلات الباشمهندس علي السحيب سيتم الشرح على الملف المرفق بعد عمل معادلتين فيه للتطبيق ، والشرح سيكون على ورقة العمل المسماة "شهادة الترم الثاني(2)" المعادلة الأولى في الخلية C3 =IF(OR($M$3<MIN(رقم_الجلوس),$M$3>MAX(رقم_الجلوس)),"",OFFSET('كنترول شيت'!$R$10,MATCH($M$3,'كنترول شيت'!رقم_الجلوس,0),-15)) الجزء الأول من المعادلة تم شرحه مسبقاً في المشاركة رقم 4 OR($M$3<MIN(رقم_الجلوس),$M$3>MAX(رقم_الجلوس)) وذكرنا في خلاصة شرح الجزئية دي إن : لو رقم الجلوس الموجود في الخلية M3 كان مش موجود ضمن نطاق أرقام الجلوس الموجودة في ورقة العمل "كنترول" تعطي النتيجة فراغ ..عشان رقم الجلوس في الحالة دي مش موجود ، فطبيعي إن ميكونش فيه بيانات مرتبطة بيه ، فيعطي فراغ ننتقل للجزء الثاني من المعادلة ، ودا الجزء المسئول عن جلب البيانات المرتبطة برقم الجلوس OFFSET('كنترول شيت'!$R$10,MATCH($M$3,'كنترول شيت'!رقم_الجلوس,0),-15) وهنا تم استخدام الدالة Offset ودي دالة إزاحة ، وهنفهم إن شاء الله يعني ايه إزاحة ، والدالة دي ناخد فكرة عامة الأول عنها .. الدالة لها 5 بارامترات ..اللي يهمنا فيهم أول 3 لأن دول إجباري أما البارامتر الرابع (خاص ارتفاع صفوف الإزاحة) فدا اختياري ، والبارامتر الخامس (خاص بعرض أعمدة الإزاحة) ودا بردو اختياري نيجي للـ 3 بارامترات المهمة والمستخدمة في المعادلة البارامتر الأول 'كنترول شيت'!$R$10 المرجع أو ممكن نسميها نقطة الإزاحة يعني بشكل آخر نقطة البداية اللي هنطلق منها ..ودي هتكون في الصف السابق لأول صف فيه بيانات للطلاب يعني كمثال في الملف المرفق في ورقة العمل المسماة "كنترول شيت" بيانات الطلاب بتبدأ في الصف رقم 11 يبقا نقطة الإنطلاق هتكون في الصف رقم 10 .. السؤال اللي بيطرح نفسه : نقطة الإنطلاق المفروض إنها خلية واحدة والخلية معروف إنها ليها اسم عمود ورقم صف ..إحنا عرفنا رقم الصف اللي هنبدأ منه ، طيب واسم العمود اللي هنشتغل عليه الإجابة : أي عمود يعجبك مش هتفرق .. اللي هيفرق هو حساب عدد أعمدة الإزاحة ، هنتناولها بالتفصيل بعد قليل (ماشي يا جميل) أنا في المثال اخترت العمود R (الكلام دلوقتي في ورقة العمل "كنترول شيت" عشان محدش يتوه مني) خلاصة الكلام تم تحديد نقطة الإنطلاق لتكون الخلية R10 البارامتر الثاني MATCH($M$3,'كنترول شيت'!رقم_الجلوس,0) دا الجزء المسئول عن حساب عدد صفوف الإزاحة نفم الأول يعني ايه إزاحة ؟ إزاحة يعني انتقال من نقطة لنقطة أخرى بمقدار معين (كلام كبير أنا نفسي محتاج أشرحه تاني عشان أفهمه) بالمثال نفهم المقال : يعني لما قلنا إن نقطة البداية هي الخلية R10 لما أقول عايزين نعمل انتقال أو إزاحة صف واحد لتحت ، تبقا الخلية المقصودة التي سيتم الإنتقال إليها هي R11 طيب لو قلنا عايزين نعمل إزاحة بمقدار 5 صفوف من نقطة الإنطلاق R10 ، يبقا في الحالة دي هننزل بعد نقطة الإنطلاق بمقدار 5 يبقا الخلية المقصودة R15 طيب الإزاحة بتكون لتحت بس ، لا ممكن تكون لفوق بس في الحالة دي الرقم بيكون بالسالب ..... يعني لو قلت عايز إزاحة من نقطة الإنطلاق R10 بمقدار -9 ، يبقا الخلية المقصودة R1 (يا ريت تكون وضحت فكرة الإزاحة) يرجع مرجوعنا لموضوعنا .. إحنا بنتكلم عن عدد صفوف الإزاحة المطلوبة من نقطة الإنطلاق ، وعشان كدا استخدمنا دالة البحث match ودي بتجيب رقم الصف اللي فيه رقم الجلوس ومن غير تفاصيل كتيره الدالة بتبحث عن رقم الجلوس في الخلية M3 ، بتبحث فين ؟؟ سؤال سهل الإجابة عليه : بتبحث في نطاق أرقام الجلوس ، والبحث بيكون تطابق تام عشان كدا استخدمنا صفر مثال : لو الخلية M3 مكتوب فيها رقم الجلوس 1985 ، الدالة هتاخد الرقم وتبحث عنه في أرقام الجلوس ، هتلاقي نتيجة الجزء ده في الحالة دي هو رقم 3 لأن دا فعلاً تالت رقم جلوس متسجل عندي في قايمة أرقام الجلوس ... يبقا استفدنا من الدالة Match إنها جابت لي رقم 3 ، والرقم ده بيمثل عدد صفوف الإزاحة ، يبقا من نقطة الإنطلاق ستتم الإزاحة بمقدار 3 صفوف لأسفل أي أن الخلية الجديدة التي سيتم الانتقال إليها هي R13 بكدا نكون وقفنا في الخلية R13 (ناخد كوباية عصير وإحنا واقفين في الخلية ..عشان أنا ريقي نشف ..) البارامتر الثالث -15 ودا المسئول عن عدد أعمدة الإزاحة وزي ما شرحنا إن فيه إزاحة عبر الصفوف لتحت (موجب) ولفوق (سالب) ، نفس الكلام مع الإزاحة عبر الأعمدة يعني لو كانت نقطة الإنطلاق R10 وحبيت أعمل إزاحة أو انتقال بمقدار 2 هتكون الخلية الجديدة ايه ؟ فكر شوية ..بالنسبة للأعمدة معروف إنها بأسماء الحروف A, B , C وهكذا فلما أكون في الخلية R10 وأنتقل بمقدار 2 يبقا هاعد بعد حرف R مرتين ..بعد R حرف الـ S دي أول إزاحة ، وبعد حرف الـ S حرف الـ T ودي تاني إزاحة ، يبقا الخلية المقصودة هي T10 ونفس الكلام اللي قلناه مع الصفوف هو نفس الكلام مع الأعمدة ، إننا لو انتقلنا بشكل عكسي يبقا الرقم بالسالب .. يعني لو كانت نقطة الإنطلاق R10 و حبيت أعمل إزاحة أو انتقال بمقدار -3 مثلاً ، يبقا نمشي بالعكس نشوف العمود اللي قبل الـ R اللي هي الـ Q ودي كدا أول إزاحة ، ونروح للعمود اللي قبل الـ Q اللي هو P ودي كدا تاني إزاحة ، ونروح للعمود اللي قبل الـ P اللي هو الـ O ودي ثالت وآخر إزاحة مطلوبة ، يبقا الخلية المقصودة هي O10 يرجع مرجوعنا لموضوعنا .. الرقم الموجود في المعادلة -15 هي عدد أعمدة الإزاحة اللي هتوصلنا للعمود المطلوب ألا وهو عمود الاسم نقطة الإنطلاق R10 هنعمل إزاحة بمقدار -15 هنوصل للعمود C وعشان منحسبش الإزاحة بشكل يدوي ممكن تعمل حيلة بسيطة ..تيجي في أي صف فارغ فوق البيانات وليكن الصف الأول في ورقة العمل المسماة "كنترول شيت" ونضع المعادلة التالية في أول خلية =COLUMN() ونسحب المعادلة لحد الخلية DH1 ، ودي عشان نعرف رقم العمود الحيلة اللي ممكن تقدر توصل بيها للرقم المطلوب لعدد أعمدة الإزاحة .... تشوف رقم عمود نقطة الإنطلاق العمود R رقمه كام ، والعمود المطلوب الوصول إليه العمود C رقمه كام ، وتطرح نقطة الوصول ناقص نقطة الإنطلاق (3 - 18 = -15) ، وبما إننا ماشيين عكس السير يبقا الرقم بالسالب -15 المعادلة الثانية في الخلية C9 =IF(OR($M$3<MIN(رقم_الجلوس),$M$3>MAX(رقم_الجلوس)),"",OFFSET('كنترول شيت'!$R$10,MATCH($M$3,'كنترول شيت'!رقم_الجلوس,0),8)) نفس المعادلة بالتمام والتمام ..التغيير بس في أعمدة الإزاحة نشوف إحنا عايز أي عمود ، أي أننا ننظر إلى عمود محطة الوصول (إحنا عايز درجة العربي ، ودرجة العربي في العمود رقم 26 ، ونقطة الإنطلاق العمود R اللي هو رقم 18 ) زي ما اتعلمنا وخدها قاعدة نقطة محطة الوصول (العمود المراد جلب البيانات منه) - نقطة الإنطلاق يبقا لو طبقنا القاعدة : 26 - 18 = 8 ، وهو دا عدد أعمدة الإزاحة وأخيراً أرجو أن أكون وفقت في توصيل المعلومة بشكل مبسط تقبلوا تحياتي Offset Function.rar
  25. أخي الفاضل حضرتك طرحت ملف مرفق وشكل للنتائج المتوقعة وتم العمل على هذا الأساس .. أعتقد إذا كان الطلب سيتمحور حول نقاط أخرى أفضل أن تطرح موضوع جديد .. اطرح موضوع جديد لكي تتم الاستفادة .. ويا ريت في الموضوع الجديد ترفق ملف يكون مشابه تماماً للملف الأصلي بالنسبة لسؤالك لو كان فيه تنسيق معين (فورمات جاهزة) هل تقصد أن هناك مصنف جاهز لعملية الإدخال أم أن هناك مصنفات بالفعل لكل موظف ؟ ولما لم تنوه عن ذلك في الموضوع من البداية ماذا تقصد بـ 70 متغير ؟هل تقصد 70 بيان في 70 عمود أم ماذا؟
×
×
  • اضف...

Important Information