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

أ / محمد صالح

أوفيسنا
  • Posts

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

  • Days Won

    198

كل منشورات العضو أ / محمد صالح

  1. جميعا بإذن الله تعالى
  2. أخطاء بسيطة جدا تدل على محاولة تطبيق الكود بدون فهم متغيراته وكائناته إن شاء الله يكون هذا هو المطلوب Sub ColllectShets() Dim ws As Worksheet, Sh As Worksheet Dim LR As Long, x As Long Dim Arr, i As Long Set ws = Sheets("مجمع الصفوف") Application.ScreenUpdating = False ws.Range("C10:p10000").Clear For Each Sh In Sheets(Array("1", "2", "كي جي1")) x = WorksheetFunction.CountA(Sh.Range("a10:a" & Sh.Range("a" & Rows.Count).End(xlUp).Row)) Sh.Range("C10:p" & Sh.Range("a" & Rows.Count).End(xlUp).Row).Copy If LR < 9 Then LR = 9 Else LR = ws.Range("D" & Rows.Count).End(xlUp).Row End If ws.Range("C" & LR + 1).PasteSpecial xlPasteFormats ws.Range("C" & LR + 1).PasteSpecial xlPasteValues ws.Range("p" & LR + 1).Resize(x).Value = Sh.Name Application.CutCopyMode = False For i = 10 To ws.Range("d" & Rows.Count).End(xlUp).Row ws.Range("C" & i) = i - 9 Next i Next Sh Application.ScreenUpdating = True End Sub لاحظ استعمالك للعمود C للحصول على آخر صف بالرغم من فراغ العمود C لذلك تم استعمال العمود D بدلا منه بالتوفيق
  3. عليكم السلام ورحمة الله وبركاته حسب فهمي للمطلوب يمكنك استخدام هذه المعادلة =IF(R7=300,N11*300,IF(N11<=5,N11*600,(5*600)+(N11-5)*300)) بالتوفيق
  4. عليكم السلام ورحمة الله زبركاته يمكنك استعمال هذه المعادلة في C2 =IFERROR(IF(G2>INDEX($N$2:$N$5,MATCH(I2,$O$2:$O$5,0)),0,INDEX($N$2:$N$5,MATCH(I2,$O$2:$O$5,0))-G2),"") مع سحب المعادلة لأسفل بالتوفيق
  5. الحمد لله الذي وفقنا جميعا للخير
  6. عليكم السلام ورحمة الله وبركاته لفصل التاريخ عن الوقت يمكنك استعمال النص إلى أعمدة text to columns وفي هذا الحالة يجب إضافة عمود واحد بين تاريخ الإصدار وتاريخ الصرف ليتم كتابة الوقت فيه أو يمكنك استعمال flashfill ولكن في هذ الحالة يجب إضافة عمودين بين تاريخ الإصدار وتاريخ الصرف حتى يمكن كتابة التاريخ في الأولى والوقت في الثانية أو يمكنك استعمال المعادلات لتقسيم النص مثل هذه المعادلة لجلب التاريخ فقط من عمود تاريخ الإصدار =MID(A3,1,10) وهذه المعادلة لجلب الوقت فقط من عمود تاريخ الإصدار =MID(A3,12,8) ويمكن تنفيذها على عمود تاريخ الصرف بالتوفيق
  7. عليكم السلام ورحمة الله وبركاته أخي الكريم حتى يتوافق ملفك مع أنظمة قواعد البيانات والمعادلات المتبعة في إكسل يمكنك جعل الأيام الموجودة في الأعمدة من J إلى AG على شكل صفوف أسفل بعضها وإضافة عمود التاريخ لتصبح الأعمدة في قاعدة بياناتك هي: م / اسم الدليل / لغة الدليل / اسم المنفذ / عدد صفحات الدليل الأساسي / التاريخ / عدد الصفحات المخططة / عدد الصفحات المنجزة / المتبقي / ملاحظات بهذا التنظيم يمكنك استعمال دوال مثلsumif أو sumifs بكل سهولة ويسر أو يمكنك استعمال هذه المعادلة ويبقى الملف على حاله في الخلية F4 =SUMPRODUCT($G$18:$AG$30, ($G$17:$AG$17=F$3)*($E$18:$E$30=$C4)) ويمكنك سحب المعادلة يسارا وأسفل مع ضرورة تصحيح عناوين أعمدة عدد الصفحات المخططة في الأيام حيث أنها مكتوب بها المخططة مرتين بالتوفيق
  8. يمكنك حذف هذا السطر If Target.Column = 2 Then وكتابة هذا السطر If Target.Column > 3 and target.column < 14 and target.row > 2 and target.row < 11 Then أو هذا السطر If Not Application.Intersect(Target, Range("D3:M10")) Is Nothing Then بدلا منه بالتوفيق
  9. أخي الفاضل ربما إذا حددت لي ما السطر الغامض عليك في الكود أوضحه لك أما إذا كنت لا تعرف شيئا عن الأكواد فأنصحك بمتابعة هذه الدورة عن الأكواد من الصفر أولا ثم مراجعة أي كود مكتوب https://www.officena.net/ib/index.php?showtopic=39323 لأنه من الواضح لي أن: كود جلب أسماء الأبناء عمله بدلا عنك أستاذ Lion heart وهذا الكود الذي يتأسس عليه الكود الأول قمت به لك ونحن هنا للمرة المليون لا نقوم بعمل برامج جاهزة للناس مجانا (ولا تبخسوا الناس أشياءهم) خالص الدعوات بالتوفيق
  10. أي إجراء مثل sub tar7eel غير مرتبط بحدث مثل تغير الخلايا داخل الشيت أو فتح المصنف أو غيرها من الأحداث يجب ربطه بزر أو بشكل عن طريق asign to macro الموجودة في كلك يمين على الشكل أو الزر
  11. ربما إذا عرفنا في اي نقطة توقفت يمكننا المساعدة تذكر جيدا أن: أول خطوة في نقل الكود لملف جديد هو فهم الكود ومعرفة المتغيرات والكائنات المستعملة فيه وأن الهدف من المنتدى هو التعلم وليس الحصول على ما نحتاجه جاهزا من غيرنا
  12. يمكنك استعمال هذه المعادلة في الخلية B2 =VLOOKUP(A2,'2'!$A$1:$Z$25,MATCH($B$1,'2'!$1:$1,0),FALSE) تم استبدال رقم العمود بناتج دالة ماتش التي تبحث عن مكان كلمة التحقيق $b$1 في الصف 1:1 بالتوفيق
  13. يمكنك استعمال المعادلة التالية في الخلية H5 =IF(OR(F5="",G5=""),"",G5-F5+1) وتعني إن كانت إحدى الخليتين فارغة تكون النتيجة فارغة وإلا يقوم بطرح الأكبر - الأصغر ويضيف يوم البداية لأنه محسوب بيوم مع سحبها لأسفل للتطبيق على الخلايا بالأسفل مع ملاحظة أن التاريخين بالصف الأول 6 مارس 2022 و 6 أغسطس 2022 وبينهما 154 يوما وهي كالتالي: 26 و 30 و 31 و 30 و 31 و 6 وليست من 3 يونيو إلى 8 يونيو حتى يكون الفرق بينهم 6 أيام بالتوفيق
  14. كل شيء ممكن المهم إرفاق الملف او مثال منه وتوضيح المطلوب بمنتهى التفصيل
  15. يمكنك حذف الخلية الصفراء المدمجة أولا ثم استعمال هذا الكود وربطه بزر أمر أو شكل Sub tar7eel() Dim r As Long, f As Long Hoja2.Range("a2:b" & Hoja2.Cells(Rows.Count, 1).End(3).Row).ClearContents Hoja2.Range("d2:d" & Hoja2.Cells(Rows.Count, 1).End(3).Row).ClearContents f = 2 For r = 2 To Hoja1.Cells(Rows.Count, 1).End(3).Row myParent = Hoja1.Range("j" & r): newparent = Hoja1.Range("j" & r + 1) If myParent <> newparent Then Hoja2.Range("a" & f) = f - 1 Hoja2.Range("b" & f) = Hoja1.Range("j" & r) Hoja2.Range("d" & f) = Hoja1.Range("d" & r) f = f + 1 End If Next r MsgBox "Done by mr-mas.com" End Sub ملحوظة: تم استعمال الاسم البرمجي للشيتات وهو Hoja1 و Hoja2 وهو الاسم الموجود في محرر vba وليس الاسم الذي يظهر في تبويب الشيتات بالتوفيق
  16. بارك الله فيك لحبك الخير للغير ويمكن اختصار الحلقات التكرارية للحصول على المجموعين بهذين السطرين Me.TextBox7.Value = WorksheetFunction.SumIf(suppliersSheet.Range("A:A"), Me.TextBox1.Value, suppliersSheet.Range("C:C")) Me.TextBox8.Value = WorksheetFunction.SumIf(suppliersSheet.Range("A:A"), Me.TextBox1.Value, suppliersSheet.Range("D:D")) بالتوفيق
  17. ربما يكون تنسيق بعض الخلايا (نص Text) فهذا يجعل الاكسل لا يجمعها بالتوفيق
  18. هذا ملف يحتوي على تصميم شكل النتيجة فقط أين محاولاتك للوصول للمطلوب؟ وما المشكلة التب واجهتك في تنفيذ مطلوبك؟ أم أنك تريد الحصول على برنامج جاهز لهذا الغرض؟؟؟
×
×
  • اضف...

Important Information