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

أ / محمد صالح

أوفيسنا
  • Posts

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

  • Days Won

    195

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

  1. عليكم السلام ورحمة الله وبركاته لفصل التاريخ عن الوقت يمكنك استعمال النص إلى أعمدة text to columns وفي هذا الحالة يجب إضافة عمود واحد بين تاريخ الإصدار وتاريخ الصرف ليتم كتابة الوقت فيه أو يمكنك استعمال flashfill ولكن في هذ الحالة يجب إضافة عمودين بين تاريخ الإصدار وتاريخ الصرف حتى يمكن كتابة التاريخ في الأولى والوقت في الثانية أو يمكنك استعمال المعادلات لتقسيم النص مثل هذه المعادلة لجلب التاريخ فقط من عمود تاريخ الإصدار =MID(A3,1,10) وهذه المعادلة لجلب الوقت فقط من عمود تاريخ الإصدار =MID(A3,12,8) ويمكن تنفيذها على عمود تاريخ الصرف بالتوفيق
  2. عليكم السلام ورحمة الله وبركاته أخي الكريم حتى يتوافق ملفك مع أنظمة قواعد البيانات والمعادلات المتبعة في إكسل يمكنك جعل الأيام الموجودة في الأعمدة من J إلى AG على شكل صفوف أسفل بعضها وإضافة عمود التاريخ لتصبح الأعمدة في قاعدة بياناتك هي: م / اسم الدليل / لغة الدليل / اسم المنفذ / عدد صفحات الدليل الأساسي / التاريخ / عدد الصفحات المخططة / عدد الصفحات المنجزة / المتبقي / ملاحظات بهذا التنظيم يمكنك استعمال دوال مثلsumif أو sumifs بكل سهولة ويسر أو يمكنك استعمال هذه المعادلة ويبقى الملف على حاله في الخلية F4 =SUMPRODUCT($G$18:$AG$30, ($G$17:$AG$17=F$3)*($E$18:$E$30=$C4)) ويمكنك سحب المعادلة يسارا وأسفل مع ضرورة تصحيح عناوين أعمدة عدد الصفحات المخططة في الأيام حيث أنها مكتوب بها المخططة مرتين بالتوفيق
  3. يمكنك حذف هذا السطر 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 بدلا منه بالتوفيق
  4. أخي الفاضل ربما إذا حددت لي ما السطر الغامض عليك في الكود أوضحه لك أما إذا كنت لا تعرف شيئا عن الأكواد فأنصحك بمتابعة هذه الدورة عن الأكواد من الصفر أولا ثم مراجعة أي كود مكتوب https://www.officena.net/ib/index.php?showtopic=39323 لأنه من الواضح لي أن: كود جلب أسماء الأبناء عمله بدلا عنك أستاذ Lion heart وهذا الكود الذي يتأسس عليه الكود الأول قمت به لك ونحن هنا للمرة المليون لا نقوم بعمل برامج جاهزة للناس مجانا (ولا تبخسوا الناس أشياءهم) خالص الدعوات بالتوفيق
  5. أي إجراء مثل sub tar7eel غير مرتبط بحدث مثل تغير الخلايا داخل الشيت أو فتح المصنف أو غيرها من الأحداث يجب ربطه بزر أو بشكل عن طريق asign to macro الموجودة في كلك يمين على الشكل أو الزر
  6. ربما إذا عرفنا في اي نقطة توقفت يمكننا المساعدة تذكر جيدا أن: أول خطوة في نقل الكود لملف جديد هو فهم الكود ومعرفة المتغيرات والكائنات المستعملة فيه وأن الهدف من المنتدى هو التعلم وليس الحصول على ما نحتاجه جاهزا من غيرنا
  7. يمكنك استعمال هذه المعادلة في الخلية B2 =VLOOKUP(A2,'2'!$A$1:$Z$25,MATCH($B$1,'2'!$1:$1,0),FALSE) تم استبدال رقم العمود بناتج دالة ماتش التي تبحث عن مكان كلمة التحقيق $b$1 في الصف 1:1 بالتوفيق
  8. يمكنك استعمال المعادلة التالية في الخلية H5 =IF(OR(F5="",G5=""),"",G5-F5+1) وتعني إن كانت إحدى الخليتين فارغة تكون النتيجة فارغة وإلا يقوم بطرح الأكبر - الأصغر ويضيف يوم البداية لأنه محسوب بيوم مع سحبها لأسفل للتطبيق على الخلايا بالأسفل مع ملاحظة أن التاريخين بالصف الأول 6 مارس 2022 و 6 أغسطس 2022 وبينهما 154 يوما وهي كالتالي: 26 و 30 و 31 و 30 و 31 و 6 وليست من 3 يونيو إلى 8 يونيو حتى يكون الفرق بينهم 6 أيام بالتوفيق
  9. كل شيء ممكن المهم إرفاق الملف او مثال منه وتوضيح المطلوب بمنتهى التفصيل
  10. يمكنك حذف الخلية الصفراء المدمجة أولا ثم استعمال هذا الكود وربطه بزر أمر أو شكل 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 وليس الاسم الذي يظهر في تبويب الشيتات بالتوفيق
  11. بارك الله فيك لحبك الخير للغير ويمكن اختصار الحلقات التكرارية للحصول على المجموعين بهذين السطرين 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")) بالتوفيق
  12. ربما يكون تنسيق بعض الخلايا (نص Text) فهذا يجعل الاكسل لا يجمعها بالتوفيق
  13. هذا ملف يحتوي على تصميم شكل النتيجة فقط أين محاولاتك للوصول للمطلوب؟ وما المشكلة التب واجهتك في تنفيذ مطلوبك؟ أم أنك تريد الحصول على برنامج جاهز لهذا الغرض؟؟؟
  14. إذا كان أحدنا دقيقا في عرض مطلوبه فإنه يساعد غيره في أن يصل للمطلوب ولا يضيع الوقت والجهد هباء ربما ينجزها لحضرتك أحد الإخوة فقد أصبح المطلوب في غاية السهولة والوضوح
  15. ربما تقصد تحويل الأرقام الموجودة في الخلايا من D4:L34 إلى الأسماء التي تقابل نفس الرقم في نفس العمود في الخلايا من D36:L65 وأيضا العكس تحويل الأرقام الموجودة في الخلايا من D36:L65 إلى الأسماء التي تقابل نفس الرقم في نفس العمود في الخلايا من D4:L34
  16. الحمد لله الذي وفقني في مساعدتك في مهمتين اللصق كقيم غند الضفط على زر أو باستخدام CTRL+V وعذرا لضيق وقتي فربما يتحفنا بالثالثة (اللصق كقيم عند الضغط على زر لصق العادي) أحد الإخوة بالتوفيق للجميع
  17. جميل جدا بارك الله لك بإذن الله إلى مزيد من التقدم في البرمجة لتصنع للمنتدى آلة حاسبة تراعي ترتيب أولويات العمليات الحسابية فمعروف أن الضرب والقسمة مقدم على الجمع والطرح قمثلا: 5 + 2 * 3 ناتجها 11 وليس 21 بالتوفيق في القادم
  18. حتى نصل للمطلوب: رجاء توضيح على أي أساس تم وضع تواريخ العلاوة في العمود A ؟ وكيف يكون ترتيبها عكس الشهور ؟
  19. إذا تأملت ودرست الكود فستصل بإذن الله إلى الحلقة التكرارية التي تحدد الأعمدة هي For c = 1 To 6 والذي يحدد مكان وضع القيمة أو العمود الجديد (هو نفس عدد العمود الحالي مضافا إليه 7 ) newcol = c + 7 نساعد بعضنا هنا بغرض التعلم ومن يتعلم اليوم يساعد غيره غدا أما إن كان الهدف هو الحصول على المطلوب جاهزا فهذا يجب أن يكون بمقابل (ولا تبخسوا الناس أشياءهم) بالتوفيق
  20. لعل هذا يكون هو المطلوب تم وضع كود في حدث بداية النموذج لوضع قائمة بأسماء الشيتات في الكومبوبوكس وتعديل زر الترحيل بالتوفيق الترقيم التلقائي والترحيل للشيت المحدد.xls
  21. لعل هذا هو المطلوب تم استعمال الخلية T1 لاختيار طريقة الطباعة فردي أو جماعي تغيير كود الاجراء text إلى Sub text() printtype = N.Range("t1") If printtype = "فردي" Then x = InputBox("من فضلك ادخل الرقم القومى مع تحياتى اشرف صبور ") N.Range("t2") = x On Error GoTo mm i = Application.WorksheetFunction.Match(N.Range("t2"), DB.Range("c:c"), 0) Call filldata(i) N.PrintPreview Call cler Exit Sub mm: MsgBox "الرقم القومى غير موجود مع تحياتى اشرف صبور" Else lr = DB.Cells(Rows.Count, 3).End(3).Row For r = 13 To lr filldata (r) ActiveSheet.PrintOut Next r Call cler End If End Sub وفي حالة اختيار جماعية يتم طباعة الأرقام من الصف 13 إلى آخر صف مكتوب فيه lr = DB.Cells(Rows.Count, 3).End(3).Row For r = 13 To lr وحتى لا نكرر كود تعبئة الخلايا تم فصل كود التعبئة في إجراء منفصل مع تمرير رقم الصف المراد طباعته إليه Sub filldata(i) N.Range("c7") = DB.Cells(i, "g") N.Range("c8") = DB.Cells(i, "ci") N.Range("g7") = DB.Cells(i, "b") N.Range("g8") = DB.Cells(i, "c") N.Range("c9") = DB.Cells(i, "f") N.Range("c13") = DB.Cells(i, "i") N.Range("e13") = DB.Cells(i, "j") N.Range("b16") = DB.Cells(i, "l") N.Range("c16") = DB.Cells(i, "m") N.Range("d16") = DB.Cells(i, "n") N.Range("b22") = DB.Cells(i, "af") N.Range("b23") = DB.Cells(i, "ao") N.Range("b24") = DB.Cells(i, "ax") N.Range("b25") = DB.Cells(i, "bg") N.Range("d20") = DB.Cells(i, "q") N.Range("d21") = DB.Cells(i, "y") N.Range("d22") = DB.Cells(i, "ah") N.Range("d23") = DB.Cells(i, "aq") N.Range("d24") = DB.Cells(i, "az") N.Range("d25") = DB.Cells(i, "bi") N.Range("d26") = DB.Cells(i, "bq") N.Range("d27") = DB.Cells(i, "by") N.Range("d29") = DB.Cells(i, "cf") N.Range("g20") = DB.Cells(i, "w") N.Range("g21") = DB.Cells(i, "ae") N.Range("g22") = DB.Cells(i, "an") N.Range("g23") = DB.Cells(i, "aw") N.Range("g24") = DB.Cells(i, "bf") N.Range("g25") = DB.Cells(i, "bo") N.Range("g26") = DB.Cells(i, "bw") N.Range("g27") = DB.Cells(i, "ce") N.Range("g28") = DB.Cells(i, "k") N.Range("f29") = DB.Cells(i, "cg") N.Range("e20") = DB.Cells(i, "s") N.Range("e21") = DB.Cells(i, "aa") N.Range("e22") = DB.Cells(i, "aj") N.Range("e23") = DB.Cells(i, "as") N.Range("e24") = DB.Cells(i, "bb") N.Range("e25") = DB.Cells(i, "bk") N.Range("e26") = DB.Cells(i, "bs") N.Range("e27") = DB.Cells(i, "ca") N.Range("f20") = DB.Cells(i, "t") N.Range("f21") = DB.Cells(i, "ab") N.Range("f22") = DB.Cells(i, "ak") N.Range("f23") = DB.Cells(i, "at") N.Range("f24") = DB.Cells(i, "bc") N.Range("f25") = DB.Cells(i, "bl") N.Range("f26") = DB.Cells(i, "bt") N.Range("f27") = DB.Cells(i, "cb") N.Range("c31") = DB.Cells(i, "cl") N.Range("g31") = DB.Cells(i, "cm") End Sub وأنصح دائما بدراسة وفهم الكود ومتغيراته وكائناته جيدا قبل تطبيقه على شيت آخر بالتوفيق طباعة فردي أو جماعي.xlsm
  22. حسب فهمي للمطلوب : وهو تحويل الأرقام الموجودة في ورقة1 من D4:L65 إلى ما يقابلها من أسماء في نفس المدى ووضغها في شيت ورقة2 . مع العلم أن الأسماء سواء في ورقة1 أو ورقة2 اعتمادا على رقم المسلسل للوصول للمطلوب بإذن الله يمكنك: * حذف المحتويات للخلايا D4:L65 * حذف تنسيقات لون الخلفية ولن النص في نفس النطاق * استعمال المعادلة التالية في الخلية D4 =IFERROR(VLOOKUP(ورقة1!D4:L65,$B$4:$C$65,2,0),"ح") * إضافة تنسيق شرطي للخلية D4 باستعمال المعادلة التالية =COUNTIF($D4:$L4,D4)>1 ويطبق على المدى =$D$4:$L$65 ولا أدري ما سبب الصف الفارغ بين مسلسل 31 و 32 بالتوفيق
×
×
  • اضف...

Important Information