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

abouelhassan

05 عضو ذهبي
  • Posts

    2,910
  • تاريخ الانضمام

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

  • Days Won

    7

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

  1. جرب . يمكنك استخدام دالة 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".
  2. مشاركة مع الإخوة لعلها تفيد لحساب مجموع الساعات وتحويلها إلى أيام وساعات، يمكنك استخدام الصيغ التالية في 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) & " ساعة"
  3. شكر وتقدير واحترام من اخيك
  4. لإضافة تنسيق للتاريخ في المعادلة، يمكنك استخدام الدالة 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" بالخلية التي ترغب في وضع المعادلة فيها.
  5. الصورة لا تظهر عندى اكتب المعادلة
  6. 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 يرجى ملاحظة أنه يجب استبدال "اسم العميل" بالطريقة التي تريد استخدامها لاستخراج اسم العميل
  7. يمكنك استخدام معادلة في Excel لتحقيق هذا الهدف. يمكنك وضع الرقم الابتدائي في خلية معينة، على سبيل المثال خلية A1، ثم استخدام الصيغة التالية في خلية أخرى، مثل B1، لتحقيق التصاعد التلقائي =IF(A1="", "", IF(A1>=10, A1+1, "0"&A1+1)) هذه الصيغة تفحص قيمة الرقم في الخلية A1، وإذا كانت أقل من 10، فإنها تضيف "0" قبل الرقم للحفاظ على التنسيق، وإذا كانت 10 أو أكبر، فإنها تزيد الرقم بمقدار 1. يمكنك استخدام هذه الصيغة في خلية جديدة لتحقيق التصاعد التلقائي. أما بالنسبة لتطبيق هذه الفكرة على ملف Word، فإنها لا تدعم التصاعد التلقائي للأرقام مع كل طباعة، ولكن يمكنك تحقيق ذلك بطرق أخرى مثل استخدام ميزة التعداد التلقائي (AutoNumber) في Word.
  8. الكود يعمل اخى ما تقوم بها المعادلات تحياتي
  9. تفضل تسجيل الحضور والغياب.xlsx
  10. جرب 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
  11. انا اسف اخى طريقة عرض طلبك يجب ان تبدأ بالسلام عليكم اخوانى وتكتب طلبك ودعم الطلب بملف عموما جرب واخبرنى يمكنك وضع الكود في وحدة 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
  12. جرب 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") وتعديل موضع الخطأ في حالة وجود أي اختلاف في اسماء الشيتات.
  13. جرب 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
  14. السطر الذي تشير إليه يقوم ب لاستخدام الكائن Dictionary. يمكنك فعل ذلك من خلال اتباع الخطوات التالية: 1. في محرر VBA، انتقل إلى القائمة "Tools" ثم "References" (أو "Tools" ثم "References" في Excel 2010). 2. ابحث عن "Microsoft Scripting Runtime" في القائمة. 3. حدد المربع بجانب "Microsoft Scripting Runtime". 4. انقر فوق "OK" لحفظ التغييرات.
  15. إليك خطوات عملية لربط بيانات الموظفين من ملفات Excel الفردية بشيت القبض الشهري: 1. **تحديد البيانات المطلوبة:** ابدأ بتحديد البيانات التي تحتاج إليها من كل ملف للموظف. على سبيل المثال، اسم الموظف، الراتب، البدلات، الحضور والانصراف، الإجازات، وأي بيانات أخرى ذات الصلة. 2. **فتح شيت القبض الشهري الجديد:** افتح شيت القبض الشهري الجديد الذي تريد دمج البيانات فيه. 3. **استيراد البيانات من مصادر خارجية:** - اختر علامة تبويب "بيانات" في شريط الأوامر. - اختر "استيراد من مصدر آخر" ثم "من ملف Excel". - حدد ملف Excel الخاص بالموظف الأول واختر "استيراد". - حدد الشيت الذي تحتوي على البيانات المطلوبة واختر "موافق". 4. **تكرار نفس العملية لبقية الموظفين:** قم بتكرار الخطوات السابقة لجميع الملفات الفردية للموظفين الباقين، حيث يمكنك استخدام نفس الخطوات لاستيراد البيانات من ملفاتهم الفردية. 5. **تنسيق البيانات:** قد تحتاج إلى ضبط تنسيق البيانات والصيغ إذا كان هناك اختلاف في التنسيق بين ملفات الموظفين. 6. **حفظ العمل:** بعد دمج جميع البيانات، قم بحفظ الشيت الجديد لديك. هذه الخطوات تقريبية وقد تحتاج إلى تعديلات بحسب تنظيم بيانات الموظفين في ملفات Excel الفردية الخاصة بهم.
  16. جرب Sub ProcessData() Dim ws1 As Worksheet, ws2 As Worksheet Dim lastRow As Long, i As Long Dim officeName As String, dateValue As String, claimNumber As String Dim uniqueOffices As New Collection Dim officeDates As New Dictionary Dim officeClaims As New Dictionary ' Set references to the worksheets Set ws1 = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to the actual name of your worksheet Set ws2 = ThisWorkbook.Sheets("Sheet2") ' Change "Sheet2" to the actual name of your worksheet ' Find the last row in worksheet 1 lastRow = ws1.Cells(ws1.Rows.Count, "O").End(xlUp).Row ' Loop through the data in worksheet 1 For i = 1 To lastRow ' Get the office name officeName = ws1.Cells(i, "O").Value ' Add the office name to the uniqueOffices collection On Error Resume Next uniqueOffices.Add officeName, CStr(officeName) On Error GoTo 0 ' Get the date value dateValue = CStr(ws1.Cells(i, "P").Value) ' Get the claim number claimNumber = CStr(ws1.Cells(i, "Q").Value) ' Add the date and claim number to the dictionaries if they don't already exist If Not officeDates.Exists(officeName) Then officeDates.Add officeName, dateValue officeClaims.Add officeName, claimNumber ElseIf InStr(1, officeDates(officeName), dateValue) = 0 Then officeDates(officeName) = officeDates(officeName) & " + " & dateValue ElseIf InStr(1, officeClaims(officeName), claimNumber) = 0 Then officeClaims(officeName) = officeClaims(officeName) & " + " & claimNumber End If Next i ' Write the unique office names to worksheet 2 Dim office As Variant Dim rowIndex As Long: rowIndex = 1 For Each office In uniqueOffices ws2.Cells(rowIndex, 1).Value = office ' Write the dates for each office ws2.Cells(rowIndex, 2).Value = officeDates(office) ' Write the claim numbers for each office ws2.Cells(rowIndex, 3).Value = officeClaims(office) rowIndex = rowIndex + 1 Next office MsgBox "Process complete." End Sub يرجى تغيير اسمي الورقتين "Sheet1" و "Sheet2" إلى الأسماء الفعلية للورقتين الخاصتين بك.
  17. انا قمت بالتنفيذ على التكرار فى اسم المكتب فتحت الملف لم افهم شئ اخى وضح المطلوب تفصيلى هل المطلوب عدم تكرار التاريخ ام المطالبة ام جمعهم
  18. هذا كل ما استطيع تقديمه اخى الكريم
  19. طيب ايه المطلوب تفصيلا فى الملف الذى ارسلته لك اخى الكريم
  20. انا نفذت الموجود بالملف المرفق
  21. محاولة لعلها تفيد function onEdit(e) { var sheet = e.source.getActiveSheet(); var range = e.range; // Check if edited range is in columns A-F if (range.getColumn() >= 1 && range.getColumn() <= 6) { var row = range.getRow(); // Check if column H in the edited row is empty if (!sheet.getRange(row, 8).getValue()) { // Generate a random number and set it in column H var randomNum = Math.floor(Math.random() * 1000) + 1; sheet.getRange(row, 8).setValue(randomNum); } } } هذا الكود يعمل على تطبيق رقم عشوائي في العمود H عند تعبئة البيانات في الأعمدة A-F. يجب وضع هذا الكود في محرر النصوص في Google Apps Script وحفظه. بعد ذلك، سيتم تنفيذ الكود تلقائيًا عند تعديل البيانات في الأعمدة A-F.
  22. ما هو المطلولب تفصيلى اخى لانى فتحت الملف وما فهمت المطلوب
×
×
  • اضف...

Important Information