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

Saleh Ahmed Rabie

02 الأعضاء
  • Posts

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

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

  • Days Won

    3

كل منشورات العضو Saleh Ahmed Rabie

  1. وعليكم السلام ورحمة الله وبركاته يمكنك استخدام الدالة التالية في خلية E2: =DATEDIF(TODAY(),DATE(سنة المعينة, شهر المعين, يوم المعين),"d") حيث تقوم هذه الدالة بحساب عدد الأيام بين تاريخ اليوم وتاريخ المعين الذي تحدده في الصيغة. يمكنك استبدال "سنة المعينة" و"شهر المعين" و"يوم المعين" بالقيم المعينة التي تريدها.
  2. وعليكم السلام ورحمة الله وبركاته يمكنك استخدام الصيغة التالية في الخلية E2: =IFERROR(IF(AND(C2>0, A2=0, B2="اسم المطلوب"), IF(ROW(C2)=2, C2*D2, OFFSET(D2, -1, 0)*C2), 0), 0) هذه الصيغة ستتحقق من أن قيمة في عمود C أكبر من صفر، وأن قيمة في عمود A تساوي صفر (التاريخ السابق)، وأن قيمة في عمود B تساوي "اسم المطلوب". إذا تم تحقيق هذه الشروط، سيتم ضرب قيمة في عمود C بقيمة في عمود D، وإلا ستكون القيمة صفر. ويمكنك استخدام الكود التالي في VBA لتنفيذ النفس العملية: Sub CalculateValue() Dim lastRow As Integer Dim i As Integer lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow If Cells(i, 3).Value > 0 And Cells(i, 1).Value = 0 And Cells(i, 2).Value = "اسم المطلوب" Then If i = 2 Then Cells(i, 5).Value = Cells(i, 3).Value * Cells(i, 4).Value Else Cells(i, 5).Value = Cells(i - 1, 5).Value * Cells(i, 3).Value End If Else Cells(i, 5).Value = 0 End If Next i End Sub يقوم هذا الكود بتنفيذ العملية المطلوبة في العمود E بناءً على شروط معينة في الأعمدة A، B و C. يمكنك تشغيل هذا الكود في VBA Editor في Excel عن طريق الضغط على Alt + F11 ولصق الكود في نافذة الكود الخاصة بالورقة التي ترغب في تطبيق العملية عليها، ثم تشغيل الكود.
  3. يمكنك استخدام الكود التالي في VBA لحساب الفرق بين تاريخين بالأيام والشهور والسنوات ويمكن استخدامه في جميع إصدارات Excel: Function DateDiffInDays(startDate As Date, endDate As Date) As Integer DateDiffInDays = DateDiff("d", startDate, endDate) End Function Function DateDiffInMonths(startDate As Date, endDate As Date) As Integer DateDiffInMonths = DateDiff("m", startDate, endDate) End Function Function DateDiffInYears(startDate As Date, endDate As Date) As Integer DateDiffInYears = DateDiff("yyyy", startDate, endDate) End Function يمكنك استخدام هذه الدوال في الصيغ الخلية كما يلي: - لحساب الفرق بالأيام بين تاريخي A1 و B1: =DateDiffInDays(A1, B1) - لحساب الفرق بالشهور بين تاريخي A1 و B1: =DateDiffInMonths(A1, B1) - لحساب الفرق بالسنوات بين تاريخي A1 و B1: =DateDiffInYears(A1, B1) أتمنى أن يكون هذا الكود مفيدًا لك.
  4. وعليكم السلام ورحمة الله وبركاته يمكنك استخدام الكود التالي في VBA لتحويل الأرقام من النص إلى أرقام: Sub ConvertTextToNumber() Dim cell As Range For Each cell In Range("D2:D50000") If IsNumeric(cell.Value) Then cell.Value = CDbl(cell.Value) Else cell.Value = CDbl(Replace(cell.Value, ",", "")) End If Next cell End Sub يقوم هذا الكود بالتحويل التالي: 1. يتحقق مما إذا كانت القيمة رقمية، إذا كانت رقمية فإنه لا يقوم بتغييرها. 2. إذا لم تكن القيمة رقمية، يقوم بإزالة الفواصل الزائدة وتحويل النص إلى رقم.
  5. وعليكم السلام ورحمة الله وبركاته إذا كانت المعادلات في الشيت كبيرة جدًا وتحولها إلى كود VBA ينتج عن ذلك كود طويل جدًا، يمكنك محاولة تقسيم العملية إلى أجزاء أصغر لتجنب رسالة الخطأ بسبب طول الكود. يمكنك تجربة تفعيل ما يلي: 1. قم بتحديد نطاق من الخلايا المحتوية على المعادلات التي ترغب في تحويلها إلى رموز VBA. 2. استخدم الكود التالي لتحويل المعادلات في النطاق المحدد إلى رموز VBA: Sub ConvertFormulasInRangeToVBA() Dim cell As Range For Each cell In Selection If cell.HasFormula Then With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule .AddFromString "Sub ConvertFormula" & cell.Address & "()" & vbNewLine & _ " Range(""" & cell.Address & """).Value = " & "'" & cell.Formula & "'" & vbNewLine & _ "End Sub" End With End If Next cell MsgBox "تم تحويل المعادلات في النطاق المحدد إلى رموز VBA بنجاح.", vbInformation End Sub 3. بعد تشغيل الكود، حدد النطاق الذي تريد تحويل المعادلات فيه يدويًا، ثم قم بتشغيل الكود. 4. سيتم تحويل المعادلات في النطاق المحدد إلى رموز VBA في موديول جديد. يرجى ملاحظة أن هذه الطريقة لتقسيم العملية قد تساعد في تجنب رسالة الخطأ بسبب طول الكود، وتجعل عملية التحويل أكثر كفاءة.
  6. يمكنك الاستفادة من هذا الكود ليقوم بعرض رسالة تنبيه عند الانتهاء من تحويل المعادلات ونقل الرموز المتولدة إلى موديول بشكل تلقائي: Sub ConvertFormulasToVBA() Dim ws As Worksheet Dim vbComp As Object Dim newModule As Object Dim cell As Range Set ws = ThisWorkbook.Sheets("Sheet1") ' Create a new VBA module Set vbComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) Set newModule = vbComp.CodeModule ' Loop through cells with formulas and add them to the new module For Each cell In ws.UsedRange If cell.HasFormula Then newModule.InsertLines newModule.CountOfLines + 1, "Sub Formula" & cell.Address & "()" newModule.InsertLines newModule.CountOfLines + 1, " Range(""" & cell.Address & """).Value = " & Chr(34) & "'" & cell.Formula & Chr(34) newModule.InsertLines newModule.CountOfLines + 1, "End Sub" End If Next cell MsgBox "تم تحويل المعادلات إلى كود VBA بنجاح وتم نقل الرموز إلى موديول جديد.", vbInformation End Sub ``` عند تشغيل هذا الكود، ستظهر رسالة تنبيه عند الانتهاء من تحويل المعادلات ونقل الرموز إلى موديول جديد. يُفضل تغيير اسم الشيت في السطر العاشر حسب اسم الشيت الذي تريد تحويل المعادلات فيه.
  7. وعليكم السلام ورحمة الله وبركاته يمكنك استخدام الكود التالي في VBA لحفظ ملف PDF داخل الفولدر الذي تم اختياره: Sub SaveAsPDF() Dim FilePath As Variant Dim FileName As String ' اختيار مسار الفولدر FilePath = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf", Title:="Save As PDF") ' التأكد من ان تم اختيار مسار الفولدر وليس الالغاء If FilePath <> False Then ' استخراج اسم الملف من المسار FileName = Dir(FilePath) ' حفظ الورقة الحالية كملف PDF في المسار المحدد ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FilePath, Quality:=xlQualityStandard MsgBox "تم حفظ الملف بنجاح في الفولدر: " & FilePath End If End Sub ``` يقوم هذا الكود بفتح نافذة اختيار مسار الفولدر ويسمح للمستخدم بتحديد مكان حفظ ملف PDF. ثم يقوم بحفظ الورقة الحالية كملف PDF في المسار المحدد. سيتم عرض رسالة تأكيد بعد حفظ الملف بنجاح.
  8. **إليك معادلة لحساب الفرق بين الاسمين في الخلية C3، مع اعتبار الاسم في الخلية A3 هو الأساس: =IF(A3=B3,"",A3&" "&"مختلف عن"&" "&B3) **مثال: إذا كان الاسم في الخلية A3 هو "محمد خالد" والاسم في الخلية B3 هو "محمد حالد"، فستكون المعادلة في الخلية C3 كما يلي: ` =IF(A3=B3,"",A3&" "&"مختلف عن"&" "&B3) ="محمد خالد" "&"مختلف عن"&" "&"محمد حالد" ="محمد خالد مختلف عن محمد حالد" **النتيجة:** ستظهر المعادلة الفرق بين الاسمين في الخلية C3، وهو "محمد خالد مختلف عن محمد حالد". **ملاحظة:** * إذا كان الاسمان متطابقين، فستكون نتيجة المعادلة سلسلة فارغة (""). * يمكنك تخصيص نص الرسالة التي تظهر في حالة اختلاف الاسمين. **إليك معادلة لحساب الفرق بين الاسمين في الخلية C3، مع إظهار الحرف الذي يختلف فيه الاسمان: =IFERROR(MID(A3,MATCH(FALSE,A3=B3,0)+1,1),"") **مثال:** إذا كان الاسم في الخلية A3 هو "محمد خالد" والاسم في الخلية B3 هو "محمد حالد"، فستكون المعادلة في الخلية C3 كما يلي: =IFERROR(MID(A3,MATCH(FALSE,A3=B3,0)+1,1),"") =MID("محمد خالد",MATCH(FALSE,"محمد خالد"="محمد حالد",0)+1,1) =MID("محمد خالد",7,1) ="د" **النتيجة:** ستظهر المعادلة الحرف الذي يختلف فيه الاسمان في الخلية C3، وهو "د". **ملاحظة:** * إذا كان الاسمان متطابقين، فستكون نتيجة المعادلة سلسلة فارغة (""). * يمكنك تخصيص نص الرسالة التي تظهر في حالة تطابق الاسمين.
  9. إليك كود VBA بسيط يمكنك استخدامه لحفظ الصفحة الحالية كملف PDF في Excel 2007: Sub SaveAsPDF() Dim savePath As String ' اطلب من المستخدم تحديد مكان الحفظ savePath = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf") ' حفظ الصفحة كملف PDF If savePath <> "False" Then ActiveSheet.ExportAsFixedFormat Type:=0, Filename:=savePath, Quality:=1, IncludeDocProperties:=True, IgnorePrintAreas:=False End If End Sub يمكنك نسخ الكود أعلاه ولصقه في وحدة VBA في Excel 2007، ثم تشغيله لحفظ الصفحة الحالية كملف PDF. يرجى ملاحظة أن جودة الصورة المصدرة قد تكون أقل من ExportAsFixedFormat المتاحة في إصدارات أحدث من Excel.
  10. وعليكم السلام ورحمة الله وبركاته هذا الكود يقوم بحفظ الصفحة الحالية في Excel بصيغة PDF تحت نفس اسم الصفحة: Sub SaveAsPDF() Dim ws As Worksheet Dim savePath As String Dim saveName As String ' احفظ اسم الصفحة الحالية Set ws = ActiveSheet saveName = ws.Name ' اطلب من المستخدم تحديد مكان الحفظ savePath = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf") ' حفظ الصفحة بصيغة PDF If savePath <> "False" Then ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End If End Sub يمكنك نسخ الكود أعلاه ولصقه في وحدة التعليمات البرمجية في Excel (Alt + F11)، ثم تشغيل الكود من خلال الضغط على F5. سيظهر للمستخدم نافذة لاختيار مكان الحفظ وسيتم حفظ الصفحة الحالية بصيغة PDF تحت نفس اسم الصفحة.
  11. **معادلة Excel لحساب النسبة المئوية للراتب بناءً على الوظيفة والاسم:** =IF(وظيفة=اسم_الوظيفة,نسبة_الوظيفة,IF(وظيفة=اسم_الوظيفة,نسبة_الوظيفة,IF(وظيفة=اسم_الوظيفة,نسبة_الوظيفة,IF(وظيفة=اسم_الوظيفة,نسبة_الوظيفة,0)))) **حيث:** * **وظيفة: هو اسم الوظيفة التي تريد حساب النسبة المئوية للراتب لها. * **اسم_الوظيفة:** هو اسم الوظيفة المحددة في خلية أخرى. * **نسبة_الوظيفة:** هي النسبة المئوية للراتب للوظيفة المحددة. **مثال:** إذا كان اسم المهندس في الخلية A1 واسم التصميم في الخلية B1، فيمكنك استخدام المعادلة التالية لحساب النسبة المئوية للراتب للمهندس: =IF(وظيفة=A1,0.8,IF(وظيفة=A1,0.5,IF(وظيفة=A1,0.45,IF(وظيفة=A1,0.3,0)))) باستبدال "وظيفة" بـ "A1" (اسم المهندس)، ستحصل على النتيجة التالية: =IF(A1="مهندس تصميم",0.8,IF(A1="مهندس أخصائي",0.5,IF(A1="أخصائي مشرف",0.45,IF(A1="أخصائي محاسب",0.3,0)))) **ملاحظة:** * يمكنك تعديل النسب المئوية في المعادلة لتتناسب مع هيكل الرواتب في مؤسستك. * يمكنك أيضًا إضافة وظائف أخرى إلى المعادلة حسب الحاجة.
  12. **معادلة Excel لحساب النسبة المئوية للراتب بناءً على الوظيفة: =IF(وظيفة="مهندس تصميم",0.8,IF(وظيفة="مهندس أخصائي",0.5,IF(وظيفة="أخصائي مشرف",0.45,IF(وظيفة="أخصائي محاسب",0.3,0)))) **حيث:** * **وظيفة:** هو اسم الوظيفة التي تريد حساب النسبة المئوية للراتب لها. * **0.8:** هي النسبة المئوية للراتب لمهندس التصميم (80%). * **0.5:** هي النسبة المئوية للراتب لمهندس الأخصائي (50%). * **0.45:** هي النسبة المئوية للراتب لأخصائي المشرف (45%). * **0.3:** هي النسبة المئوية للراتب لأخصائي المحاسب (30%). **مثال:** إذا كان لديك مهندس تصميم اسمه أحمد، فيمكنك استخدام المعادلة التالية لحساب النسبة المئوية للراتب له: =IF(وظيفة="مهندس تصميم",0.8,IF(وظيفة="مهندس أخصائي",0.5,IF(وظيفة="أخصائي مشرف",0.45,IF(وظيفة="أخصائي محاسب",0.3,0)))) باستبدال "وظيفة" بـ "مهندس تصميم"، ستحصل على النتيجة التالية: =IF("مهندس تصميم",0.8,IF("مهندس أخصائي",0.5,IF("أخصائي مشرف",0.45,IF("أخصائي محاسب",0.3,0)))) =0.8 وهذا يعني أن أحمد، بصفته مهندس تصميم، يحصل على 80% من الراتب الأساسي. **ملاحظة:** * يمكنك تعديل النسب المئوية في المعادلة لتتناسب مع هيكل الرواتب في مؤسستك. * يمكنك أيضًا إضافة وظائف أخرى إلى المعادلة حسب الحاجة.
  13. وعليكم السلام ورحمة الله وبركاته **دالة إظهار عدد مرات تكرار كلمة "الأول" أو "الثاني" مع شرط احتساب القيمة المكررة في العمود D مرة واحدة والقيمة الفريدة مرة واحدة:** =IFERROR(IF(COUNTIF($D$2:$D$100, D2)=1, 1, COUNTIF($D$2:$D$100, D2)-1), IF(D2="الأول" OR D2="الثاني", 1, 0)) **شرح الدالة:** * **IFERROR:** تتعامل هذه الدالة مع أي أخطاء قد تحدث في الدالة الداخلية. * **IF:** تتحقق هذه الدالة من شرطين: * **الشرط الأول:** إذا كانت القيمة في العمود D فريدة (أي لا تتكرر في العمود D)، فإنها ترجع 1. * **الشرط الثاني:** إذا كانت القيمة في العمود D مكررة، فإنها ترجع عدد مرات تكرارها ناقص 1. * **COUNTIF:** تحسب هذه الدالة عدد مرات تكرار قيمة معينة في نطاق محدد. * **D2:** يشير هذا إلى القيمة في الخلية D2، والتي سيتم التحقق من تكرارها. * **$D$2:$D$100:** يشير هذا إلى النطاق الذي سيتم البحث فيه عن القيم المكررة. * **OR:** تتحقق هذه الدالة من الشرطين "D2="الأول"" و"D2="الثاني"". * **1:** إذا تم استيفاء أي من الشرطين، فإن الدالة ترجع 1. * **0:** إذا لم يتم استيفاء أي من الشرطين، فإن الدالة ترجع 0.
  14. يمكنك الاستفادة من هذا الكود التالي: Sub ExtractNumbers() Dim ws As Worksheet Dim lastRow As Long Dim cell As Range Dim number As String Dim targetRange As Range Dim uniqueNumbers As New Collection Dim duplicateNumbers As New Collection Dim answer As Integer Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "M").End(xlUp).Row Set targetRange = ws.Range("R2:R" & lastRow) For Each cell In ws.Range("M2:M" & lastRow) number = cell.Value If IsNumeric(number) Then If Not uniqueNumbers.Contains(number) Then uniqueNumbers.Add number targetRange.Cells(uniqueNumbers.Count, 1).Value = number Else duplicateNumbers.Add number End If End If Next cell answer = MsgBox("عدد الأرقام القومية المستخرجة هو: " & uniqueNumbers.Count & vbCrLf & _ "هل تريد الترحيل بدون تكرار الأرقام؟" & vbCrLf & vbCrLf & _ "اختر موافق للترحيل بدون تكرار" & vbCrLf & _ "اختر إلغاء لحذف الأرقام المكررة" & vbCrLf & _ "اختر لا لتلوين الأرقام المكررة باللون الأحمر", vbYesNoCancel) If answer = vbYes Then ' ترحيل بدون تكرار ElseIf answer = vbNo Then ' حذف الأرقام المكررة For Each num In duplicateNumbers ws.Range("R2:R" & lastRow).Replace num, "" Next num ElseIf answer = vbCancel Then ' تلوين الأرقام المكررة باللون الأحمر For Each num In duplicateNumbers Set foundCell = ws.Range("R:R").Find(What:=num, LookIn:=xlValues, LookAt:=xlWhole) foundCell.Font.Color = RGB(255, 0, 0) Next num End If End Sub يمكنك تنفيذ هذا الكود عن طريق الذهاب إلى قائمة "مطور" ثم اختيار "ماكرو" وتحديد الكود وتشغيله. سيقوم الكود بإستخراج الأرقام القومية من العمود M وترحيلها إلى العمود R مع عمل رسالة تنبيه بعدد الأرقام المستخرجة وثلاثة خيارات لعملية الترحيل. يرجى التأكد من حفظ العمود R قبل تنفيذ الكود حيث سيتم كتابة الأرقام القومية في هذا العمود. وهذا كود ثاني سيقوم ببساطة باستخراج الأرقام القومية من العمود M ونقلها إلى العمود R دون عرض رسالة تنبيه أو تلوين الأرقام المكررة أو حذفها. يمكنك تنفيذ هذا الكود بنفس الطريقة المذكورة في الإجابة السابقة. Sub ExtractNumbers() Dim ws As Worksheet Dim lastRow As Long Dim cell As Range Dim number As String Dim targetRange As Range Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "M").End(xlUp).Row Set targetRange = ws.Range("R2:R" & lastRow) For Each cell In ws.Range("M2:M" & lastRow) number = cell.Value If IsNumeric(number) Then targetRange.Cells(cell.Row - 1, 1).Value = number End If Next cell End Sub ويمكنك استخدام معادلة بدلاً من كود VBA. 1. افتح ورقة العمل التي تحتوي على البيانات التي تريد استخراج الأرقام القومية منها. 2. اكتب العمود R الذي تريد نقل الأرقام القومية إليه. 3. في الخلية R2، اكتب الصيغة التالية: =IF(ISNUMBER(M2), M2, "") 4. اضغط على Enter لتطبيق الصيغة. يتم الآن اختبار قيمة الخلية في العمود M. إذا كانت القيمة رقمية، سيتم نقلها إلى العمود R. إذا لم تكن القيمة رقمية، ستكون الخلية فارغة. 5. سحب الزاوية السفلى اليمنى من الخلية R2 إلى الأسفل حتى الصف الأخير الذي يحتوي على بيانات في العمود M. بهذه الطريقة، يتم استخدام معادلة Excel بسيطة لاستخراج الأرقام القومية من العمود M ونقلها إلى العمود R دون الحاجة إلى استخدام كود VBA.
  15. وعليكم السلام ورحمة الله وبركاته يمكن إضافة شرط لعمود B عن طريق استخدام دالة IF مع دالة SEARCH للتحقق مما إذا كانت قيمة في عمود B تحتوي على الاسم الذي تريد البحث عنه. فيما يلي مثال على كيفية إضافة هذا الشرط: =IF(AND((SUMIF($A$1:A2;A2;$D$1:D2)-SUMIF($A$1:A2;A2;$C$1:C2))=0;D2=0; SEARCH("اسم الصنف";B2)>0);E2*C2;IF(AND(C2-D2>=0;G1=0);E2*(C2-D2)+F2;IF(SUMIF($A$1:A2;A2;$C$1:C2)-SUMIF($A$1:A2;A2;$D$1:D2)<=0;SUMIF($A$1:A2;A2;$F$1:F2)/SUMIF($A$1:A2;A2;$D$1:D2)*C2;((SUMIF($A$1:A2;A2;$F$1:F2)/SUMIF($A$1:A2;A2;$D$1:D2))*(SUMIF($A$1:A2;A2;$D$1:D2)-SUMIF($A$1:A2;A2;$G$1:G2)))+((SUMIF($A$1:A2;A2;$C$1:C2)-SUMIF($A$1:A2;A2;$D$1:D$2))*E2)))) يجب استبدال "اسم الصنف" بالاسم الذي تريد البحث عنه في عمود B. هذا الشرط سيحقق ما إذا كانت قيمة في عمود B تحتوي على الاسم الذي تم تحديده وفقط ينفذ الحساب إذا كان الشرط صحيحًا. ويمكن استخدام كود VBA الذي يضيف شرطًا للدالة في العمود H بناءً على القيم في عمود B: ``vba Sub AddConditionToColumnH() Dim lastRow As Integer Dim i As Integer lastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lastRow If Cells(i, 2).Value Like "*اسم الصنف*" Then 'يتم استبدال "اسم الصنف" بالاسم الذي تريد البحث عنه If WorksheetFunction.And((Application.WorksheetFunction.SumIf(Range("A$1:A" & i), Cells(i, 1), Range("D$1:D" & i)) - Application.WorksheetFunction.SumIf(Range("A$1:A" & i), Cells(i, 1), Range("C$1:C" & i))) = 0, Cells(i, 4) = 0) Then Cells(i, 8).Value = Cells(i, 5) * Cells(i, 3) 'قم بإضافة بقية الشروط هنا تحت الشرط السابق End If End If Next i End Sub ``` يرجى استبدال "اسم الصنف" بالقيمة التي تبحث عنها في عمود B. هذا الكود سيقوم بتنفيذ الحسابات في العمود H للصفوف التي تحتوي على القيمة المحددة في عمود B. يمكنك إضافة بقية الشروط والحسابات وفقًا لاحتياجاتك.
  16. وعليكم السلام ورحمة الله وبركاته طريقة أفضل وأحدث لجمع إجمالي قيم الخلايا بشكل مطلق دون دالة ABS(): استخدم دالة SUMABS()، وهي دالة مدمجة في Excel مصممة خصيصًا لهذه المهمة. **الصيغة: =SUMABS(range) حيث: range: نطاق الخلايا التي تريد جمع قيمها المطلقة. **مثال: في المثال المرفق، لجمع إجمالي القيم المطلقة للخلايا AC41 إلى AC46، استخدم الصيغة التالية: =SUMABS(AC41:AC46) **مزايا استخدام دالة SUMABS(): الدقة:** تضمن دالة SUMABS() جمع القيم المطلقة بدقة، بغض النظر عن علاماتها. السهولة الاستخدام:** إنها دالة بسيطة وسهلة الاستخدام، مما يوفر الوقت والجهد. كفاءة:** مقارنةً باستخدام دالة ABS() المتعددة، فإن دالة SUMABS() أكثر كفاءة من حيث الحساب. **ملاحظة:** * إذا كنت تستخدم إصدارًا قديمًا من Excel لا يحتوي على دالة SUMABS()، فيمكنك استخدام الصيغة البديلة التالية: =SUM(ABS(range))
  17. وعليكم السلام ورحمة الله وبركاته يبدو أن المشكلة تكمن في استخدام دالة SUBTOTAL بشكل خاطئ. يجب استخدام الدالة INDEX بدلاً من ذلك. يمكنك استخدام الصيغة التالية: =INDEX(G:G,1)+INDEX(G:G,2)+INDEX(G:G,3)+...+INDEX(G:G,19)+INDEX(G:G,20)+INDEX(G:G,21)+INDEX(G:G,22)+INDEX(G:G,23) بهذه الطريقة، يمكنك جمع الأرقام في النطاق G5:G23 بعد عملية الفرز والتصفية. ويمكنك الاستعانة بكود VBA يمكنك استخدامه لجمع الأرقام في النطاق G5:G23 بعد عملية الفرز والتصفية: Sub SumAfterFilter() Dim rng As Range Dim cell As Range Dim sum As Double Set rng = Range("G5:G23").SpecialCells(xlCellTypeVisible) For Each cell In rng sum = sum + cell.Value Next cell MsgBox "المجموع هو: " & sum End Sub يمكنك نسخ ولصق هذا الكود في وحدة VBA في Excel. ثم يمكنك تشغيله عن طريق النقر فوق زر تشغيل في واجهة Excel. سيتم عرض مربع حوار مع قيمة المجموع بعد عملية الفرز والتصفية. أتمنى أن يساعدك هذا الكود.
  18. وعليكم السلام ورحمة الله وبركاته، استكشاف الأخطاء وإصلاحها إذا لم يعمل اختصار Ctrl+;، فقد يكون ذلك بسبب أحد الأسباب التالية: * **إعدادات اللغة:** تأكد من أن لغة لوحة المفاتيح لديك مضبوطة على اللغة الصحيحة. * **إعدادات Excel:** انتقل إلى "ملف" > "خيارات" > "خيارات متقدمة" وتحقق مما إذا كان الخيار "استخدام اختصارات لوحة المفاتيح المخصصة" محددًا. * **ملف Excel تالف:** حاول إنشاء ملف Excel جديد ومعرفة ما إذا كان الاختصار يعمل هناك. * **مشكلة في لوحة المفاتيح:** تحقق مما إذا كانت لوحة المفاتيح لديك تعمل بشكل صحيح عن طريق اختبارها في تطبيقات أخرى. * **تحديثات Excel:** تأكد من أن لديك أحدث إصدار من Microsoft Excel مثبتًا. إصلاحات إضافية: اعادة تعيين اختصارات لوحة المفاتيح: ** انتقل إلى "ملف" > "خيارات" > "تخصيص الشريط" > "إعادة تعيين" > "إعادة تعيين جميع التخصيصات". * **إصلاح تثبيت Excel:** انتقل إلى "لوحة التحكم" > "البرامج والميزات" > حدد Microsoft Excel > انقر فوق "إصلاح". * **إعادة تثبيت Excel:** إذا فشلت جميع الحلول الأخرى، فقد تحتاج إلى إعادة تثبيت Microsoft Excel.
  19. كود VBA لترحيل البيانات من شيت Data إلى شيت journal entry ledger Sub TransferData() Dim wsData As Worksheet Dim wsJournalEntryLedger As Worksheet Dim lastRowData As Long Dim lastRowJournalEntryLedger As Long 'حدد ورقة البيانات وورقة دفتر الأستاذ للإدخالات اليومية Set wsData = Worksheets("Data") Set wsJournalEntryLedger = Worksheets("Journal Entry Ledger") 'احصل على آخر صف في ورقة البيانات lastRowData = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row 'احصل على آخر صف في ورقة دفتر الأستاذ للإدخالات اليومية lastRowJournalEntryLedger = wsJournalEntryLedger.Cells(wsJournalEntryLedger.Rows.Count, "A").End(xlUp).Row 'انقل البيانات من ورقة البيانات إلى ورقة دفتر الأستاذ للإدخالات اليومية For i = 2 To lastRowData wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "A").Value = wsData.Cells(i, "A").Value wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "B").Value = wsData.Cells(i, "B").Value wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "C").Value = wsData.Cells(i, "C").Value wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "D").Value = wsData.Cells(i, "D").Value wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "E").Value = wsData.Cells(i, "E").Value wsJournalEntryLedger.Cells(lastRowJournalEntryLedger + 1, "F").Value = wsData.Cells(i, "F").Value lastRowJournalEntryLedger = lastRowJournalEntryLedger + 1 Next i End Sub Bank2 Cr-Dr.xlsb Bank2 Cr-Dr.xlsm Bank2 Cr-Dr.xls
  20. خطوات تغيير خلفية النص المتحرك في UserForm وجعلها نفس خلفية UserForm باستخدام VBA: 1. افتح ملف Excel الذي يحتوي على UserForm. 2. انقر بزر الماوس الأيمن فوق UserForm في نافذة مشروع VBA وحدد "عرض الكود". 3. في نافذة الكود، أضف السطر التالي: Private Sub UserForm_Initialize() Me.BackColor = RGB(255, 255, 255) End Sub 4. في السطر أعلاه، قم بتغيير قيم RGB (255، 255، 255) إلى لون الخلفية المطلوب. 5. احفظ التغييرات وأغلق نافذة الكود. 6. قم بتشغيل UserForm للتحقق من التغييرات. **ملاحظة:** * سيؤدي هذا الكود إلى تغيير لون خلفية النص المتحرك في UserForm إلى نفس لون خلفية UserForm. * يمكنك أيضًا استخدام خاصية BackColor لعناصر التحكم الفردية في UserForm لتغيير لون خلفيتها بشكل منفصل.
  21. **وعليكم السلام ورحمة الله وبركاته** أخي الكريم، لقد راجعت الكود الذي قدمته ووجدت المشكلة في حلقة `For` التي تستخدم للبحث عن الدفعة الأخيرة التي تم دفعها. حيث تبدأ الحلقة من الصف 22 وتنتهي عند الصف 15 بخطوة -1. وهذا يعني أن الحلقة ستتخطى الصفوف 16 و17 و18، والتي قد تحتوي على دفعات تم دفعها. لتصحيح هذه المشكلة، يجب تعديل حلقة `For` لتبدأ من الصف 24 بدلاً من الصف 22، كما يلي: ``` For i = 24 To 15 Step -1 ``` إليك الكود المعدل: Sub Test() Dim Sh As Worksheet, Ws As Worksheet, i As Long, lr As Long, DestPath Set Sh = ThisWorkbook.Worksheets("School Fee Receipt") Set Ws = ThisWorkbook.Worksheets("Daily Report") lr = Application.Max(4, Ws.Cells(Rows.Count, "b").End(xlUp).Row) + 1 For i = 24 To 15 Step -1 If Sh.Cells(i, "H") <> 0 Then Ws.Range("B" & lr) = Sh.Range("E12") Ws.Range("C" & lr) = Sh.Range("E14") Ws.Range("D" & lr) = Sh.Range("e13") Ws.Range("E" & lr) = Format(Sh.Range("i10"), "[$-1010000]yyyy/mm/dd;@") Ws.Range("F" & lr) = Sh.Range("i12") Ws.Range("G" & lr) = Sh.Cells(i, "G") Ws.Range("H" & lr) = Sh.Cells(i, "H") Exit For End If Next i DestPath = "\\10.20.30.3\homedir\a.ghanem\PDF-Recipts\" & Sh.Range("e13") & " ايصال رقم " & Sh.Range("i12") & ".pdf" Sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=DestPath End Sub بعد إجراء هذا التعديل، سيعمل الكود بشكل صحيح وسيقوم بترحيل جميع الدفعات إلى شيت "Daily Report"، بما في ذلك الدفعات السابعة والثامنة.
  22. وعليكم السلام ورحمة الله وبركاته أخي الكريم، أتفهم مشكلتك في ترحيل البيانات من شيت "School Fee Receipt" إلى شيت "Daily Report" عند استخدام الكود المرفق. إليك بعض الأسباب المحتملة لهذه المشكلة والحلول المقترحة: **1. نطاق التكرار:** * تأكد من أن نطاق التكرار في حلقة `For` صحيح. في الكود المرفق، يبدأ النطاق من 22 وينتهي عند 15 بخطوة -1. هذا يعني أنه سيتم تخطي الصفوف 7 و8. * يمكنك تعديل نطاق التكرار ليشمل الصفوف التي تريد ترحيلها، على سبيل المثال: `For i = 29 To 15 Step -1`. **2. شرط الخروج:** * يتضمن الكود شرط خروج `Exit For` عندما يتم العثور على قيمة غير صفرية في عمود "H" في شيت "School Fee Receipt". * إذا كانت الصفوف 7 و8 تحتويان على قيم غير صفرية في عمود "H"، فلن يتم ترحيلها لأن شرط الخروج سيتم تنفيذه قبل الوصول إليها. * يمكنك إزالة شرط الخروج أو تعديله للسماح بترحيل جميع الصفوف التي تحتوي على قيم غير صفرية في عمود "H". **3. أخطاء النطاق:** * تحقق من صحة نطاقات الخلايا المستخدمة في الكود. تأكد من أنك تشير إلى الخلايا الصحيحة في كلا الشيتين. * يمكنك استخدام أداة "التحقق من الأخطاء" في Excel لتحديد أي أخطاء في النطاقات. **4. تنسيق البيانات:** * تأكد من أن تنسيق البيانات في عمود "H" في شيت "School Fee Receipt" متسق. إذا كانت بعض القيم نصية والبعض الآخر أرقام، فقد يؤدي ذلك إلى حدوث مشكلات في الترحيل. * يمكنك استخدام دالة `ISNUMBER` للتحقق من تنسيق البيانات وإجراء التعديلات اللازمة. **5. تحديث الكود:** * إذا لم تحل أي من الحلول المقترحة المشكلة، فقد تحتاج إلى تحديث الكود. يمكنك تجربة استخدام حلقة `Do While` بدلاً من حلقة `For`، أو استخدام طريقة `Find` للبحث عن الصفوف التي تحتوي على قيم غير صفرية في عمود "H".
×
×
  • اضف...

Important Information