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

أ / محمد صالح

أوفيسنا
  • Posts

    4,142
  • تاريخ الانضمام

  • Days Won

    163

Community Answers

  1. أ / محمد صالح's post in التعديل على كود الدوائر الحمراء was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    حسب فهمي للمطلوب
    جرب تغيير هذا السطر
    For Cell = startRow To .Range(myArray(x) & startRow).End(xlDown).Row Step 2 إلى
    For Cell = startRow To .Range(myArray(x) & Rows.Count).End(xlUp).Row Step 2 بالتوفيق
  2. أ / محمد صالح's post in زراعة ملف للحماية was marked as the answer   
    لا تتعب نفسك
    الاكسل ضعيف في الحماية
    اقل من الأكسس
  3. أ / محمد صالح's post in طلب مساعدة في جلب محتوى خلية الى التكست بوكس was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    مادامت النتائج في النموذج صحيحة
    إذن ينبغي جعل معادلات الشيت مثل النموذج
    تم ضبط معزم معادلات الشيت في حالة وجود خطأ في البحث باستخدام Iferror
    وتم تعديل معادلات الخلايا H19 & I19 & L19 وإضافة معادلات في H20 & I20 ليتم الحساب بعد إضافة الدرجة
    مع الانتباه لضرورة حذف قيمة F20 في النموذج لأنها موجودة ضمن الراتب الخام L19
    مع ملاحظة أن الخلية C19 دخلت في الحسابات مرتين في منحة التأهيل ومنحة الدعم مرة قبل الدرجة ومرة بعد الدرجة
    بالتوفيق
     
    vba 2023 office.xlsm
  4. أ / محمد صالح's post in التحقق من صحة البيانات was marked as the answer   
    على فرض ان الخلية المطلوبة a1 أو نطاق معين أوله الخلية A1
    نقوم بتحديد النطاق ثم نضغط على data validation من تبويب data
    ثم نختار custom
    ونكتب هذه المعادلة في التحقق من الصحة
    =OR(A1<=4,A1="غ") سيتم التطبيق على جميع خلايا النطاق المحدد
    بالتوفيق
  5. أ / محمد صالح's post in ارسالة رسالة من الاكسل للواتس اب بناء على تاريخ معين was marked as the answer   
    جرب هذا المرفق
    يجب تثبيت واتساب للكمبيوتر وربطه بحساب واتساب الخاص بك أولا ثم فتح الواتس اب قبل الضغط على زر الإرسال
    ثم الضغط على الزر المرتبط بماكرو الارسال
    سيتم الارسال لكل من هو مكتوب امامه تاريخ اليوم ولم يتم الارسال له من قبل (خلية تم الرسال فارغة)
    مع التنبيه على كتابة رقم الموبايل مع مفتاح الدولة
    ويمكن تشغيل الكود بمجرد فتح هذا الشيت (في خدث فتح الشيت worksheet_open) ولكن الأفضل بعد الضغط على الزر (فربما لم تفتح الواتس اب أو ربما يوجد بيان ناقص في البيانات)
    بالتوفيق
     
    برنامج الصيانة.xlsb
  6. أ / محمد صالح's post in لماذا الملفات ذات الامتداد XLSM او XLSX لا تتعامل مع الدوال التي اسمها يحتوي على ارقام was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    يرجع السبب إلى وجود خلية بنفس الاسم في الامتدادات الحديثة xlsx و xlsm وغيرها
    حيث أنه من المعروف أن آخر خلية في اكسل 2003 وما فبله أو الامتداد xls هي IV65536 أما في اكسل 2007 وما بعده هي XFD1,048,576
    والحل تغيير اسم الدالة المعرفة بإضافة _ (الشرطة السفلية اندر سكور) إلى نهاية الاسم ليصبح مثلا
    Function IRG2008_(soumis) واستعمال الدالة في الخلايا هكذا
    =IRG2008_(A1) أو استعمال 4 حروف في اسم الدالة
    المهم إيجاد اختلاف بين اسم الخلية واسم الدالة المعرفة 
    بالتوفيق
  7. أ / محمد صالح's post in حذف الاصفار من يمين العدد was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    على افتراض أن اكبر عدد أصفار هو 5 يمكنك استعمال هذه المعادلة
    =E4/IF(MOD(E4,100000)=0,100000,IF(MOD(E4,10000)=0,10000,IF(MOD(E4,1000)=0,1000,IF(MOD(E4,100)=0,100,IF(MOD(E4,10)=0,10,1))))) وإذا زاد العدد عن 5 يمكنك إضافة شرط في بداية المعادلة مع زيادة عدد الأصفار في mod وفي ناتج if إذا تحقق الشرط وزيادة أقواس الإغلاق
    وتم مراعاة ألا يكون العدد ينتهي بأصفار على اليمين
    بالتوفيق
  8. أ / محمد صالح's post in الكتابة على سطر واحد فقط داخل الخلية was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    يمكنك استعمال معادلة الاستبدال التالية
    =SUBSTITUTE(B2,CHAR(10)," ") بالتوفيق
  9. أ / محمد صالح's post in استخراج تاريخ التعين was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    جرب استعمال هذه المعادلة في الخلية I2
    =DATE(YEAR(H2)-L2,MONTH(H2)-K2,DAY(H2)-J2+1)  
    كما تم تعديل معادلات الفرق بين تاريخين في المرفق
    بالتوفيق
    استخراج تاريخ التعين.xlsx
  10. أ / محمد صالح's post in هل يمكن تغيير اسم الصفحة في المعادلات باسم خلية مجاورة was marked as the answer   
    يمكنك استعمال هذه المعادلة في الخلية B3
    =INDIRECT("'"&A3&"'!B2") تم استعمال الفاصلة المفردة بحيث إذا كان اسم الشيت يحتوي على مسافة
    وإذا لم يكن يحتوي على مسافة فيمكن اختصار المعادلة 
    =INDIRECT(A3&"!B2") مع سحب المعادلة لأسفل
    بالتوفيق
  11. أ / محمد صالح's post in كود عند الضغط دبل كلك على أي خلية من خلايا محددة تكون قيمتها Negative دون غيرها was marked as the answer   
    يمكنك استعمال هذه المعادلة في الخلية C3
    =IF(RIGHT(D3,8)="المحترمة",": الدكتورة المحاضرة",": الطبيب المحاضر") وتعديل هذا الكود في خدث قبل الدبل كلك
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("g10:j15")) Is Nothing Then Application.Calculation = xlManual Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Unprotect Password:="123" Target.Value = "Negative" ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:= _ False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=False, AllowInsertingColumns:=True, AllowInsertingRows _ :=True, AllowInsertingHyperlinks:=True Application.Calculation = xlAutomatic Application.EnableEvents = True Application.ScreenUpdating = True End If End Sub بالتوفيق
  12. أ / محمد صالح's post in كيف أضيف معادلة في الإكسل was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
     
    بالنسبة لدالة xlookup
    إن شاء الله يفيدك هذا الموضوع
    وبالنسبة لدالة ifs فلا أعتقد أنه تم إيجاد بديل لها غير دوال if المتداخلة
    بالتوفيق
  13. أ / محمد صالح's post in طرح مساحات السهم والقيراط والفدان في اعمدة منفصلة was marked as the answer   
    يمكنك استعمال هذه المعادلة في K7 لطرح الأسهم
    =IF(C7<G7,24,0)+C7-G7 وهذه في L7 لطرح القراريط
    =IF(C7<G7,-1,0)+IF(D7<H7,24,0)+D7-H7 وهذه في M7 لطرح الأفدنة
    =IF(D7*24+C7<H7*24+G7,-1,0)+E7-I7 مع سحب المعادلات لأسفل
    بالتوفيق
  14. أ / محمد صالح's post in التقريب لاقرب نصف او عدد صحيح فى خلية الدرجة الاصلية was marked as the answer   
    أعتقد أنك تريد التقريب لأعلى نصف أو واحد صحيح
    وليس لأقرب نصف أو واحد صحيح
    على العموم
    لأقرب نصف نستعمل هذه المعادلة في اللغة العربية مثلا في الخلية M6
    =MROUND((L6/2)*M$4/100,0.5) وهي تقوم بتقريب اقل من 0.25 إلى 0 وتقريبا من 0.25 حتى 0.74 إلى 0.5 وأكثر من 0.75 إلى الواحد الصحيح 
    وهي تعمل على إكسل 2007 وما بعده ولمن يستخدم إكسل 2003 يمكن استعمال هذه الدالة المعرقة masround
    Function masround(n As Double, m As Double) As Double masround = IIf(n - m * (n \ m) >= m / 2, m * (n \ m + 1), m * (n \ m)) End Function والتقريب لأعلى نصف نستعمل هذه المعادلة
    =CEILING((L6/2)*M$4/100,0.5) وهذه المعادلة تقوم بتقريب اقل من 0.5 إلى 0.5 وأكبر من 0.5 إلى واحد صحيح
     
    ويمكن نسخ المعادلة في جميع أعمدة الدرجة الأصلية وسحبها لأسفل
    مع مراعاة الفاصلة او الفاصلة المنقوطة في المعادلات 
    بالتوفيق
  15. أ / محمد صالح's post in داله if بعدة شروط was marked as the answer   
    بعد إذن حبيبنا أستاذ علي محمد علي
    يمكن اختصار المعادلة إلى هذه في الخلية C1
    =IF(B1>=90,1,IF(B1>=70,2,IF(B1>=50,3,IF(B1>=40,4,IF(B1>=1,5,6))))) بالتوفيق
  16. أ / محمد صالح's post in مطلوب فرز بالتاريخ was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    إن شاء الله تفيدك هذه المعادلات البسيطة
    Large
    Small
    index & match
    بالتوفيق
    أعلى وأقل الأيام حضورا.xlsx
  17. أ / محمد صالح's post in المساعدة في ترتيب الصفوف was marked as the answer   
    عليكم السلام ورحمة الله وبركاته
    إذا كان الهدف هو مجرد ترتيب بالمعادلات
    قيمكنك استعمال هذه المعادلة في الخلية F4 للحصول على نفس المجموعة مرتبة
    =INDEX($A$4:$C$11,MATCH(ROW()-3,$A$4:$A$11,0),COLUMN()-5) مع ملاحظة بداية ونهاية نطاق البحث A4:C11
    وعدد الصفوف الفارغة قبل مكان أول نتيجة (F4) == 3
    وخلايا الفهرس غير المرتب الذي يتم التريب عليه A4:A11
    وعدد الأعمدة الفارغة قبل مكان أول نتيجة == 5
    مع سجب المعادلة لأسفل ولليمين
    بالتوفيق
  18. أ / محمد صالح's post in حساب مدة الخدمة was marked as the answer   
    جرب استعمال هذه المعادلة في الخلية G6
    =IF(B6="","",IF(DATEDIF(D6,E6,"md")>=30,IF(DATEDIF(D6,E6,"ym")+1=12,0,DATEDIF(D6,E6,"ym")+1),DATEDIF(D6,E6,"ym"))) وهذه في الخلية F6
    =IF(B6="","",IF(DATEDIF(D6,E6,"ym")+1=12,1,0))+DATEDIF(D6,E6,"y") بالتوفيق
  19. أ / محمد صالح's post in تعبئة الخلايا الفارغة في الإكسيل was marked as the answer   
    الكود السابق يملأ الخلايا الفارغة كلها بدون شروط
    لذا يلزم إضافة شرط
    يمكنك استعمال هذا الاجراء
    تم إضافة شرط أن تكون خلية العمود B في نفس الصف غير فارغة
    Sub masFillBlanks() Dim rng As Range For Each rng In Range("H11:AT75") If Range("b" & rng.Row) <> "" And IsEmpty(rng) Then rng.Value = "-" Next MsgBox "Done by mr-mas.com" End Sub وهذا نفس الاجراء بطريقة أخرى
    Sub masFillBlanks2() Dim arr, r As Long, c As Long arr = Range("H11:AT75").Value For r = LBound(arr, 1) To UBound(arr, 1) If Range("b" & r + 10) <> "" Then For c = LBound(arr, 2) To UBound(arr, 2) If IsEmpty(arr(r, c)) Then Cells(r + 10, c + 7) = "-" Next c End If Next r MsgBox "Done by mr-mas.com" End Sub وأنصح بعدم وجود صفوف أو أعمدة زيادة مثل ما بعد الصف 47 وlما بعد العمود AN
    بالتوفيق
  20. أ / محمد صالح's post in إدراج صورة عن طريق كتابة رقمها was marked as the answer   
    المنتدى به كنوز رائعة
    تحتاج فقط من يبحث عنها
    https://www.officena.net/ib/search/?q=صورة الموظف&quick=1&type=forums_topic&nodes=135&search_and_or=and
    بالتوفيق
  21. أ / محمد صالح's post in ترحيل ارقام من شيت الى شيت على اساس رقم المستند was marked as the answer   
    أخي الكريم صاحب الموضوع
    اول خطوة لتعديل الكود فهمه وفهم متغيراته 
    والكود القديم يقوم بنقل قيمة العمود J إلى العمود 19 بعد العمود الأول في شيت البيانات
    والمطلوب إضافة نفس الكود عند تعديل العمود G ويتم نقله إلى العمود 16 بعد العمود الأول في شيت البيانات
    لذلك يصبح الكود بعد التعديل
    Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim ws As Worksheet Set ws = Sheets("البيانات") Dim c, x Application.ScreenUpdating = False If Not Intersect(Target, Range("g8:g1000")) Is Nothing Then c = Target.Offset(, -9) x = Application.Match(c, ws.Columns(1), 0) ws.Cells(x, 1).Offset(, 16) = Target Ebd If If Not Intersect(Target, Range("j8:j1000")) Is Nothing Then c = Target.Offset(, -9) x = Application.Match(c, ws.Columns(1), 0) ws.Cells(x, 1).Offset(, 19) = Target End If Application.ScreenUpdating = True End Sub لاحظ تم تكرار سطور الشرط للعمودين g و j مع تغيير رقم العمود المرحل إليه مرة 19 ومرة 16
    بالتوفيق
  22. أ / محمد صالح's post in ترحيل ارقام من شيت الى شيت على اساس رقم المستند was marked as the answer   
    أخي الكريم صاحب الموضوع
    اول خطوة لتعديل الكود فهمه وفهم متغيراته 
    والكود القديم يقوم بنقل قيمة العمود J إلى العمود 19 بعد العمود الأول في شيت البيانات
    والمطلوب إضافة نفس الكود عند تعديل العمود G ويتم نقله إلى العمود 16 بعد العمود الأول في شيت البيانات
    لذلك يصبح الكود بعد التعديل
    Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Dim ws As Worksheet Set ws = Sheets("البيانات") Dim c, x Application.ScreenUpdating = False If Not Intersect(Target, Range("g8:g1000")) Is Nothing Then c = Target.Offset(, -9) x = Application.Match(c, ws.Columns(1), 0) ws.Cells(x, 1).Offset(, 16) = Target Ebd If If Not Intersect(Target, Range("j8:j1000")) Is Nothing Then c = Target.Offset(, -9) x = Application.Match(c, ws.Columns(1), 0) ws.Cells(x, 1).Offset(, 19) = Target End If Application.ScreenUpdating = True End Sub لاحظ تم تكرار سطور الشرط للعمودين g و j مع تغيير رقم العمود المرحل إليه مرة 19 ومرة 16
    بالتوفيق
  23. أ / محمد صالح's post in نقل القيمة الموجودة فى خلية بمجرد تحديدها فى نطاق معين was marked as the answer   
    يفترض أنه تم حل شيء شبيه بهذا لك قبل ذلك
    فأين محاولتك والتي تدل على الاستفادة مما سبق تعلمه؟
  24. أ / محمد صالح's post in ملف اكسل كلمة المرور was marked as the answer   
    يمكنك استخدام برنامج aopr
    بالبحث عن هذه الحروف في جوجل
    بالتوفيق
  25. أ / محمد صالح's post in ملف اكسل كلمة المرور was marked as the answer   
    يمكنك استخدام برنامج aopr
    بالبحث عن هذه الحروف في جوجل
    بالتوفيق
×
×
  • اضف...

Important Information