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

abouelhassan

05 عضو ذهبي
  • Posts

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

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

  • Days Won

    8

كل منشورات العضو abouelhassan

  1. لتجميع البيانات أسبوعياً، يمكنك استخدام الصيغ الشيتية في Excel للتجميع. يمكنك اتباع الخطوات التالية: 1. إضافة عمود جديد لتحديد الأسبوع. 2. في الخلية A2، اكتب الصيغة التالية لاستخراج تاريخ الأسبوع: ``` =TEXT(A2, "ww") ``` حيث A2 هو الخلية التي تحتوي على التاريخ. 3. في الخلية C2، اكتب الصيغة التالية لجمع البيانات الأسبوعية: ``` =SUMIF($A$2:$A$35, "="&A2, $B$2:$B$35) ``` حيث A2:A35 تحتوي على تواريخ الأسابيع، وB2:B35 تحتوي على القيم المرتبطة. 4. اسحب الصيغتين لأسفل لتطبيقهما على بقية الصفوف. هذا سيقوم بتجميع القيم الأسبوعية في العمود C حسب الأسبوع المحدد. جرب إذا كنت ترغب في استخدام VBA لتجميع البيانات أسبوعيًا، يمكنك استخدام الكود التالي. يفترض أن لديك بيانات في الأعمدة A و B، وترغب في تجميعها أسبوعيًا في أعمدة C وD Sub AggregateWeekly() Dim ws As Worksheet Dim lastRow As Long Dim weekStartDate As Date Dim totalSales As Double Dim targetRow As Long ' Set the worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Find the last row with data lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Initialize variables totalSales = 0 targetRow = 2 ' Start from row 2 (assuming row 1 is headers) ' Loop through the rows For i = 2 To lastRow ' Check if the current date is in the same week as the start date If Weekday(ws.Cells(i, 1).Value, vbMonday) = 2 Then ' Add the sales to the total totalSales = totalSales + ws.Cells(i, 2).Value End If ' If the current date is the last day of the week or the last row, write the total sales for the week If Weekday(ws.Cells(i, 1).Value, vbMonday) = 1 Or i = lastRow Then ' Write the week start date ws.Cells(targetRow, 3).Value = ws.Cells(i, 1).Value - Weekday(ws.Cells(i, 1).Value, vbMonday) + 1 ' Write the total sales for the week ws.Cells(targetRow, 4).Value = totalSales ' Move to the next row targetRow = targetRow + 1 ' Reset the total sales for the next week totalSales = 0 End If Next i End Sub هذا الكود يقوم بتجميع البيانات الأسبوعية ووضعها في أعمدة جديدة. يمكنك تعديل اسماء الاعمدة والورقة حسب احتياجك.
  2. يمكنك استخدام الكود التالي: Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim stockSheet As Worksheet Dim changedCell As Range Dim newValue As Double Dim oldValue As Double Dim diff As Double Set ws = ThisWorkbook.Sheets("Sheet1") ' تغيير "Sheet1" إلى اسم الورقة التي تعمل عليها Set stockSheet = ThisWorkbook.Sheets("Stock") ' تغيير "Stock" إلى اسم ورقة المخزون ' التحقق من أن التعديل تم في العمود F والخلية ليست فارغة If Not Intersect(Target, ws.Columns("F")) Is Nothing And Target.Value <> "" Then newValue = Target.Value stockSheet.Range("G8").Value = stockSheet.Range("G8").Value + newValue ElseIf Not Intersect(Target, ws.Columns("F")) Is Nothing Then Exit Sub End If ' التحقق من أن التعديل تم في العمود F وليس في الخلية G8 If Not Intersect(Target, ws.Columns("F")) Is Nothing And Target.Address <> "$F$8" Then Exit Sub End If ' التحقق من أن التعديل تم بالزيادة If Target.Value > Target.Value - Target.Value Then newValue = Target.Value oldValue = Target.Value - Target.Value diff = newValue - oldValue stockSheet.Range("G8").Value = stockSheet.Range("G8").Value + diff Else ' التعديل تم بالنقص newValue = Target.Value oldValue = Target.Value + Target.Value diff = oldValue - newValue stockSheet.Range("G8").Value = stockSheet.Range("G8").Value - diff End If End Sub ``` هذا الكود يتم وضعه في وحدة العمل الخاصة بالورقة التي تريد استخدامها. يقوم الكود بتنفيذ الأوامر التالية: 1. إذا تم إدخال قيمة جديدة في العمود F (والخلية ليست فارغة)، فإنه يقوم بإضافة هذه القيمة إلى قيمة الخلية G8 في ورقة المخزون. 2. إذا تم تعديل قيمة في العمود F (والخلية ليست G8)، فإنه يحسب الفارق بين القيمة الجديدة والقيمة القديمة ويضيف أو يخصم هذا الفارق من قيمة الخلية G8 في ورقة المخزون، اعتمادًا على اتجاه التعديل (زيادة أو نقص).
  3. جرب لتحقيق ذلك، يمكنك استخدام حدث `Worksheet_Change` في VBA للتحقق من القيمة المدخلة ورفضها إذا لم تكن القيمة المطلوبة. هناك عدة طرق لتحقيق ذلك، وإليك كيف يمكن القيام بذلك: 1. افتح ملف الـ VBA في Excel بالضغط على `Alt + F11`. 2. اختر ورقة العمل التي تريد تطبيق القاعدة عليها من الشريط الجانبي في VBA. 3. انقر مرتين على ورقة العمل لتفتح محرر الـ VBA لها. 4. اختر `Worksheet` من القائمة المنسدلة في الأعلى ثم اختر `Change` من القائمة المنسدلة الثانية. 5. قم بإضافة الكود التالي: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("E1")) Is Nothing Then If Target.Value <> "=SUM(A1:D1)" Then Application.EnableEvents = False Me.Range("E1").Value = "=SUM(A1:D1)" Application.EnableEvents = True MsgBox "Only the SUM function is allowed in cell E1.", vbExclamation, "Invalid Input" End If End If End Sub هذا الكود يتحقق من أن القيمة المدخلة في الخلية E1 هي الدالة SUM فقط، وإذا كانت غير ذلك، فسيقوم بإعادة ضبط القيمة إلى الدالة SUM وعرض رسالة تنبيه.
  4. يمكنك استخدام الدالة التالية للتحقق من تكرار الأسماء لنفس الرقم =IF(COUNTIF(A:A, A2) > 1, "تنبيه: تكرار اسم", "") هذه الدالة تقوم بفحص العمود A (الذي يحتوي على أرقام الهوية) للصف الحالي (الذي يتمثل في A2 في هذا السياق). إذا وجدت أكثر من قيمة واحدة متطابقة مع قيمة الخلية A2، فإنها تُعيد "تنبيه: تكرار اسم"، وإلا فإنها تعيد "" (لا شيء).
  5. للأسف، لا يوجد برنامج أو موقع يوفر ملفًا يمكن إضافته إلى Excel 2016 لإضافة جميع المعادلات الجديدة المتوفرة في النسخ الأحدث من Office. الأفضل في هذه الحالة هو استخدام المعادلات والوظائف المتاحة في Excel 2016 والبحث عن حلول بديلة للمهام التي قد تحتاج إلى وظائف جديدة. إذا كانت لديك أي وظيفة محددة تبحث عنها، فلا تتردد في طرحها هنا للحصول على المساعدة في إيجاد حلول بديلة لها.
  6. جرب طبقاً للوصف السابق، يمكنك اتباع الخطوات التالية: . ضع هذا الكود Dim soundPlayed As Boolean Sub ActivateTimer() soundPlayed = False ' Your existing code to activate the current time End Sub Sub CheckTime() Dim i As Integer For i = 2 To Range("A" & Rows.Count).End(xlUp).Row If Range("N" & i).Value > Range("L" & i).Value And Not soundPlayed Then Beep ' تشغيل الصوت هنا soundPlayed = True End If Next i End Sub Sub ResetSound() soundPlayed = False End Sub . قم بتعديل الكود الموجود لديك ليتناسب مع الكود المعطى. ابحث عن الجزء الذي يقوم بحساب الوقت وتحديد نهايته، واستبدله بالكود الجديد الموجود في الدالة `CheckTime`. . قم بإضافة زر في ورقة العمل لتفعيل الوقت باستخدام الدالة `ActivateTimer`. . قم بتعيين زر آخر لإعادة تهيئة المتغير `soundPlayed` باستخدام الدالة `ResetSound`. هذا الكود سيقوم بتشغيل التنبيه الصوتي مرة واحدة فقط عندما يتم اكتشاف انتهاء الوقت المحدد لكل شاشة.
  7. =IF($C1="مسلم",IF(OR($B1="مسيحي ك1",$B1="مسيحي ك2"),"",1),IF($C1="مسيحي",IF(OR($B1="اسلامي ك1",$B1="اسلامي ك2"),"",1),""))
  8. جرب . يمكنك استخدام دالة IF مع دالة ISNUMBER للتحقق مما إذا كان الطالب مسلمًا أم مسيحيًا، ثم استخدام الدوال الأخرى لتحديد ما إذا كان الطالب يدرس مسيحي ك1، مسيحي ك2، اسلامي ك1، أو اسلامي ك2. إليك كيفية تنفيذ ذلك: 1. قم بفتح ورقة العمل في Excel. 2. انقر بزر الماوس الأيمن على الخلية التي تريد وضع الرقم 1 فيها واختر "صيغة" ثم "محرر الصيغ" من القائمة المنبثقة. 3. استخدم الصيغة التالية: =IF(ISNUMBER(MATCH("مسيحي ك1",$A1:$A$100,0)),1, IF(ISNUMBER(MATCH("مسيحي ك2",$A1:$A$100,0)),1, IF(ISNUMBER(MATCH("اسلامي ك1",$A1:$A$100,0)),IF(ISNUMBER(MATCH("مسيحي ك1",$A1:$A$100,0)),"",1), IF(ISNUMBER(MATCH("اسلامي ك2",$A1:$A$100,0)),IF(ISNUMBER(MATCH("مسيحي ك1",$A1:$A$100,0)),"",1),"")))) حيث أن $A1:$A$100 هو المدى الذي يحتوي على أسماء الطلاب. يجب تغيير هذا المدى وفقًا لنطاق البيانات الخاص بك. 4. اضغط على Enter. هذه الصيغة ستقوم بوضع الرقم 1 في الخلايا التي تحتوي على "مسيحي ك1" و "مسيحي ك2" للطلاب المسيحيين، وستترك الخلايا الفارغة للطلاب الذين يدرسون "اسلامي ك1" و "اسلامي ك2".
  9. مشاركة مع الإخوة لعلها تفيد لحساب مجموع الساعات وتحويلها إلى أيام وساعات، يمكنك استخدام الصيغ التالية في Excel: 1. **جمع الساعات:** - افتح Excel واكتب الساعات في الخلية A1 إلى A4 (على سبيل المثال). - في الخلية الفارغة، اكتب الصيغة التالية: `=SUM(A1:A4)` واضغط Enter. هذه الصيغة ستقوم بجمع جميع الساعات المدخلة. 2. **تحويل الساعات إلى أيام وساعات:** - في الخلية الفارغة، اكتب الصيغة التالية: `=QUOTIENT(B1, 8) & " يوم " & MOD(B1, 8) & " ساعة"` حيث B1 هو الخلية التي تحتوي على مجموع الساعات. ستقوم هذه الصيغة بتحويل الساعات إلى أيام وساعات. على سبيل المثال، إذا كانت الساعات المدخلة هي 45 ساعة، سيكون مجموعها 45 ساعة، وسيتم تحويلها إلى "5 يوم 13 ساعة" باستخدام الصيغ أعلاه. =QUOTIENT(B1, 8) & " يوم " & MOD(B1, 8) & " ساعة"
  10. شكر وتقدير واحترام من اخيك
  11. لإضافة تنسيق للتاريخ في المعادلة، يمكنك استخدام الدالة TEXT لتحويل القيمة إلى نص بتنسيق التاريخ المطلوب. اليك الصيغة المعدلة: ``` =IF(D2="", "", IF(E2="", TEXT(NOW(), "dd/mm/yyyy"), TEXT(E2, "dd/mm/yyyy"))) ``` هذه المعادلة تقوم بفحص قيمة في الخلية D2، إذا كانت فارغة، فإنها تعيد قيمة فارغة، وإذا لم تكن فارغة، فإنها تفحص قيمة في الخلية E2، إذا كانت فارغة، فإنها تعيد التاريخ الحالي بتنسيق "dd/mm/yyyy"، وإذا لم تكن فارغة، فإنها تعيد قيمة في الخلية E2 بتنسيق التاريخ "dd/mm/yyyy". يمكن تنسيق تاريخ الخلية داخل المعادلة باستخدام الدالة TEXT لتحويل التاريخ إلى نص بالتنسيق المطلوب. وبالنسبة لإضافة المعادلة باستخدام VBA، يمكنك استخدام الكود التالي: Sub AddFormulaWithDateFormat() Dim ws As Worksheet Dim formula As String ' افتح ورقة العمل المراد العمل عليها Set ws = ThisWorkbook.Sheets("Sheet1") ' تغيير Sheet1 بالاسم الصحيح ' تحديد الصيغة المراد إضافتها بالتنسيق المطلوب formula = "=IF(D2="""", """", IF(E2="""", TEXT(NOW(), ""dd/mm/yyyy""), TEXT(E2, ""dd/mm/yyyy"")))" ' إضافة الصيغة إلى الخلية المرادة ws.Range("F2").Formula = formula ' تغيير F2 بالخلية المطلوبة End Sub يرجى تغيير "Sheet1" بالاسم الصحيح لورقة العمل التي ترغب في إضافة المعادلة إليها، وتغيير "F2" بالخلية التي ترغب في وضع المعادلة فيها.
  12. الصورة لا تظهر عندى اكتب المعادلة
  13. Sub SaveAsNewWorkbook() Dim wb As Workbook Dim ws As Worksheet Dim newWb As Workbook Dim newWs As Worksheet Dim folderPath As String Dim clientName As String Dim lastRow As Long ' تحديد المجلد المحتوي على الملف الأصلي folderPath = ThisWorkbook.Path ' اسم العميل (يمكنك تغيير هذا إلى الطريقة التي تريد استخدامها لاستخراج اسم العميل) clientName = "اسم العميل" ' تكوين اسم الملف الجديد newFileName = folderPath & "\" & clientName & ".xlsx" ' نسخ ورقة العمل الحالية إلى مصفوفة Set wb = ThisWorkbook Set ws = wb.ActiveSheet ws.Copy ' حفظ المصفوفة كملف إكسل جديد Set newWb = ActiveWorkbook Set newWs = newWb.Sheets(1) Application.DisplayAlerts = False newWb.SaveAs newFileName, FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = True ' تحويل المعادلات في النصف العلوي من الفاتورة إلى قيم lastRow = newWs.Cells(Rows.Count, "A").End(xlUp).Row newWs.Rows("1:" & lastRow \ 2).Value = newWs.Rows("1:" & lastRow \ 2).Value ' إظهار رسالة تأكيد الحفظ MsgBox "تم حفظ الملف كـ" & newFileName, vbInformation, "تم الحفظ" End Sub يرجى ملاحظة أنه يجب استبدال "اسم العميل" بالطريقة التي تريد استخدامها لاستخراج اسم العميل
  14. يمكنك استخدام معادلة في Excel لتحقيق هذا الهدف. يمكنك وضع الرقم الابتدائي في خلية معينة، على سبيل المثال خلية A1، ثم استخدام الصيغة التالية في خلية أخرى، مثل B1، لتحقيق التصاعد التلقائي =IF(A1="", "", IF(A1>=10, A1+1, "0"&A1+1)) هذه الصيغة تفحص قيمة الرقم في الخلية A1، وإذا كانت أقل من 10، فإنها تضيف "0" قبل الرقم للحفاظ على التنسيق، وإذا كانت 10 أو أكبر، فإنها تزيد الرقم بمقدار 1. يمكنك استخدام هذه الصيغة في خلية جديدة لتحقيق التصاعد التلقائي. أما بالنسبة لتطبيق هذه الفكرة على ملف Word، فإنها لا تدعم التصاعد التلقائي للأرقام مع كل طباعة، ولكن يمكنك تحقيق ذلك بطرق أخرى مثل استخدام ميزة التعداد التلقائي (AutoNumber) في Word.
  15. الكود يعمل اخى ما تقوم بها المعادلات تحياتي
  16. تفضل تسجيل الحضور والغياب.xlsx
  17. جرب Function GetCustomerData(customerCode As String, dataSheet As Worksheet) As Variant Dim dataRange As Range Dim result As Variant Set dataRange = dataSheet.Range("A:C") result = Application.WorksheetFunction.Index(dataRange.Columns(3), _ Application.WorksheetFunction.Match(1, (dataRange.Columns(1) = [E1]) * (dataRange.Columns(2) = customerCode), 0)) GetCustomerData = IIf(customerCode = "", "", result) End Function Function GetCustomerTotal(customerCode As String, dataSheet As Worksheet) As Variant Dim dataRange As Range Dim result As Variant Set dataRange = dataSheet.Range("A:D") result = Application.WorksheetFunction.SumIfs(dataRange.Columns(4), dataRange.Columns(1), [E1], dataRange.Columns(2), customerCode) GetCustomerTotal = IIf(customerCode = "", "", result) End Function
  18. انا اسف اخى طريقة عرض طلبك يجب ان تبدأ بالسلام عليكم اخوانى وتكتب طلبك ودعم الطلب بملف عموما جرب واخبرنى يمكنك وضع الكود في وحدة VBA في ملف Excel وسيعمل تلقائيًا بمجرد فتح الملف. إليك الخطوات لوضع الكود وجعله يعمل بشكل تلقائي بدون الحاجة لزر: 1. افتح ملف Excel الذي تريد إضافة الكود إليه. 2. اضغط `Alt` + `F11` لفتح محرر VBA. 3. في القائمة، اختر `Insert` > `Module` لإنشاء وحدة VBA جديدة. 4. الصق الكود في وحدة VBA التي تم إنشاؤها. 5. اضغط `Ctrl` + `S` لحفظ الملف. 6. أغلق محرر VBA. 7. أغلق الملف وأعد فتحه. الآن، سيعمل الكود تلقائيًا عند فتح الملف، حيث سيقوم بحفظ وإغلاق الملف تلقائيًا بعد مرور 5 دقائق من الخمول. Dim StartTimer Const IdleTime = 5 ' وقت الخمول بالدقائق Sub ResetTimer() StartTimer = Now End Sub Sub CheckIdleTime() If (Now - StartTimer) * 24 * 60 > IdleTime Then Application.DisplayAlerts = False ' لعدم عرض رسائل التنبيه ThisWorkbook.Save ' حفظ الملف ThisWorkbook.Close ' إغلاق الملف Application.DisplayAlerts = True End If End Sub Private Sub Workbook_Open() StartTimer = Now Application.OnTime Now + TimeValue("00:01:00"), "CheckIdleTime" ' فحص الوقت كل دقيقة End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ResetTimer End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) ResetTimer End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) ResetTimer End
  19. جرب Private Sub SaveButton_Click() Dim wsHome As Worksheet Dim wsDaily As Worksheet Dim inputDate As Date Dim checkDate As Range Set wsHome = ThisWorkbook.Sheets("Home") Set wsDaily = ThisWorkbook.Sheets("Daily") 'Get the date from cell F13 in the Home sheet inputDate = wsHome.Range("F13").Value 'Check if the date is already in column J in the Daily sheet With wsDaily Set checkDate = .Columns("J").Find(inputDate, LookIn:=xlValues, lookat:=xlWhole) End With 'If the date is found, prevent saving and show a message If Not checkDate Is Nothing Then MsgBox "تم حفظ تقرير لهذا التاريخ مسبقاً في الجدول اليومي" Exit Sub End If 'Save the data if the date is not found 'Add your code here to save the data to the Daily sheet End Sub تأكد من تغيير اسماء الشيتات ("Home" و "Daily") وتعديل موضع الخطأ في حالة وجود أي اختلاف في اسماء الشيتات.
  20. جرب Private Sub SaveButton_Click() Dim wsInput As Worksheet Dim wsData As Worksheet Dim inputDate As Date Dim lastRow As Long Dim checkDate As Range Set wsInput = ThisWorkbook.Sheets("واجهة الادخال") Set wsData = ThisWorkbook.Sheets("جدول البيانات") 'Get the date from the input form inputDate = wsInput.Range("A2").Value 'Check if the date is already in the data table With wsData lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row Set checkDate = .Range("A2:A" & lastRow).Find(inputDate, LookIn:=xlValues, lookat:=xlWhole) End With 'If the date is found, prevent saving and show a message If Not checkDate Is Nothing Then MsgBox "تم حفظ تقرير لهذا التاريخ مسبقاً" Exit Sub End If 'Save the data if the date is not found 'Add your code here to save the data to the data table End Sub
  21. السطر الذي تشير إليه يقوم ب لاستخدام الكائن Dictionary. يمكنك فعل ذلك من خلال اتباع الخطوات التالية: 1. في محرر VBA، انتقل إلى القائمة "Tools" ثم "References" (أو "Tools" ثم "References" في Excel 2010). 2. ابحث عن "Microsoft Scripting Runtime" في القائمة. 3. حدد المربع بجانب "Microsoft Scripting Runtime". 4. انقر فوق "OK" لحفظ التغييرات.
  22. إليك خطوات عملية لربط بيانات الموظفين من ملفات Excel الفردية بشيت القبض الشهري: 1. **تحديد البيانات المطلوبة:** ابدأ بتحديد البيانات التي تحتاج إليها من كل ملف للموظف. على سبيل المثال، اسم الموظف، الراتب، البدلات، الحضور والانصراف، الإجازات، وأي بيانات أخرى ذات الصلة. 2. **فتح شيت القبض الشهري الجديد:** افتح شيت القبض الشهري الجديد الذي تريد دمج البيانات فيه. 3. **استيراد البيانات من مصادر خارجية:** - اختر علامة تبويب "بيانات" في شريط الأوامر. - اختر "استيراد من مصدر آخر" ثم "من ملف Excel". - حدد ملف Excel الخاص بالموظف الأول واختر "استيراد". - حدد الشيت الذي تحتوي على البيانات المطلوبة واختر "موافق". 4. **تكرار نفس العملية لبقية الموظفين:** قم بتكرار الخطوات السابقة لجميع الملفات الفردية للموظفين الباقين، حيث يمكنك استخدام نفس الخطوات لاستيراد البيانات من ملفاتهم الفردية. 5. **تنسيق البيانات:** قد تحتاج إلى ضبط تنسيق البيانات والصيغ إذا كان هناك اختلاف في التنسيق بين ملفات الموظفين. 6. **حفظ العمل:** بعد دمج جميع البيانات، قم بحفظ الشيت الجديد لديك. هذه الخطوات تقريبية وقد تحتاج إلى تعديلات بحسب تنظيم بيانات الموظفين في ملفات Excel الفردية الخاصة بهم.
×
×
  • اضف...

Important Information