بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
2916 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
7
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو abouelhassan
-
المعادلة تعمل اخى وذكرت لك الأخطاء اين حاول للتعلم
-
هل تحتاج معادلة ام كود 1. افتح Excel وانقر على الخلية التي ترغب في وضع الصيغة فيها. 2. استخدم الصيغة التالية: حيث أن $A$2:A2 تحدد نطاق البيانات الذي تريد البحث فيه للقيم المكررة، و A2 هو الخلية التي تحتوي على القيمة التي تريد فحصها. 3. اضغط على Enter. هذه الصيغة ستظهر القيمة فقط إذا كانت تظهر للمرة الأولى في النطاق المحدد، وإلا ستظهر خلية فارغة. =IF(COUNTIF($A$2:A2,A2)=1,A2,"") وهذا كود Sub RemoveDuplicatesWithCount() Dim LastRow As Long Dim i As Long Dim UniqueValue As String Dim Count As Long LastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow UniqueValue = Cells(i, 1).Value Count = WorksheetFunction.CountIf(Range("A2:A" & LastRow), UniqueValue) If Count = 1 Then Cells(i, 2).Value = UniqueValue Else Cells(i, 2).Value = UniqueValue & " (" & Count & ")" End If Next i End Sub هذا الكود سيقوم بتطبيق الصيغة وسيظهر القيم المكررة مع عددها في الخلية المجاورة. قم بتنفيذ الخطوات نفسها لإضافة الكود إلى وحدة VBA في Excel وتشغيله.
- 1 reply
-
- 2
-
-
المعادلة الجديدة، يمكننا تغيير المعادلة لاستخدام وظائف تدعمها الإصدارات السابقة من Excel. إليك معادلة بديلة تستخدم الوظائف المتاحة في الإصدارات القديمة: ``` =IF(ISERROR(INDEX($A$1:$A$1000, MATCH(0, COUNTIF($E$1:E1, $A$1:$A$1000) + IF($B$1:$B$1 يرجى استبدال النطاقات ($A$1:$A$1000، $B$1:$B$1000، $C$1:$C$1000، $E$1:E1) بنطاقات البيانات الخاصة بك. هذه المعادلة تستخدم وظائف MATCH وCOUNTIF للبحث عن الأرقام المطلوبة وتجنب التكرار. تأكد من تغيير "تاريخ1" و "تاريخ2" و "اسم المكتب" إلى القيم المناسبة. =IF(ISERROR(INDEX($A$1:$A$1000, MATCH(0, COUNTIF($E$1:E1, $A$1:$A$1000) + IF($B$1:$B$1000>=تاريخ1, IF($B$1:$B$1000<=تاريخ2, IF($C$1:$C$1000="اسم المكتب", 1, 0), 0), 0), 0))), "", INDEX($A$1:$A$1000, MATCH(0, COUNTIF($E$1:E1, $A$1:$A$1000) + IF($B$1:$B$1000>=تاريخ1, IF($B$1:$B$1000<=تاريخ2, IF($C$1:$C$1000="اسم المكتب", 1, 0), 0), 0), 0)))
-
المعادلة التي استخدمتها هي جزء من صيغة مصفوفة ديناميكية في Excel لاسترداد الأرقام دون تكرار حسب تاريخين معينين واسم المكتب. إليك كيفية استخدام هذه الصيغة: 1. قم بوضع هذه الصيغة في الخلية التي ترغب في استرداد الأرقام فيها. 2. قم بتعديل "تاريخ1" و "تاريخ2" و "اسم المكتب" لتناسب القيم الفعلية التي تريدها. 3. اضغط على Ctrl + Shift + Enter بدلاً من الضغط على Enter وحده. هذا يجعل Excel يفهم أنها صيغة مصفوفة. إليك الصيغة: ``` =IFERROR(INDEX(A:A, SMALL(IF((B:B>=تاريخ1)*(B:B<=تاريخ2)*(C:C="اسم المكتب"), ROW(B:B)-MIN(ROW(B:B))+1), ROWS(A$1:A1))), "") ``` تأكد من تغيير "تاريخ1" و "تاريخ2" و "اسم المكتب" إلى القيم المناسبة.
-
جرب Private Sub UserForm_Initialize() Dim salesRange As Range Dim cell As Range ' تعيين مجال البيانات Set salesRange = Worksheets("Sheet1").Range("A1:A50") ' قم بتغيير "Sheet1" و "A1:A50" حسب احتياجاتك ' تنسيق البيانات وإضافتها إلى ListBox For Each cell In salesRange ListBox1.AddItem Format(cell.Value, "0.000") Next cell End Sub السؤال الثاني Private Sub ListBox1_Click() Dim selectedCell As Range ' العثور على الخلية المحددة في الصفحة الأصلية Set selectedCell = Worksheets("Sheet1").Range("A1:A50").Find(ListBox1.Value) ' قم بتغيير "Sheet1" و "A1:A50" حسب احتياجاتك ' التأكد من أن الخلية تم العثور عليها If Not selectedCell Is Nothing Then ' التحرك إلى الخلية المحددة selectedCell.Select End If End Sub يمكنك إضافة هذين الكودين إلى مستند Excel باتباع الخطوات التالية: 1. افتح ملف Excel. 2. اذهب إلى "مطور" > "محرر Visual Basic". 3. انقر فوق "إدراج" > "وحدة". 4. قم بلصق الكود في وحدة جديدة. 5. احفظ الملف بامتداد .xlsm. 6. قم بتعيين الوحدة الأولى كـ "UserForm" والوحدة الثانية كـ "ListBox1". 7. أغلق المحرر واستخدم ملف Excel بشكل عادي. لكى تتعلم اخى اتبع ما سبق
-
كود ثان. يعمل ايه ما هو المطلوب لكى ننفذه انت واضع كود عايز تطبقه طيب ما تطبقه بسيطة تعلم تطبيق الكود أما إذا كان لك طلب تحتاج كود لتنفيذه كنت كتبته من الاول او افتح مشاركة جديدة بها طلبك تقبل احترامى
-
تفضل =IFERROR(INDEX(A:A, SMALL(IF((B:B>=تاريخ1)*(B:B<=تاريخ2)*(C:C="اسم المكتب"), ROW(B:B)-MIN(ROW(B:B))+1), ROWS(A$1:A1))), "")
-
جرب هذه الدالة واخبرنى عذرًا على الالتباس. يمكنك استخدام الدالة التالية لجمع الصف الأول بشرط أن تكون القيمة في الصف الثاني غير فارغ =SUM(A1:INDEX(A:A, MATCH(1E+306, B:B, 1))) هذه الدالة تستخدم دالة MATCH للعثور على أول خلية غير فارغة في الصف الثاني، ثم يستخدم الدالة INDEX لإنشاء مرجع للخلية المتناظرة في الصف الأول، وأخيرًا يقوم بجمع القيم في هذا النطاق. =SUM(A1:INDEX(A:A, MATCH(1E+306, B:B, 1)))
-
جرب Sub CalculateRatio() Dim ws As Worksheet Dim sumRow1 As Double Dim sumRow2 As Double Dim ratio As Double ' تعيين ورقة العمل المطلوبة Set ws = ThisWorkbook.Sheets("اسم الورقة") ' حساب مجموع القيم في الصف الأول لعدد الخلايا التي تحتوي على قيم في الصف الثاني sumRow1 = Application.WorksheetFunction.Sum(ws.Range("A1:F1")) / Application.WorksheetFunction.CountA(ws.Range("A2:F2")) ' حساب مجموع القيم في الصف الثاني sumRow2 = Application.WorksheetFunction.Sum(ws.Range("A2:F2")) ' حساب النسبة ratio = sumRow1 / sumRow2 ' عرض النسبة في الخلية المناسبة ws.Range("G1").Value = ratio End Sub
-
وضح طلبك اذا كان بدك تطبيق الكود فقط أرى انك تحاول طالما لديك الكود للتعلم أما إذا كان شى ثانى برجاء التوضيح
-
Sub CalculateRatio() Dim ws As Worksheet Dim sumRow1 As Double Dim sumRow2 As Double Dim ratio As Double ' تعيين ورقة العمل المطلوبة Set ws = ThisWorkbook.Sheets("اسم الورقة") ' حساب مجموع القيم في الصف الأول sumRow1 = Application.WorksheetFunction.Sum(ws.Range("A1:F1")) ' حساب مجموع القيم في الصف الثاني sumRow2 = Application.WorksheetFunction.Sum(ws.Range("A2:F2")) ' حساب النسبة ratio = sumRow1 / sumRow2 ' عرض النسبة في الخلية المناسبة ws.Range("G1").Value = ratio End Sub
-
``` =UNIQUE(FILTER(A:A, (B:B>=تاريخ1)*(B:B<=تاريخ2)*(C:C="اسم المكتب"))) ``` 1. قم بتنسيق البيانات في ورقة العمل بحيث تكون الأرقام في العمود A، تواريخ التاريخ في العمود B، وأسماء المكاتب في العمود C. ``` حيث تحتاج إلى استبدال "تاريخ1" و "تاريخ2" بالتواريخ المرغوبة، و "اسم المكتب" بالاسم المناسب. 3. اضغط على Enter لتطبيق الصيغة. هذه الصيغة ستقوم بجلب الأرقام بدون تكرار حسب التاريخين المحددين واسم المكتب.
-
مشاركة قاعدة البيانات لعدة مستخدمين على الشبكة المحلية
abouelhassan replied to daygham's topic in قسم الأكسيس Access
السلام عليكم استاذي هل بهذه الطريقة يصلح فتح القاعدة من أكثر من شخص فى نفس الوقت -
استطيع عمل ذلك لك اخى بأذن الله بس قوانين المنتدى والحماية الفكرية تمنع مشكور
-
تلك الصيغة تستخدم في جداول البيانات في ، وتهدف إلى حساب مجموع لأرقام معينة استناداً إلى مجموعة من الشروط. في هذه الحالة، يتم تحديد المجموعة التي تريد جمع أرقامها في "range". ثم يحدد "criteria1" الشرط الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو ">100" لاستبعاد الأرقام من 1 إلى 100. وأما "criteria2" فهو الشرط الآخر الذي يجب أن تلبيه الأرقام لتُضاف إلى المجموع، في هذا المثال هو "<=100" لاستبعاد الأرقام من 1 إلى 100.
-
ممكن توضيح بسيط للمطلوب
-
الفائده أن تعمل بيدك اخى وتتعلم الف مبروك نحن فى الخدمة اى وقت احترامى
-
شرح عمل الكود: 1. يتم تعريف متغير `PreviousValue` كمتغير يخزن القيمة السابقة للخلية التي تم تغييرها. 2. الجزء الرئيسي من الكود يأتي في الدالة `Worksheet_Change`، والتي تقوم بتنفيذ الإجراءات التالية: - تحديد ما إذا كانت الخلية المغيرة واحدة أو مجموعة خلايا، وإذا لم تكن فإن الدالة تخرج. - التحقق مما إذا كان التغيير يحدث داخل نطاق الخلايا المستخدمة في ورقة العمل. - تعطيل حدث تغيير الخلية مؤقتًا لتجنب تشغيل الكود بشكل لا نهائي. - إذا كانت القيمة الجديدة مختلفة عن القيمة السابقة، فإنه يتم استدعاء الدالة `LogChanges` لتسجيل التغيير. 3. الدالة `LogChanges` تقوم بتسجيل التغيير في ورقة "Log" عن طريق إضافة تاريخ ووقت التغيير، وعنوان الخلية المتأثرة، والقيمة القديمة، والقيمة الجديدة. بهذه الطريقة، يتم تعقب التغييرات التي تحدث في الخلايا وتسجيلها في ورقة مخصصة تسمى "Log". إذا لم يعمل الكود، قد يكون هناك عدة أسباب لذلك، هي بعض النقاط التي يجب التحقق منها: 1. **التأكد من تمكين ماكرو VBA**: تأكد من أن الوضع الموجود فيه Excel يسمح بتشغيل ماكرو VBA. يمكنك التحقق من ذلك في قسم إعدادات الأمان في Excel. 2. **التحقق من وجود ورقة العمل "Log"**: تأكد من أنه تم إنشاء ورقة العمل "Log" بالطريقة الصحيحة وأن الاسم مكتوب بالشكل الصحيح. 3. **التحقق من الكود الذي تم لصقه في وحدة الفبا**: تأكد من أن الكود تم لصقه في وحدة الفبا الصحيحة ولم يتم تعديله بطريقة تؤثر على عمله. 4. **تفعيل الأحداث في Excel**: تأكد من أن الأحداث مفعلة في Excel. يمكنك التحقق من ذلك بالتأكد من أن خيار "EnableEvents" مفعل في الكود. 5. **اختبار الكود خطوة بخطوة**: يمكنك استخدام محرر VBA لتنفيذ الكود خطوة بخطوة باستخدام زر التشغيل F8، وذلك لمعرفة ما إذا كان هناك أي أخطاء.
-
غير واضح اخى تم الإجابة على المطلوب أم هذا طلب اخر
-
اظهار نوع الاجازة في شيت التقرير الشهري للرفع
abouelhassan replied to Mohammed Alarifi's topic in منتدى الاكسيل Excel
مش فاهم المطلوب وضح اخى -
الاصل اخى أن نقوم بتقديم البسيط وإليك المطلوب جرب Dim PreviousValue As Variant Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Me.UsedRange) Is Nothing Then Application.EnableEvents = False If PreviousValue <> Target.Value Then Call LogChanges(Target.Address, PreviousValue, Target.Value) PreviousValue = Target.Value End If Application.EnableEvents = True End If End Sub Sub LogChanges(ByVal TargetAddress As String, ByVal OldValue As Variant, ByVal NewValue As Variant) Dim wsLog As Worksheet Set wsLog = ThisWorkbook.Sheets("Log") With wsLog .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Now .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = TargetAddress .Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = OldValue .Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = NewValue End With End Sub الآن، قم بإضافة ورقة جديدة في ملف Excel واسمها "Log"، وهذه الورقة ستحتوي على تفاصيل التغييرات. عند كل مرة يتم فيها تغيير قيمة في ورقة العمل، سيتم تسجيل الوقت وعنوان الخلية والقيمة القديمة والجديدة في ورقة "Log". يرجى ملاحظة أنه يمكنك تعديل اسم ورقة العمل التي تحتوي على سجل التغييرات بحسب احتياجاتك.
-
يمكن تبسيط الكود قليلاً لتحقيق التسهيل. فيما يلي نسخة مبسطة من الكود: Sub OpenExcelFileWithPermissions() Dim filePath As String Dim permissionType As Integer ' تحديد مسار الملف filePath = "C:\مسار\الملف.xlsx" ' اختيار نوع الصلاحية: 1 - للقراءة فقط، 2 - كل الصلاحيات متاحة، 3 - تعيين admin permissionType = 2 ' فتح الملف بناء على الصلاحية المحددة Select Case permissionType Case 1 Workbooks.Open filePath, ReadOnly:=True Case 3 Workbooks.Open filePath SetAttr filePath, vbReadOnly Case Else Workbooks.Open filePath End Select End Sub ``` هذا الكود يقوم بفتح الملف بناءً على الصلاحية المحددة دون الحاجة إلى إعادة فتح الملف مرتين للحالات 2 و 3. يجب على المستخدمين تعديل المسار المحدد في المتغير `filePath` ليناسب مسار الملف الخاص بهم. إذا كان الكود لا يعمل، فمن المحتمل أن هناك مشكلة تحتاج إلى التحقق منها. هنا بعض النقاط التي يجب التحقق منها: 1. **المسار الصحيح للملف**: تأكد من أن المسار الذي تم تحديده في المتغير `filePath` يشير بالفعل إلى الملف Excel الذي تريد تطبيق الصلاحيات عليه. يجب أن يكون المسار مكتوب بشكل صحيح مع تحديد امتداد الملف (مثل .xlsx). 2. **رسائل الخطأ**: هل تظهر أي رسائل خطأ عند تشغيل الكود؟ إذا كان الأمر كذلك، فما هي هذه الرسائل؟ قد توفر رسائل الخطأ معلومات مفيدة حول سبب عدم عمل الكود. 3. **صلاحيات الملفات**: تحقق من أنك تمتلك الصلاحيات الكافية لفتح وتعديل الملف. قد تواجه مشكلة إذا كان الملف محميًا بكلمة مرور أو إذا كان لديك صلاحيات محدودة على المجلد الذي يحتوي على الملف. 4. **إصدار VBA**: تأكد من أن الإصدار الخاص بـ VBA مفعل ويعمل بشكل صحيح على جهاز الكمبيوتر الخاص بك. 5. **تعطيل الأمان**: قد تحتاج إلى التحقق مما إذا كانت إعدادات الأمان في Excel تمنع تشغيل الكود. قد تحتاج إلى تمكين الماكروهات والـ VBA في Excel. وانا موجود اخى بالخدمة
-
يمكنك نسخ الكود المذكور في إجابتي السابقة ولصقه في وحدة VBA في ملف Excel الخاص بك. بعد ذلك، يمكنك تعديل المسار المحدد إلى مسار ملف Excel الذي ترغب في تطبيق الصلاحيات عليه بالطبع، يُحقق الكود الصلاحيات المحددة عن طريق استخدام وظيفة `Workbooks.Open` في VBA، التي تسمح بفتح ملف Excel بصلاحيات معينة. 1. في البداية، يتم تعريف مسار الملف باستخدام متغير `filePath`. 2. ثم يتم تحديد نوع الصلاحية المطلوبة باستخدام متغير `permissionType`. 3. يتم استخدام بنية التحكم `Select Case` لتحديد الصلاحية المطلوبة وفتح الملف بناءً على ذلك. 4. إذا كانت الصلاحية محددة كـ "للقراءة فقط" (permissionType = 1)، يتم فتح الملف مع الخاصية `ReadOnly:=True`، مما يعني أنه لا يمكن تعديل الملف. 5. إذا كانت الصلاحية محددة كـ "كل الصلاحيات متاحة" (permissionType = 2)، يتم فتح الملف دون أي قيود. 6. إذا كانت الصلاحية محددة كـ "تعيين admin" (permissionType = 3)، يتم فتح الملف ثم تعيين خاصية القراءة فقط للملف باستخدام `SetAttr`، مما يجعله لا يمكن تعديله إلا بإلغاء هذه الخاصية. هذا الكود يتيح لك التحكم في صلاحيات فتح الملف بشكل دقيق وفقًا للمتطلبات التي تحددها.
-
Sub SetPermissions() Dim filePath As String Dim permissionType As Integer ' تحديد مسار الملف filePath = "C:\مسار\الملف.xlsx" ' اختيار نوع الصلاحية: 1 - للقراءة فقط، 2 - كل الصلاحيات متاحة، 3 - تعيين admin permissionType = 2 ' فتح الملف بناء على الصلاحية المحددة Select Case permissionType Case 1 ' فتح الملف للقراءة فقط Workbooks.Open filePath, ReadOnly:=True Case 2 ' فتح الملف بكل الصلاحيات Workbooks.Open filePath Case 3 ' فتح الملف كمسؤول (admin) Workbooks.Open filePath SetAttr filePath, vbReadOnly End Select End Sub يرجى استبدال "C:\مسار\الملف.xlsx" بالمسار الفعلي لملف Excel الذي ترغب في تعيين الصلاحيات له. هذا الكود يفتح الملف بناءً على نوع الصلاحية المحددة وفقًا للخيارات التي قمت بتحديدها (للقراءة فقط، كل الصلاحيات متاحة، تعيين admin). احترامي وتقديري