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

abouelhassan

05 عضو ذهبي
  • Posts

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

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

  • Days Won

    7

Community Answers

  1. abouelhassan's post in شروط افقية ورأسية was marked as the answer   
    =IF($C1="مسلم",IF(OR($B1="مسيحي ك1",$B1="مسيحي ك2"),"",1),IF($C1="مسيحي",IF(OR($B1="اسلامي ك1",$B1="اسلامي ك2"),"",1),""))  
  2. abouelhassan's post in بديل لداله UNIQUE was marked as the answer   
    جرب
    =IF(G2=K2,"01-01-2000",IF(K2+L2<G2,"01-01-2030",INDEX($D$5:$D$10307,SMALL(IF(($A$5:$A$10307=E2)*($C$5:$C$10307>=SUMIF($E$2:E2,E2,$L$2:L2)),ROW($A$5:$A$10307)-ROW($A$5)+1),2)-5))) الدالة  دالة مصفوفة لتعمل
    Ctrl + Shift + Enter لتنفيذها
  3. abouelhassan's post in اغلاق وحفظ الملف تلقائيا عند الخمول was marked as the answer   
    انا اسف اخى طريقة عرض طلبك يجب ان تبدأ بالسلام عليكم اخوانى وتكتب طلبك ودعم الطلب بملف عموما جرب واخبرنى 
    يمكنك وضع الكود في وحدة 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  
  4. abouelhassan's post in احتاج معادلة بحث تقبل بشرطين was marked as the answer   
    جرب هذه
    لحل هذه المشكلة، يمكنك استخدام وظيفة `INDEX` و `MATCH` في Excel للعثور على القيمة المطلوبة بناءً على الشروط التي حددتها. يمكنك استخدام الصيغة التالية في الخلية التي تريد أن تظهر فيها اسم المندوب:
    =INDEX('شيت 1'!$B$2:$B$1000, MATCH(1, ('شيت 1'!$A$2:$A$1000=تاريخ)*('شيت 1'!$C$2:$C$1000=كود_الزبون), 0)) يرجى استبدال `'شيت 1'` بالاسم الصحيح للشيت الذي تحتوي عليه البيانات، وتغيير `$B$2:$B$1000` إلى النطاق الصحيح الذي تحتوي فيه أسماء المندوبين، وكذلك `$A$2:$A$1000` و `$C$2:$C$1000` بالنطاقات التي تحتوي على تواريخ وأكواد الزبائن على التوالي.
    قم بتغيير `تاريخ` و `كود_الزبون` إلى مراجع للخلايا التي تحتوي على التاريخ وكود الزبون اللذين تبحث عنهما.
  5. abouelhassan's post in عمل خلاصة بالتواريخ والارقام was marked as the answer   
    جرب
    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" إلى الأسماء الفعلية للورقتين الخاصتين بك.
  6. abouelhassan's post in شرط جمع مدة مركب was marked as the answer   
    تفضل
    abouelhassan.xls
  7. abouelhassan's post in ترحيل القيمة الغير موجودة داخل عمود ما was marked as the answer   
    تفضل
    Counter1.xls
  8. abouelhassan's post in مساعدة في حذف جزء من النص was marked as the answer   
    تعديل
    Sub KeepFirstWordOnly() Dim cell As Range Dim words() As String Dim i As Integer For Each cell In Range("A1:A10") ' تغيير النطاق حسب الحاجة words = Split(cell.Value, " ") If UBound(words) >= 0 Then ' التحقق من أن المصفوفة غير فارغة cell.Value = words(0) Else cell.Value = "" End If Next cell End Sub  
  9. abouelhassan's post in عمل مربع بحث was marked as the answer   
    اليك الطريقه اخى الكريم جرب لإضافة مربع بحث للبحث عن الأصناف في ورقة العمل، يمكنك اتباع الخطوات التالية:
    1. **إنشاء مربع حوار بحث:**
       - قم بالنقر على "مطور" في شريط الأدوات، ثم اختر "إدراج" واختر "زر التحكم".
       - ارسم مربعًا على الورقة ليكون زر البحث.
       - انقر بزر الماوس الأيمن على الزر الذي أنشأته واختر "تعيين معرف" لإعطاء الزر اسمًا مثل "btnSearch".
     
    2. **إضافة الكود VBA للبحث:**
       - انقر بزر الماوس الأيمن على ورقة العمل واختر "عرض الكود".
       - استخدم الكود التالي لإنشاء نافذة حوار للبحث عن الأصناف
    Sub SearchItem() Dim wsInventory As Worksheet Dim rngItems As Range, cell As Range Dim searchItem As String ' تحديد ورقة العمل للبحث فيها Set wsInventory = ThisWorkbook.Sheets("اسم_ورقة_العمل") ' مربع حوار البحث searchItem = InputBox("ادخل اسم الصنف للبحث عنه:") ' البحث عن الصنف وعرض النتائج If searchItem <> "" Then Set rngItems = wsInventory.Range("E:E").Find(What:=searchItem, LookIn:=xlValues, LookAt:=xlWhole) If Not rngItems Is Nothing Then MsgBox "كود الصنف: " & rngItems.Offset(0, -1).Value & vbNewLine & "اسم الصنف: " & rngItems.Value, vbInformation, "نتائج البحث" Else MsgBox "لم يتم العثور على الصنف.", vbExclamation, "نتائج البحث" End If End If End Sub يرجى استبدال "اسم_ورقة_العمل" بالاسم الفعلي لورقة العمل التي تريد البحث فيها.
  10. abouelhassan's post in جمع عدد من الحقول was marked as the answer   
    جرب هذه الدالة واخبرنى
    عذرًا على الالتباس. يمكنك استخدام الدالة التالية لجمع الصف الأول بشرط أن تكون القيمة في الصف الثاني غير فارغ
    =SUM(A1:INDEX(A:A, MATCH(1E+306, B:B, 1)))
    هذه الدالة تستخدم دالة MATCH للعثور على أول خلية غير فارغة في الصف الثاني، ثم يستخدم الدالة INDEX لإنشاء مرجع للخلية المتناظرة في الصف الأول، وأخيرًا يقوم بجمع القيم في هذا النطاق.
    =SUM(A1:INDEX(A:A, MATCH(1E+306, B:B, 1)))  
  11. abouelhassan's post in شرح معادلة was marked as the answer   
    تلك الصيغة تستخدم في جداول البيانات في ، وتهدف إلى حساب مجموع لأرقام معينة استناداً إلى مجموعة من الشروط. في هذه الحالة، يتم تحديد المجموعة التي تريد جمع أرقامها في "range". ثم يحدد "criteria1" الشرط الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو ">100" لاستبعاد الأرقام من 1 إلى 100. وأما "criteria2" فهو الشرط الآخر الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو "<=100" لاستبعاد الأرقام من 1 إلى 100.
  12. abouelhassan's post in معادلة لجمع الارقام باستثناء ارقام was marked as the answer   
    جرب
    =SUMIF(range, ">50")  
    حيث "range" تمثل نطاق الخلايا التي تحتوي على الأرقام التي تريد جمعها.
  13. abouelhassan's post in تنسيق البيانات داخل listbox was marked as the answer   
    جرب
    Private Sub UserForm_Initialize() Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' تحديد ورقة العمل التي تحتوي على البيانات Set ws = ThisWorkbook.Sheets("Sheet1") ' قم بتغيير اسم الورقة حسب اسم ورقتك ' احتساب عدد الصفوف الممتلئة في العمود A lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' تحميل البيانات إلى ListBox وتنسيقها For i = 2 To lastRow ' افترضنا هنا أن البيانات تبدأ من الصف 2، يمكنك تغيير الرقم إذا لزم الأمر ListBox1.AddItem Format(ws.Cells(i, 1).Value, "0.000") ' المبيعات ListBox1.List(ListBox1.ListCount - 1, 1) = Format(ws.Cells(i, 2).Value, "0.000") ' العمولة ListBox1.List(ListBox1.ListCount - 1, 2) = Format(ws.Cells(i, 3).Value, "0.000") ' صافي المبيعات Next i End Sub Private Sub ListBox1_Click() Dim selectedRow As Long ' الحصول على الصف المحدد في ListBox selectedRow = ListBox1.ListIndex ' التحرك إلى الخلية المقابلة في ورقة العمل If selectedRow >= 0 Then ThisWorkbook.Sheets("Sheet1").Cells(selectedRow + 2, 1).Select ' نفترض أن البيانات تبدأ من الصف 2 End If End Sub  
  14. abouelhassan's post in عمل فاصل صفحات بعد عدد محدد من الصفوف was marked as the answer   
    جرب
    Sub InsertPageBreaks() Dim ws As Worksheet Dim rowsPerPage As Integer Dim lastRow As Long Dim i As Long ' تعيين عدد الصفوف في كل صفحة rowsPerPage = 24 ' تحديد الورقة التي ترغب في تطبيق الفواصل عليها Set ws = ThisWorkbook.Sheets("Sheet1") ' تغيير "Sheet1" إلى اسم الورقة الخاصة بك ' حذف الفواصل الحالية إن وجدت ws.ResetAllPageBreaks ' الحصول على آخر صف غير فارغ في الورقة lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' إدراج فواصل الصفحات بعد كل rowsPerPage صف For i = rowsPerPage To lastRow Step rowsPerPage ws.Rows(i).PageBreak = xlPageBreakManual Next i End Sub قم بتغيير "Sheet1" في السطر Set ws = ThisWorkbook.Sheets("Sheet1") إلى اسم الورقة التي ترغب في تطبيق الفواصل عليها.
    قم بتعديل قيمة rowsPerPage إلى العدد المطلوب من الصفوف في كل صفحة.
  15. abouelhassan's post in استفسار عن الأكواد was marked as the answer   
    يبدو أن هناك مشكلة في طريقة استدعاء الكود من اليوزر فورم. يمكن أن يكون الخطأ ناتجا عن أمور مثل عدم تحديد المسار الصحيح للملف أو استخدام أسماء متغيرة غير صحيحة. يمكنك مراجعة الكود والتأكد من صحة الأسماء والمسارات المستخدمة للتأكد من عدم وجود أخطاء بها.
  16. abouelhassan's post in كود تكرار بشرط was marked as the answer   
    جرب
    Sub كتابة_الصدق_كل_20_صف() Dim صف As Integer Dim الصدق As String الصدق = "الصدق" ' تحديد صفوف للكتابة فيها For صف = 1 To ActiveSheet.Rows.Count Step 20 ' كتابة الكلمة في الخلية A في الصف الحالي Cells(صف, 1).Value = الصدق Next صف End Sub  
  17. abouelhassan's post in مقارنة بيانات عمود ببيانات عمود اخر was marked as the answer   
    يمكننا ضبط الكود لتحقيق ذلك. يتم وضع كل اسم في خلية واحدة، والأسماء المختلفة تُفصل بواسطة سطر جديد في نفس الخلية. اليك الكود المعدل
    Private Sub Workbook_Open() ' جعل الصفحة من اليمين والتنسيق في المنتصف With ActiveWindow .WindowState = xlMaximized .DisplayRightToLeft = True End With ' تنسيق الأرقام بخط عريض بحجم 14 Cells.NumberFormat = "0" Cells.Font.Size = 14 ' تنسيق العمود A برقم مخصص 000000 Columns("A").NumberFormat = "000000" ' تنسيق العمود B بتكست Columns("B").NumberFormat = "@" ' تقسيم الأسماء في العمود C Dim lastRow As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow Dim fullNameA As String Dim fullNameB As String Dim combinedNames As String ' قراءة الأسماء من العمود A و B fullNameA = Cells(i, "A").Value fullNameB = Cells(i, "B").Value ' المقارنة والتحقق من الأسماء المتطابقة If InStr(fullNameB, fullNameA) > 0 Or InStr(fullNameA, fullNameB) > 0 Then combinedNames = fullNameA Else combinedNames = fullNameA & vbCrLf & fullNameB End If ' وضع الأسماء في العمود C Cells(i, "C").Value = combinedNames Next i End Sub  
  18. abouelhassan's post in نسخ جدول / استعلام / تقرير و لصقه بالكود داخل قاعدة البيانات /// منقول //// was marked as the answer   
    البرنامج اظهر لى خطأ اخى الكريم عند النسخ
    مشكور 
  19. abouelhassan's post in غلق شيت اكسيل بداخل ملف عمل بباسورد ولايفتح الا بادخال الباسورد was marked as the answer   
    تفضل الباسورد1234
    test00.xlsm
  20. abouelhassan's post in كيف اغير اسم الادوات الخاصة بالمطور في الاكسل was marked as the answer   
    فى الشريط  المعادلات بجانبه مربع صغير بالاعلى تجد به الاسم زر1 اعمل عليه سيلكت بالموس واكتب الاسم الذى تريده واضغط انتر
    احترامى
  21. abouelhassan's post in اضافة رابط صفحة في الفورم was marked as the answer   
    تفضل
    فتح صفحة انترنت بالفورم.xlsm
  22. abouelhassan's post in كود على أداة انزال الفورم الى شريط مهام الويندوز was marked as the answer   
    الملف يعمل لدى وزر تكبير وتصغير تمام
     
    تواتي 31.xlsm
  23. abouelhassan's post in فورم ترحيل بيانات was marked as the answer   
    اخى قد يفيدك هذا الموضوع
    احترامى
  24. abouelhassan's post in الاخوة الاساتذة مساعدة بكود حذف الصف المكرر was marked as the answer   
    شكر وتقدير لك اخى بارك الله فيك وحفظ حنين من كل شيطان رجيم
    اخيك ابو الحسن          
×
×
  • اضف...

Important Information