البحث في الموقع
Showing results for tags 'دالة'.
تم العثور علي 33 نتائج
-
السلام عليكم ورحمة الله وبركاته بداية نشكر الأستاذ عبدالله باقشير الذى قدم لنا الدالة الشهيرة Kh_Father_Name لاستخراج اسم الاب كاملا من اسم الشخص العربى و ذلك بمساعدة الدالة Kh_Father_Replace ثانيا أقدم لكم الدالة المستحدثة MokhtarFamily تشبه دالة الاستاذ عبدالله فى العمل والخواص إلا إنها أشمل نوعا ما حيث تستطيع الدالة أن تقوم باستخراج الآتى 1- اسم الابن 2- اسم الاب 3- اسم الاب كاملا 4- اسم الجد 5- اسم الجد كاملا 6- اسم العائلة الصورة العامة للدالة ( MokhtarFamily (StrgName,NameNum,AcceptSingle تلاحظ أن الدالة تتكون من 3 بارامتر StrgName NameNum AcceptSingle البارامتر الاول نص اجبارى يحمل اسم الشخص الذى تتعامل معه البارامتر الثانى عدد اجبارى من 1 الى 4 1 لاستخراج اسم الابن 2 لاستخراج اسم الاب 3 لاستخراج اسم الجد 4 لاستخراج اسم العائلة أو اللقب البارامتر الثالث اختيارى بين قيمتين هما False و True فى كل الأحوال ناتج الدالة يكون اسما منفردا باستثناء True فى استخراج اسم الأب أو الجد فقط حيث تأتى باسم الأب أو الجد كاملا كود الدالة مع التعليقات Option Explicit Public Function MokhtarFamily(ByVal StrgName As String, ByVal NameNum As Integer, Optional AcceptNext As Boolean) As String ' Author : Mokhtar Hussein ' Release : 5 - 11 - 2016 Assuit Eygypt ' The MokhtarFamily is a new User Defined Function returns son's name or Father's name ' or Grandfather's name or Family's name of Arab person's name bases on a specific number. ' The MokhtarFamily udf takes into consideration the Arab complex names ' The Syntax : ' MokhtarFamily(StrgName,NameNum,AcceptNext) ' The MokhtarFamily function syntax has these named arguments: ' 1 - StrgName : Required String ' - The person's name which you are useing. ' 2 - NameNum : Required Integer ' - 1 to return the son's name. ' - 2 to return the Father's name ' - 3 to return the Grandfather's name ' - 4 to return the Family's Name . ' 3 - AcceptNext : Optional False or True ' - False to return all names in a Single form ' - True to return Father's name and Grandfather's name of fourfold Arab person's name ln a full form '-------------------------------------------------------------------------------------------------------------------------------------- ' الاعلان عن المتغيرات Dim TempName As String, SonName As String, Fname As String, GfName As String, FamilyName As String, Ipos As Integer Dim Sn As String, OtherNames As String, xName As String, xxName As String, xxxName As String, xxxxName As String, Arr, itm ' أضف هنا المقطع الأول ملحقا بفراغ أوالثانى مسبوقا بفراغ والتى تتكون منها الأسماء المركبة مثل عبد الرحمن أو المعتصم بالله Arr = Array("أبو ", "ابو ", "عبد ", "آل ", " الله", " الدين", " الإسلام", " الاسلام", " الهدى", " الحق", " النصر", " العهد", " النور", " بالله", " الزهراء", " كلثوم") ' ErrorHandlerفى حالة حدوث خطأ اذهب الى السطر الذى يبدأ بـ On Error GoTo ErrorHandler ' جعل الدالة حساسة لأى تغير فى الخلية التى تعمل عليها ' بمعنى أى تغير فى الخلية يتبعه تغير ناتج الدالة مباشرة Application.Volatile True ' التعامل مع الاسماء المركبة ' Arr حلقة تكرارية على كل اسم مركب فى المصفوفة For Each itm In Arr ' استبدال الفراغ بين المقطعين بشرطة واعتبارهما اسم واحد TempName = Replace(itm, " ", "_") ' وضع الشرطة فى كل اسم مركب يوجد باسم الشخص ' باستبدال أى اسم مركب به فراغ ' باسم مركب به شرطة بين مقطعيه StrgName = Replace(StrgName, itm, TempName) ' الانتقال الى الاسم التالى Next itm ' بالخطوة السابقة صار الاسم المركب اسما واحدا ' الخطوة التالية فحص المتغير الذى يحمل اسم الشخص ' هل المتغير فارغ أم أن هذا المتغير به اسم شخص ' اذا كان المتغير الذى يحمل اسم الشخص فارغا If IsEmpty(StrgName) Then 'فاذهب الى السطر GoTo ErrorHandler Else ' وان لم يكن المتغير فارغا يتم ' تخزين اسم الشخص فى متغير جديد ' مع حذف الفراغات فقط يمين و يسار اسم الشخص ' مع بقاء الفراغات الداخلية بين كل اسم واسم ' Trim وذلك يتم باستخدام الدالة Sn = Trim(StrgName) End If ' بالخطوة السابقة صار اسم الشخص جاهزا ' لاستخــراج الأسماء منه على التوالى منه 'وجود فراغ أو فراغات فى اسم الشخص معناه 'أن اسم الشخص مكون من اسمين فرعيين أوأكثر ' وعدم وجود الفراغ دليل على أنه اسم واحد ' ===== استخراج الاسم الأول أى اسم الابن ===== ' البحث عن موضع الفراغ الأول فى اسم الشخص ' InStr وهذا يتم باستخدام الدالة Ipos = InStr(Sn, " ") ' اذا كان الموضع = صفر If Ipos = 0 Then ' فإن اسم الشخص بدون فراغ وهذا يعنى ' أنّ اسم الشخص مكون فقط من اسم واحد ' وبالتالى المتغير الذى يحمل الاسم الاول ' تكون قيمته = اســــــــم الشخص xName = Sn ' أيضا المتغير الذى يحمل باقى الأسماء ' كاسم الأب و الجد و العائلة = لا شىء OtherNames = vbNullString ' اسم الابن قد يكون مركبا وبداخله شرطة ' للتخلص من الشرطة نضع بدلا منها فراغ SonName = Replace(Trim(xName), "_", " ") Else ' وان لم يكن الموضع = صفر فإن ' هذا معناه أن اسم الشخص به فراغ ' ومعناه أنه مكون من اسمين أو أكثر ' اسم الابن = الحروف التى تقع يسار اسم الشخص ' انتهاء بالحرف الذى يسبق الفراغ مباشرة xName = Left(Sn, Ipos - 1) ' أيضا المتغير الذى يحمل باقى الأسماء ' يساوى كل الحروف التى تقع يمين الفراغ مباشرة 'هذا المتغير نستخرج منه باقى الأسماء على التوالى OtherNames = Trim(Right(Sn, Len(Sn) - Ipos)) ' استبدال الشرطة فى اسم الابن المركب بفراغ SonName = Replace(Trim(xName), "_", " ") End If ' ===== استخراج الاسم الثانى أى اسم الأب ===== ' استخراج الاسم الثانى أو اسم الأب بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الابن Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxName = OtherNames OtherNames = vbNullString Fname = Replace(Trim(xxName), "_", " ") Else xxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) Fname = Replace(Trim(xxName), "_", " ") End If ' ===== استخراج الاسم الثالث أى اسم الجد ===== ' استخراج الاسم الثالث أو اسم الجد بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الأب Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxxName = OtherNames OtherNames = vbNullString GfName = Replace(Trim(xxxName), "_", " ") Else xxxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) GfName = Replace(Trim(xxxName), "_", " ") End If ' ===== استخراج الاسم الرابع أى اسم العائلة ===== ' استخراج الاسم الرابع أو اسم العائلة بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الجد Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxxxName = OtherNames OtherNames = vbNullString FamilyName = Replace(Trim(xxxxName), "_", " ") Else xxxxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) FamilyName = Replace(Trim(xxxxName), "_", " ") End If ' ===== النتائج المختلفة للدالة ===== ' اذا كان المتغير رقما ويساوى 1 If IsNumeric(NameNum) And NameNum = 1 Then ' ناتج الدالة = اسم الابن :الخروج من الدالة MokhtarFamily = SonName: Exit Function ' اسم الابن ' أيضا اذا كان المتغير رقما ويساوى 4 ElseIf IsNumeric(NameNum) And NameNum = 4 Then ' اسم العائلة أو اللقب ' ناتج الدالة = اسم العائلة :الخروج من الدالة MokhtarFamily = FamilyName: Exit Function End If ' اذا كان المتغير لا يساوى True If AcceptNext <> True Then ' و كان المتغير رقما ويساوى 2 If IsNumeric(NameNum) And NameNum = 2 Then 'ناتج الدالة = اسم الاب فقط :الخروج من الدالة MokhtarFamily = Fname: Exit Function ' واذا كان المتغير رقما ويساوى 3 ElseIf IsNumeric(NameNum) And NameNum = 3 Then ' ناتج الدالة = اسم الجد فقط :الخروج من الدالة MokhtarFamily = GfName: Exit Function End If: End If ' اذا كان المتغير لا يساوى False If AcceptNext <> False Then ' و كان المتغير رقما ويساوى 2 If IsNumeric(NameNum) And NameNum = 2 Then 'ناتج الدالة = اسم الاب كاملا باضافةالجد والعائلة ويفصل بينهم فراغ :الخروج من الدالة MokhtarFamily = Fname & Space(1) & GfName & Space(1) & FamilyName: Exit Function ' واذا كان المتغير رقما ويساوى 3 ElseIf IsNumeric(NameNum) And NameNum = 3 Then ' ناتج الدالة = اسم الجد كاملا باضافةالعائلة ويفصل بينهما فراغ MokhtarFamily = GfName & Space(1) & FamilyName: Exit Function End If: End If ' اعتبارا ناتج الدالة لا شىء فى حالة حدوث أخطاء ErrorHandler: MokhtarFamily = vbNullString End Function المرفق يوضح كيفية استخدام الدالة مباشرة على الخلايا و كيفية استدعاء الدالة بالكود أتمنى أن تكون الدالة مفيدة وتنال اعجابكم مع خالص تحياتى
-
السلام عليكم Option Explicit ' بسم الله الرحمن الرحيم " ' ******************** " ' دالة استخراج اسم ولي الأمر " '========================================" ' يامكانية معالجة الاسم المركب الاول " ' تلقائياً حسب معايير معرفة لديها " ' Kh_Father_Replace في الدالة " ' ويمكنك اضافة اي معيار آخر " ' بجانب المعايير الموجودة " ' MyArray في المتغير " ' مع مراعاة وجود فراغ بداية ' او نهاية المعيار '========================================" '----------------------------------------------------------------- Function Kh_Father_Name(ByVal Name As String) As String Dim KhString As String, SearchChar As String, Kh_Mid As String, Kh_Rep As String Dim KhMyNo As Integer On Error GoTo Err_Kh_Father_Name If IsEmpty(Name) Then GoTo Err_Kh_Father_Name KhString = Kh_Father_Replace(Trim(Name)) & " " SearchChar = " " KhMyNo = InStr(1, KhString, SearchChar, 1) Kh_Mid = Trim(Mid(KhString, KhMyNo, Len(KhString))) Kh_Rep = Replace(Kh_Mid, "_", " ") Kh_Father_Name = Kh_Rep Exit Function Err_Kh_Father_Name: Kh_Father_Name = "" End Function Private Function Kh_Father_Replace(ByVal Kh_Sub As String) As String Dim MyArray, Ar Dim Sn As String, Re As String '==================================================== ' يمكنك اضافة اي معيار آخر هنا بجانب المعايير الموجودة MyArray = Array("عبد ", "أبو ", "ابو ", "آل ", " الله" _ , " الدين", " الإسلام", " الاسلام", " الحق") '==================================================== Sn = Kh_Sub For Each Ar In MyArray Re = Replace(Ar, " ", "_") Sn = Replace(Sn, Ar, Re) Next Kh_Father_Replace = Sn End Function استخراج اسم ولي الامر.rar
-
السلام عليكم ورحمة الله وبركاته .. اليوم جايب لكم موقع وظيفته يقرأ أو يشرح لك الكود بلغة إنجليزية مفهومة ، ويمكنك عن طريق المترجم تحويلها إلى اللغة العربية 🙂 وهذا هو الموقع : https://denigma.app الموقع بفضل الله يتعامل مع معظم اللغات البرمجية تقريبا ، ومن ضمنها الفيجوال بيسك VBA .. وهذا شرح مبسط للاستخدام .. بعد فتح الموقع ننزل تحت إلى هذي الخانة، يوضع الكود في الخانة اليسرى ويظهر التفسير في الجهة اليمنى : نجرب نلصق دالة حساب العمر بالسنة والشهر واليوم ونضغط على [Explain it!] : ولترجمته باللغة العربية ، تأخذ النص لمترجم جوجل فيعطيك النتيجة هكذا : 🙂 هذا وسلامتكم ☺️🌹
-
السلام عليكم ورحمة الله وبركاته .. تحية طيبة إخواني .. 🌹 أحضرت لكم اليوم كود وظيفته استخراج الملفات المخزنة في جداول الأكسس كمرفقات داخلية إلى خارج قاعدة البيانات دفعة واحدة 🙂 وهو مفيد جدا لمن لديه قاعدة بيانات قد ملئها بالمرفقات ويحاول الآن تصغير القاعدة باستخراج المرفقات منها وحفظها خارج قاعدة البيانات بسهولة ويسر .. بدل حفظها ملف ملف وهي عملية مرهقة بالتأكيد .. خصوصا إذا كان عدد المرفقات بالمئات .. إليكم الكود : Public Function ExtractAllAttachments(ByVal TableName As String, ByVal AttchmentColumnName As String, ByVal ExtractToFolder As String) ' TableName : اسم الجدول ' AttchmentColumnName : اسم حقل المرفقات ' ExtractToFolder: المكان المراد استخراج الملفات إليه مثال : "C:\ExtractHere" Dim RsMainrecords As dao.Recordset2 Dim RsAttachments As dao.Recordset2 Set RsMainrecords = CurrentDb.OpenRecordset("select " & AttchmentColumnName & _ " from " & TableName & _ " where " & AttchmentColumnName & ".FileName is not Null") Do Until RsMainrecords.EOF Set RsAttachments = RsMainrecords.Fields(AttchmentColumnName).Value Do Until RsAttachments.EOF Dim OutputFileName As String OutputFileName = RsAttachments.Fields("FileName").Value OutputFileName = ExtractToFolder & "\" & OutputFileName RsAttachments.Fields("FileData").SaveToFile OutputFileName RsAttachments.MoveNext Loop RsAttachments.Close RsMainrecords.MoveNext Loop RsMainrecords.Close Set RsMainrecords = Nothing Set RsAttachments = Nothing End Function ويتم تشغيله بالطريقة التالية : ExtractAllAttachments("TableName","AttchmentColumnName","ExtractToFolder") ستحتاج لإعطائه 1- اسم الجدول ، 2 - اسم الحقل ، 3 - المكان الذي تريد استخراج المرفقات فيه . المصدر : https://www.youtube.com/watch?v=jHIgay9goWo
-
بعض أسئلة الاستبيانات تكون ايجابية و الاخرى سلبية ، و فى حال رغبت فى اخذ متوسطات لاجابات محور معين يضم اسئلة سلبية و ايجابية ، يجب عكس النتائج الرقمية المناظرة لقيمة الرد، فمثلا الاصل فى حالة مقياس ليكارد الخماس أن تكون اجابة اتفق جدا = 5 و اتفق = 4 ، .... و هكذا ، فاذا كانت الاسئلة كلها ايجابية و هناك سؤال سلبي فهنا يجب تعديل القيم لاجابات هذا السؤال لتكون اتفق جدا = 1 ، اتفق = 2 ، ... قبل اجراء اية عمليات حسابية على المحور مثل حساب المتوسط مثلا. و اذا كان التفريغ يدويا فيمكن مراعاة ذلك ، اما فى حالة استخدام ادوات الكترونية لجمع الاستبيان فان الارقام تكون مسجلة بالفعل و يجب تعديلها ، و قد تكون العملية مرهقة فى حالة تعدد المتغيرات او كبر حجم العينة. و بالطبع يمكن تعديل الاسئلة لتكون فى نفس المحور ايجابية او سلبية ، و لكن فى بعض الاحيان يكون من الاسهل على مجيب الاستبيان الاجابة عن الصيغة الايجابية او السلبية بحسب المتعارف عليه في بعض مجالات التخصص ، فبصرف النظر عن صحة وجود اسئلة سلبية و ايجابية فى نفس المحور ، للقيام بعملية تعديل (عكس) نتائج عدد من الاجابات لتحويلها من ايجابية الي سلبية بصورة الية ، قمت باعداد دالة فى الاكسيل لتقوم بهذا الغرض (مرفق المثال). لنفرض ان الاجابات الاصلية كانت عن درجة الاتفاق مع كون وقت المشروع مناسب ، و اردتا تغيير الاجابات لتعبر عن كون زمن المشروع غير مناسب كما هو مبين: و ذلك عن طريق استخدام الدالة التالية: Function Reverse_Ordinal2(original_Ordinal As Byte) Dim newVal As Byte Select Case original_Ordinal Case Is = 1 newVal = 5 Case Is = 2 newVal = 4 Case Is = 3 newVal = 3 Case Is = 4 newVal = 2 Case Is = 5 newVal = 1 Case Else newVal = 0 End Select Reverse_Ordinal2 = newVal End Function مرفق المثال و لتشغيله يجب تفعيل الماكرو فى ملف الاكسيل و يتم ادراج الكود فى ملف اخر عن طريق فتح شاشة محرر البيزيك ALT+F11 ثم : السحب للملف الحديد او اختيار ادراج موديول جديد و نسخ الكود او استخدام الدالة و الملف المرفق مفتوح و اذا لم يكن لك خبرة بالتعامل مع الكود ، و لا ترغب فى ذلك ، يمكنك استخدام الملف المرفق مباشرة للتحويل و سحب أو نسخ الدالة للاسفل لتمتد لعدد الاسطر المطلوب ، مع مراعاة تفعيل الماكرو عند فتح الملف لتعمل الدالة ReverseOrdinalLekerd.xlsm
- 3 replies
-
- 4
-
- مقياس ليكارد
- دالة
-
(و1 أكثر)
موسوم بكلمه :
-
السلام عليكم مرفق ملف يشرح داله subtotal subtotal.rar
-
السلام عليكم اريد حساب المكافأة للطالب بناء على الاختبار و النسبة والنقاط الاختبار يضرب في 10 العدد الاعلى للاختبار : 30 الدرجة الأصلية للنتيجة 100 الدرجة الاصلية للنقاط 250 يعني مثال : 30 الاختبار * 10 الناتج 300 ومثلا حصل على 80 في الاختبار و حصل على 200 في النقاط فيتم الحسم بناءا على التالي : 50% اختبار 20%الدرجه 30%نقاط تجربة المصنف.xlsx
-
ازاى تعرف وظيفة دالة معينة ادخل على الرابط التالى وهو الموقع الرسمى ل office وباللغة العربية https://support.office.com/ar-sa/article/دالات-excel-بالترتيب-الأبجدي-b3944572-255d-4efb-bb96-c6d90033e188?omkt=ar-SA&ui=ar-SA&rs=ar-SA&ad=SA#bm20 ----------------------------------------------------------------------------- هتلاقى كل الدوال مرتبة ابجديا اختار اول حرف للدالة اللى عاوزها على سبيل المثال الدالة if هتدوس على i هتلاقيه نزلك على كل الدوال اللى بتبدأ ب i ومش بس كدا دالة زى ifs هتلاقى مكتوب تحتها مثلا 2016 ودا معناه ان الدالة دى فى office 2016 فما فوق يعنى الاقل من 2016 مش موجود فيه الدالة دى هتدوس على if هتظهرلك صفحة كالتالى هتلاقيها مقسمة كالتالى :- 1- هتلاقى اقتراحات للدوال اللى شبه الدالة دى او قريبة منها 2 - هتلاقى اصدارات الاكسل اللى متوفرة فيها الدالة دى 3- هتلاقى شرح مختصر الدالة دى وظيفتها ايه يعنى بتستخدمها ليه 4 - هتلاقى امثلة للدالة -------------------------------------------------------------------------------------------------- طب لو عاوز لغة تانى غير العربية هتنزل لاخر الصفحة وتدوس على العربية زى ما موضح بالصورة هتظهرلك صفحة تانى فيها كل اللغات المتوفرة على سبيل المثال انت عاوز اللغة الانجليزية دوس على English زى ما هو موضح --------------------------------------------------------------------------------------------- طب ايه فائدة اللغة الانجليزية .. ؟ ممكن تلاقى فيها فيديو بيشرحلك الدالة دى مش بس مجرد صور وامثلة بس بيبقى باللغة الانجليزية ------------------------------------------------------------------------------ طريقة اخرى أنك تدخل صفحة الاكسل و تقف على خلية ما مثلا a1 وتعمل الخطوات التالية :- 1 - هتدوس على fx 2 - فى مربع البحث هتكتب اسم الدالة اللى عاوزها زى مثلا if 3 - هتدوس على go 4 - هتختار الدالة اللى هى هنا if 5 - هتدوس ok لاحظ ان فى 6 بيبقى مكتوب recommended مثلا انت ممكن تغيرها وتختار all هتلاقى كل الدوال مرتبة ابجديا ودا لو كتبت اسم الدالة زى الخطوة 2 ومظهرتش معاك الدالة اللى عاوزها ----------------------------------------------------------------------------- وبعدين هتظرلك الدالة زى الصورة كدا 1- هتدوس على Help on this function 2- هتلاقى وصلك لنفس الصفحة الخاصة ب help ---------------------------------------------------------------- الموضوع دا بيكون مفيد للناس المبتدئة بالاكسل خاصة ان فى بعض الدوال زى مثلا الدالة Rand أو Text بيبقى ليها اكثر من شكل للاستخدام فدا بيفيد ازاى تستخدم الدالة دى
-
السلام عليكم من فضلكم أرجو أن يتسع صدركم وتشرحوا لي بعض المعادلات و الأكواد كيف أعدل في هذه المعادلة: =SOMMEPROD((Q$18:Q$87>=5)*($A$18:$A$87="ذ")) لتصبح تحسب عدد القيم التي هي أكبر من أو يساوي 5 وأصغر من 6 وشكرا جزيلا
- 9 replies
-
- تعديل معادلة
- sommeprod
-
(و1 أكثر)
موسوم بكلمه :
-
السلام عليكم الأخوة الكرام أعضاء المنتدى مرفق شيت اكسيل مطلوب فيه احتساب الفرق بالأيام داخل خلية فترة الضمان بين التاريخ الموجود في خلية تاريخ الشراء و التاريخ الموجود في خلية تاريخ العطل وكذلك احتساب الفرق بالأيام داخل خلية فترة التشغيل بين التاريخ الموجود في خلية تاريخ التركيب و التاريخ الموجود في خلية تاريخ العطل مع مراعاة اختلاف عدد الأيام بين الشهور الميلادية و أن تنسيق خلايا التاريخ ( شراء - تركيب - عطل ) يجب أن يكون ( dd/mm/yyyy ) A.rar
-
-
اخوانى الافاضل كيف استخرج آخر قيمة ايجار وتاريخ الايجار المسجلة لرقم سيارة ضمن ملف به اكثر من 80 سيارة ؟؟
-
السلام عليكم ورحمة الله وبركاته اريد ان اتعلم الدالة المستعلمة لانجاز البطاقات المدرسية وبارك الله فيكم اذا كان ممكن الشرح بالفيديو وشكرا
-
الاخوة الزملاء السلام عليكم ورحمة الله وبركاتة فيديو دالة التفقيط للارقام في الاكسيل أرجو نشر الفيديو ومتابعة القناة للمزيد من الفيديو لتعلم الإكسيل عبر اليوتيوب إن شاء الله
-
السلام عليكم ورحمة الله وبركاتة الاخوة الزملاء السلام عليكم ورحمة الله وبركاتة ساشرح اليوم بطريقة بسيطة كيفية إستخدام Sum IF في هذا الفيديو يتم شرح دالة Sum If بالإضافة إلي استخدمها بطريقة احترافية في كشف المرتبات . أرجو نشر الفيديو ومتابعة القناة للمزيد من الفيديو لتعلم الإكسيل عبر اليوتيوب
-
السلام عليكم ورحمة الله وبركاته بداية نشكر الأستاذ عبدالله باقشير الذى قدم لنا الدالة الشهيرة Kh_Father_Name لاستخراج اسم الاب كاملا من اسم الشخص العربى و ذلك بمساعدة الدالة Kh_Father_Replace ثانيا أقدم لكم الدالة المستحدثة MokhtarFamily تشبه دالة الاستاذ عبدالله فى العمل والخواص إلا إنها أشمل نوعا ما حيث تستطيع الدالة أن تقوم باستخراج الآتى 1- اسم الابن 2- اسم الاب 3- اسم الاب كاملا 4- اسم الجد 5- اسم الجد كاملا 6- اسم العائلة منفردا الصورة العامة للدالة MokhtarFamily (StrgName,NameNum,AcceptSingle) تلاحظ أن الدالة تتكون من 3 بارامتر StrgName NameNum AcceptSingle البارامتر الاول نص اجبارى يحمل اسم الشخص الذى تتعامل معه البارامتر الثانى عدد اجبارى من 1 الى 4 1 لاستخراج اسم الابن 2 لاستخراج اسم الاب 3 لاستخراج اسم الجد 4 لاستخراج اسم العائلة أو اللقب البارامتر الثالث اختيارى بين قيمتين هما False و True فى كل الأحوال ناتج الدالة يكون اسما منفردا باستثناء True فى استخراج اسم الأب أو الجد فقط حيث تأتى باسم الأب أو الجد كاملا كود الدالة مع التعليقات Option Explicit Public Function MokhtarFamily(ByVal StrgName As String, ByVal NameNum As Integer, Optional AcceptNext As Boolean) As String ' Author : Mokhtar Hussein ' Release : 5 - 11 - 2016 Assuit Eygypt ' The MokhtarFamily is a new User Defined Function returns son's name or Father's name ' or Grandfather's name or Family's name of Arab person's name bases on a specific number. ' The MokhtarFamily udf takes into consideration the Arab complex names ' The Syntax : ' MokhtarFamily(StrgName,NameNum,AcceptNext) ' The MokhtarFamily function syntax has these named arguments: ' 1 - StrgName : Required String ' - The person's name which you are useing. ' 2 - NameNum : Required Integer ' - 1 to return the son's name. ' - 2 to return the Father's name ' - 3 to return the Grandfather's name ' - 4 to return the Family's Name . ' 3 - AcceptNext : Optional False or True ' - False to return all names in a Single form ' - True to return Father's name and Grandfather's name of fourfold Arab person's name ln a full form '-------------------------------------------------------------------------------------------------------------------------------------- ' الاعلان عن المتغيرات Dim TempName As String, SonName As String, Fname As String, GfName As String, FamilyName As String, Ipos As Integer Dim Sn As String, OtherNames As String, xName As String, xxName As String, xxxName As String, xxxxName As String, Arr, itm ' أضف هنا المقطع الأول ملحقا بفراغ أوالثانى مسبوقا بفراغ والتى تتكون منها الأسماء المركبة مثل عبد الرحمن أو المعتصم بالله Arr = Array("أبو ", "ابو ", "عبد ", "آل ", " الله", " الدين", " الإسلام", " الاسلام", " الهدى", " الحق", " النصر", " العهد", " النور", " بالله", " الزهراء", " كلثوم") ' ErrorHandlerفى حالة حدوث خطأ اذهب الى السطر الذى يبدأ بـ On Error GoTo ErrorHandler ' جعل الدالة حساسة لأى تغير فى الخلية التى تعمل عليها ' بمعنى أى تغير فى الخلية يتبعه تغير ناتج الدالة مباشرة Application.Volatile True ' التعامل مع الاسماء المركبة ' Arr حلقة تكرارية على كل اسم مركب فى المصفوفة For Each itm In Arr ' استبدال الفراغ بين المقطعين بشرطة واعتبارهما اسم واحد TempName = Replace(itm, " ", "_") ' وضع الشرطة فى كل اسم مركب يوجد باسم الشخص ' باستبدال أى اسم مركب به فراغ ' باسم مركب به شرطة بين مقطعيه StrgName = Replace(StrgName, itm, TempName) ' الانتقال الى الاسم التالى Next itm ' بالخطوة السابقة صار الاسم المركب اسما واحدا ' الخطوة التالية فحص المتغير الذى يحمل اسم الشخص ' هل المتغير فارغ أم أن هذا المتغير به اسم شخص ' اذا كان المتغير الذى يحمل اسم الشخص فارغا If IsEmpty(StrgName) Then 'فاذهب الى السطر GoTo ErrorHandler Else ' وان لم يكن المتغير فارغا يتم ' تخزين اسم الشخص فى متغير جديد ' مع حذف الفراغات فقط يمين و يسار اسم الشخص ' مع بقاء الفراغات الداخلية بين كل اسم واسم ' Trim وذلك يتم باستخدام الدالة Sn = Trim(StrgName) End If ' بالخطوة السابقة صار اسم الشخص جاهزا ' لاستخــراج الأسماء منه على التوالى منه 'وجود فراغ أو فراغات فى اسم الشخص معناه 'أن اسم الشخص مكون من اسمين فرعيين أوأكثر ' وعدم وجود الفراغ دليل على أنه اسم واحد ' ===== استخراج الاسم الأول أى اسم الابن ===== ' البحث عن موضع الفراغ الأول فى اسم الشخص ' InStr وهذا يتم باستخدام الدالة Ipos = InStr(Sn, " ") ' اذا كان الموضع = صفر If Ipos = 0 Then ' فإن اسم الشخص بدون فراغ وهذا يعنى ' أنّ اسم الشخص مكون فقط من اسم واحد ' وبالتالى المتغير الذى يحمل الاسم الاول ' تكون قيمته = اســــــــم الشخص xName = Sn ' أيضا المتغير الذى يحمل باقى الأسماء ' كاسم الأب و الجد و العائلة = لا شىء OtherNames = vbNullString ' اسم الابن قد يكون مركبا وبداخله شرطة ' للتخلص من الشرطة نضع بدلا منها فراغ SonName = Replace(Trim(xName), "_", " ") Else ' وان لم يكن الموضع = صفر فإن ' هذا معناه أن اسم الشخص به فراغ ' ومعناه أنه مكون من اسمين أو أكثر ' اسم الابن = الحروف التى تقع يسار اسم الشخص ' انتهاء بالحرف الذى يسبق الفراغ مباشرة xName = Left(Sn, Ipos - 1) ' أيضا المتغير الذى يحمل باقى الأسماء ' يساوى كل الحروف التى تقع يمين الفراغ مباشرة 'هذا المتغير نستخرج منه باقى الأسماء على التوالى OtherNames = Trim(Right(Sn, Len(Sn) - Ipos)) ' استبدال الشرطة فى اسم الابن المركب بفراغ SonName = Replace(Trim(xName), "_", " ") End If ' ===== استخراج الاسم الثانى أى اسم الأب ===== ' استخراج الاسم الثانى أو اسم الأب بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الابن Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxName = OtherNames OtherNames = vbNullString Fname = Replace(Trim(xxName), "_", " ") Else xxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) Fname = Replace(Trim(xxName), "_", " ") End If ' ===== استخراج الاسم الثالث أى اسم الجد ===== ' استخراج الاسم الثالث أو اسم الجد بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الأب Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxxName = OtherNames OtherNames = vbNullString GfName = Replace(Trim(xxxName), "_", " ") Else xxxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) GfName = Replace(Trim(xxxName), "_", " ") End If ' ===== استخراج الاسم الرابع أى اسم العائلة ===== ' استخراج الاسم الرابع أو اسم العائلة بنفس الكيفية السابقة ' لكن من المتغير الذى يحمل الأسماء التى تقع بعد اسم الجد Ipos = InStr(OtherNames, " ") If Ipos = 0 Then xxxxName = OtherNames OtherNames = vbNullString FamilyName = Replace(Trim(xxxxName), "_", " ") Else xxxxName = Left(OtherNames, Ipos - 1) OtherNames = Trim(Right(OtherNames, Len(OtherNames) - Ipos)) FamilyName = Replace(Trim(xxxxName), "_", " ") End If ' ===== النتائج المختلفة للدالة ===== ' اذا كان المتغير رقما ويساوى 1 If IsNumeric(NameNum) And NameNum = 1 Then ' ناتج الدالة = اسم الابن :الخروج من الدالة MokhtarFamily = SonName: Exit Function ' اسم الابن ' أيضا اذا كان المتغير رقما ويساوى 4 ElseIf IsNumeric(NameNum) And NameNum = 4 Then ' اسم العائلة أو اللقب ' ناتج الدالة = اسم العائلة :الخروج من الدالة MokhtarFamily = FamilyName: Exit Function End If ' اذا كان المتغير لا يساوى True If AcceptNext <> True Then ' و كان المتغير رقما ويساوى 2 If IsNumeric(NameNum) And NameNum = 2 Then 'ناتج الدالة = اسم الاب فقط :الخروج من الدالة MokhtarFamily = Fname: Exit Function ' واذا كان المتغير رقما ويساوى 3 ElseIf IsNumeric(NameNum) And NameNum = 3 Then ' ناتج الدالة = اسم الجد فقط :الخروج من الدالة MokhtarFamily = GfName: Exit Function End If: End If ' اذا كان المتغير لا يساوى False If AcceptNext <> False Then ' و كان المتغير رقما ويساوى 2 If IsNumeric(NameNum) And NameNum = 2 Then 'ناتج الدالة = اسم الاب كاملا باضافةالجد والعائلة ويفصل بينهم فراغ :الخروج من الدالة MokhtarFamily = Fname & Space(1) & GfName & Space(1) & FamilyName: Exit Function ' واذا كان المتغير رقما ويساوى 3 ElseIf IsNumeric(NameNum) And NameNum = 3 Then ' ناتج الدالة = اسم الجد كاملا باضافةالعائلة ويفصل بينهما فراغ MokhtarFamily = GfName & Space(1) & FamilyName: Exit Function End If: End If ' اعتبارا ناتج الدالة لا شىء فى حالة حدوث أخطاء ErrorHandler: MokhtarFamily = vbNullString End Function المرفق يوضح كيفية استخدام الدالة مباشرة على الخلايا و كيفية استدعاء الدالة بالكود أتمنى أن تكون الدالة مفيدة وتنال اعجابكم مع خالص تحياتى Mokhtar Family New UDF.rar
-
السلام عليكم ورحمة الله وبركاته أول شي أرحب بنفسي وسط هذا الصرح العظيم وحاب أشاركم أو مشاركة بشرح بسيط وسريع مدته دقيقة بخصوص كيف نبحث القيم اللي تظهر في الإكسل وهي عبارة عن نتيجة معادلة وكيف نقدر نخلي الإكسل يتعامل معاها كقيمة صريحة وليس كنتيجة معادلة أتمنى أكون خفيف عليكم ومفيد وأترككم مع المقطع
-
السلام عليكم ارجو وضع دالة او كود لحساب عدد الناجحين والراسبين في تقرير واحد برنامج لتقديم امتحان شهري مميز برقم الدورة وبجدول واحد هل يوجد طريقة لمنع التكرار في الدورة الواحدة لرقم التسجيل ولكم الشكر برنامج.rar
-
السلام عليكم و رحمة الله و بركانه اخواني و اخواتي بالمنتدى المميز اسعد الله اوقاتكم بكل خير ،،، انا اود الاسترشاد بخبرتكم بشأن كود للبحث واحضار بيانات الخلية المطلوب التحري عنها وفق مثالنا : 1. يوجد 3 شيتات من البيانات لسنوات سابقة 2. يوجد شيت النتيحة للرقم المراد التحري عنه وهي أن يضع اسم الخلية و اسم الصفحة الهدف من الكود : السرعة بأنجازأي عملية بحث لارقام محددة وعدم استخدام دالة البحث F شاكرة لكم حسن تعاونكم معنا مثال.rar
-
اريد دالة الخزينة بحيث حين تصبح الخزينة بالسالب لا تزيد المدفدفوعات ...........
-
السلام عليكم ورحمة الله وبركاته الاخوة الاعزاء والاساتذة الافاضل جزاكم الله خيرا يوجد نموذج في المرفق عملته لتسجيل قيود وبيانات الطلبة ولكون القيود تنزل يدويا احببت بان يظهر اخر قيد مسجل في جدول القيود من عمود القيد كي اعرف اخر قيد واضيف عليه ( 1 ) عند التسجيل الدالة DLookUp والدالة dlast هي من تقوم بذلك لكن كون البيانات متغيره وهي اخر سجل في عمود القيد من جدول القيود وفي المثال 12/166 اود اظهارة بدل المربع باللون الاحمر الموجود بالنموذج .... تقبلوا فائق احترامي وتقديري اظهار قيمة خلية في جدول على واجهةنموذج.rar
-
السلام عليكم ورحمة الله وبركاته دالة لاستخراج اسم واحد او عدة اسماء من اسم كامل kh_Names هي دالة مطورة من الدالة kh_Name والتي تستخرج اسم واحد حسب التعيين من اسم مركب تجدها في الرابط ادناه http://www.officena.net/ib/index.php?showtopic=33289 اما هذه الدالة تستطيع من خلالها استخراج اكثر من اسم وباي ترتيب تريده (فكرة الدالة مستوحاه من مشاركة لاختي الفاضلة ام عبدالله حفظها الله حيث استخدمت الدالة السابقة kh_Name ثلات مرات لاستخراج الاسم الثلاثي ) كود الدالة: Option Explicit ' بسم الله الرحمن الرحيم " '======================================" ' دالة استخراج الاسماء من اسم مركب طويل ' iNdex1 بدلالة ترتيب الاسم '======================================" ' iNdex1 ' اختيار موقع الاسماء التي تريدها ' FullName حسب ترتبها في ' (اسم واحد او عدة اسماء) '======================================" ' وهي تقوم بإستخراج الاسماء المركبة ' للاسم الواجد ' تلقائياً حسب معايير معرفة لديها ' MyArray في متغير الجدول ' ويمكنك اضافة اي معيار آخر ' بجانب المعايير الموجودة ' مع مراعاة وجود فراغ بداية ' او نهاية المعيار '======================================" '----------------------------------------------------------------- Function kh_Names(FullName As String, ParamArray iNdex1()) As String Dim i As Integer Dim kh_Split, MyArray, Ar Dim Kh_String As String, Sn As String, Re As String On Error GoTo Err_Kh_Names '====================================== MyArray = Array("عبد ", "أبو ", "ابو ", "آل " _ , " الله", " الدين", " الإسلام", " الاسلام", " الحق") '====================================== Sn = Application.WorksheetFunction.Trim(FullName) For Each Ar In MyArray Re = Replace(Ar, " ", "^") Sn = Replace(Sn, Ar, Re) Next '====================================== kh_Split = Split(Sn, " ", , vbTextCompare) On Error Resume Next For i = 0 To UBound(iNdex1) Kh_String = Kh_String & " " & kh_Split(iNdex1(i) - 1) Next On Error GoTo 0 Kh_String = Replace(Trim(Kh_String), "^", " ") kh_Names = Kh_String Exit Function Err_Kh_Names: kh_Names = "" End Function المرفق 2003 استخراج عدة اسماء من اسم كامل.rar