أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
EM_ACC مجدى يونس-- لا تميز خلال هذه الفترة لا تميز خلال هذه الفترة بحاجة الى كود ترحيل اكسيل اسئله واجابات


أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





الدالة المعرفة TND لاستخراج النص والرقم والتاريخ

بسم الله والحمد لله والصلاة والسلام على رسول الله قدمت Task للتدريب على الدوال المعرفة ومشكور لاستاذ ياسر واستاذ على ، ..



09-03-2021 05:26 مساء
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 89
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 

بسم الله والحمد لله والصلاة والسلام على رسول الله
 
قدمت Task للتدريب على الدوال المعرفة ومشكور لاستاذ ياسر واستاذ على ، على المشاركة المثمرة
هدفى كان تعليمى وكانت فكرة لسلسة تحفيزية الى ان مفيش مشاركة لكدا

وبما ان فيه تعليقين للموضوع يبقى وجب عليا المشاركة
وعشان بهدف لتعليم احد المستويات هتفادى استخدام التعبير النمطى واستعمال اسلوب ابسط

اذا السؤال كان انشاء دالة معرفة لاستخراج تاريخ من النص وليكن النص التالى
"Eslam 1/9/1995 Abdullah"


وهنا اشارك بدالة اسميتها TND وهو اول حرف من ثلاث كلمات وهما (Text,Number,Date)
مع لمسه من المميزات الابداعيه لزيادة الاستفادة اكثر واهتميت بجعل الكود بسيط فى كتابته لاستيعابه بدون تعقيد

ولمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب موضوع سابق عن الدالة وما يخص استخراج التاريخ من النص

اذا كيف تعمل الدالة ؟!

من مميزات الدالة: يمكنك تحديد الفاصل بين ارقام التاريخ ولو كانت متعددة
ويمكنك تفادى فواصل التاريخ وارقامها اذا كانت تصلح تاريخ عند استخراج القيمة النصية او الرقمية
ويمكنك ضم ارقام التاريخ مع استخراج القيمة الرقمية او ضم الفواصل مع القيمة النصية
الامر هنا مرن والاختيار لك

بناء الدالة كالتالى

=TND(text,value,[serial])

حيث
text: اجبارى، وهو النص المراد استخراج القيمة منه
value: اجبارى، وهو النمط الذى يستخدم فى استهداف القيمة المراد استخراجها (انظر الملاحظة رقم 1)
[serial]: اختيارى، ويستخدم فى حالة كان هناك اكتر من تاريخ لاستخراج كل تاريخ حسب ترتيبه داخل النص​

ملاحظات على الدالة:
ملاحظة 1:
كيفية استخدام النمط (value): t للنص , n للرقم , d للتاريخ
يمكن كتابة حروف بعد بادئة الثلاثة أحرف أعلاه:
  *بعد الحرف (d) الفواصل الخاصة بالتاريخ
    *بعد أى من الحرفين (n, t) تجاهل تلك الفواصل بالتاريخ الخاص بها

ملاحظة 2:
فى حال وجد أكثر من تاريخ استخدم المعامل الثالث (Serial) فى استدعاء التاريخ حسب التسلسل فى النص
وعند تجاهله يكن التسلسل رقم 1 هو الإفتراضى


ملاحظة 3:
فى حال تم ادخال بادئة المعامل (text) بحرف غير الأحرف الثلاثة (t, n, d) ترجع الدالة الخطأ value
فى حال تم ادخال رقم تسلسل أقل من 1 فى المعامل (serial) ترجع الدالة الخطأ value


كود الدالة
Function TND(txt As String, v As String, Optional s As Integer = 1) As Variant
Dim i%, j%, b$, t$, n, d()
    i = 0 / (Left(v, 1) Like "[TtNnDd]" And s > 0): ReDim Preserve d(0): n = ""
    For i = 1 To Len(txt) + 1
        Select Case True
            Case Mid(txt, i, 1) Like "#": d(j) = d(j) & Mid(txt, i, 1)
            Case Mid(txt, i, 2) Like "[" & Mid(v, 2) & "]#" And Mid(txt, i + (i > 1), 2) Like "#[" & Mid(v, 2) & "]": d(j) = d(j) & "/": b = b & Mid(txt, i, 1)
            Case IsDate(d(j)): d(j) = DateValue(d(j)): t = t & Mid(txt, i, 1): b = "": ReDim Preserve d(j + 1): j = j + 1
            Case d(j) <> "": n = Val(n & Replace(d(j), "/", "")): t = t & b & Mid(txt, i, 1): d(j) = "": b = "": Case Else: t = t & Mid(txt, i, 1)
        End Select
    Next i
    d(j) = "": TND = Array(t, n, d(Application.Min(s - 1, j)))(InStr(1, "TND", Left(v, 1), 1) - 1)
End Function


ومرفق ملف العمل بتطبيق الدالة
والتحقق من القيمة المستخرجة إذا كانت نص او رقم او تاريخ
ويوجد دالة معرفة إضافية لغرض التحقق إذا كانت القيمة تاريخ


مع تحياتى أخوكم فى الله ، اسلام عبدالله 81
 
 
  TND UDF.rar   تحميل rar مرات التحميل :(8)
الحجم :(19.129) KB


10-03-2021 07:49 صباحا
مشاهدة مشاركة منفردة [1]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10439
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 0
يتابعونه : 533
قوة السمعة : 36372
عدد الإجابات: 252
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
بارك الله فيك أخي الحبيب إسلام
وعشان نزق الموضوع معاك ونشجع الناس .. إليكم الكود التالي
Sub Test()
    Dim mydate As Date, s As String
    s = "Eslam 1/9/1995 Abdullah"
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d{1,2}\/\d{1,2}\/\d{2,4}"
        mydate = .Execute(s).Item(0).Value
    End With
    MsgBox mydate
End Sub

10-03-2021 11:13 صباحا
مشاهدة مشاركة منفردة [2]
ali mohamed ali
مشرف على منتدى الاكسيل
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 20-11-2017
رقم العضوية : 1757
المشاركات : 1763
الدولة : مصر
الجنس : ذكر
الدعوات : 2
يتابعهم : 0
يتابعونه : 68
قوة السمعة : 9632
عدد الإجابات: 46
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
بارك الله فيك استاذ ياسر وأكرمك الله استاذ إسلام .. وهناك عدة معادلات تؤدى بالتأكيد هذا الغرض .. فاذا افترضنا ان هذه الجملة بالخلية A2 فبالتالى يمكن استخدام هذه المعادلة المعرفة

'=getdate2(A2)
Public Function getdate2(fromThis As Range) As String
     Dim retVal As String
    Dim ltr As String, i As Integer, datecheck As Boolean
       retVal = ""
    getdate2 = ""
    datecheck = False
       On Error GoTo last
       If fromThis.Value Like "*/*/*" Then
        datecheck = True
    ElseIf fromThis.Value Like "*-*-*" Then
        datecheck = True
    End If
       For i = 1 To Len(fromThis)
        ltr = Mid(fromThis, i, 1)
        If IsNumeric(ltr) Then
            retVal = retVal & ltr
        ElseIf ltr = "/" And datecheck Then
            retVal = retVal & ltr
        ElseIf ltr = "-" And datecheck Then
            retVal = retVal & "-"
        End If
    Next i
    getdate2 = Format(retVal, "DD/MM/yyyy")
last:
End Function

وهذه معادلات أخرى عادية يتم رسدها لهذا الأمر كالتالى
=MID(A2,FIND("/",A2)-2,10)

=IFERROR(DATEVALUE(MID(A2,FIND("/",A2)-2,10)),"")

=IFERROR(MID(A2,SEARCH("/",A2)-2,10),"")
 
=IFERROR(MID(A2,SEARCH("/",A2)-2,10),"")
 
 
These are other normal equations that are listed for this matter as follows
 
توقيع :ali mohamed ali
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى حل أى مشكلة او أستفسار لديك مع إضافة رد بشكره
أو دعوة لمن قدم اليك المساعدة,فالجميع هنا يعمل على مساعدة
 الاخرين لوجه الله وان تحتسب له اجر عند الله

10-03-2021 08:25 مساء
مشاهدة مشاركة منفردة [3]
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 89
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
بارك الله فيك ا ياسر وا على
اولا مشكور على حلولكم الرائعه
وايضا الهدف من الموضوع انى اعلم الناس وليس ايجاد حل
فكرت اعملها سلسله هدفها رفع الخبره للزملاء
وبما ان مفيش مشاركه يبقى ملهاش لازمه الفكره دى
بس عشان انا رفعت موضوع مفهاش مشكله ابقى انزل موضوع للنقطه دى
بس هيبقى موضوع بدالة وخلاص بما ان الناس عايزه الجاهز بدل العلم

10-03-2021 09:57 مساء
مشاهدة مشاركة منفردة [4]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10439
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 0
يتابعونه : 533
قوة السمعة : 36372
عدد الإجابات: 252
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
لا تيأس أخي الحبيب اسلام
ضع ما لديك من أفكار وابدأ فيما شرعت في التفكير فيه وإن شاء الله عاجلاً أو آجلاً ستجد من يحاول التعلم ويكمل المسيرة.

11-03-2021 08:57 مساء
مشاهدة مشاركة منفردة [5]
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 89
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
مشكور دعمك المستمر ا/ ياسر
بالنسبالى الموضوع سيان ، حبيت اقدم محتوى لناس مش لاقيه اللى يشجعها
عموما بما انى طرحت الموضوع
تم تعديل الموضوع بمشاركتى لاجابة السؤال المطروح

12-03-2021 02:12 مساء
مشاهدة مشاركة منفردة [6]
hassona229
مشرف عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 20-11-2018
رقم العضوية : 9257
المشاركات : 793
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 13-9-1980
يتابعهم : 0
يتابعونه : 10
قوة السمعة : 3910
عدد الإجابات: 108
 offline 
look/images/icons/i1.gif الدالة المعرفة TND لاستخراج النص والرقم والتاريخ
موضوع جميل استاذ اسلام
كانت بدايته هنا على هذا الرابط
لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب
 




الكلمات الدلالية
استخراج ، تاريخ ،


 










اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 07:16 صباحا