عبدالقدوس48 قام بنشر أكتوبر 8 قام بنشر أكتوبر 8 السلام عليكم حقل نصي وليس تاريخ أريد استخراج السنة فقط منه مثال تاريخ مفترض 00/00/1974 وتاريخ 01/12/1974 وشكرا
Moosak قام بنشر أكتوبر 8 قام بنشر أكتوبر 8 بالإضافة لطريقة المهندس @محمد احمد لطفى جرب هذه الطريقة أيضا 🙂 : If IsDate(Me.datex) Then Me.datex2 = Year(CDate(Me.datex)) End If test8102024.rar 3
ابوخليل قام بنشر أكتوبر 9 قام بنشر أكتوبر 9 عدلت العنوان من اجل يكون قريب للباحث وهذه طريقة اخرى ايضا Me.datex2 = Format(CDate(datex), "yyyy") 2
jjafferr قام بنشر أكتوبر 9 قام بنشر أكتوبر 9 وعليكم السلام في احد مشاريعي ، جابوا لي قائمة اكسل فيها تواريخ مكتوبة بكل ما لذ وطاب من الطرق ، مثل: 30/11/2009 ، 2012-06-25 ، 21/6/2015م ، " 9/1/2014" ، 30\11\2009 ، 5/1999/26 ، 25/1999/6 ، 5/1994/ 26 ، وحتى بعضها بالارقام الهندية ، فعملت الدالة التالية ، والتي ترسل لها التاريخ المطلوب تعديله ، والدالة تصلح التاريخ وترجعه. ومنها تقدر تحصل على السنة 🙂 هذه هي الدالة: Function Date_Rectified(D As String) As Date On Error Resume Next Dim x() As String Dim P1 As String, P2 As String, P3 As String D = Trim(D) D = Replace(D, "(", "") D = Replace(D, ")", "") D = Replace(D, " ", "") D = Replace(D, " ", "") D = Replace(D, " ", "") D = Replace(D, " ", "") D = Replace(D, "*", "") D = Replace(D, "م", "") D = Replace(D, ChrW(1632), "0") 'الرقم الهندي صفر D = Replace(D, ChrW(1633), "1") D = Replace(D, ChrW(1634), "2") D = Replace(D, ChrW(1635), "3") D = Replace(D, ChrW(1636), "4") D = Replace(D, ChrW(1637), "5") D = Replace(D, ChrW(1638), "6") D = Replace(D, ChrW(1639), "7") D = Replace(D, ChrW(1640), "8") D = Replace(D, ChrW(1641), "9") D = Replace(D, "!", "-") D = Replace(D, "/", "-") D = Replace(D, "//", "-") D = Replace(D, "\", "-") D = Replace(D, ".", "-") D = Replace(D, "_", "-") D = Replace(D, "|", "-") D = Replace(D, ",", "-") D = Replace(D, Chr(34), "") If Len(D) = 4 Then 'starts with year, but its 4 digits only:1999 'convert to 1-1-1999 OR EMPTY Date_Rectified = DateSerial(D, 1, 1) Exit Function End If If D = "5/1994/ 26" Then Debug.Print D End If x = Split(D, "-") P1 = x(0): P2 = x(1): P3 = x(2) If Len(P1) = 4 And Len(P2) <> 0 Then 'starts with year, and month exist: 1999-1-2 Date_Rectified = DateSerial(P1, P2, P3) ElseIf Len(P3) = 4 And Len(P2) <> 0 Then 'ends with year, and month exist: 2-1-1999 Date_Rectified = DateSerial(P3, P2, P1) ElseIf Len(P2) = 4 And Len(P1) <= 12 Then 'year in the middle, day and month exist: 5/1999/26 Date_Rectified = DateSerial(P2, P1, P3) ElseIf Len(P2) = 4 And Len(P1) > 12 Then 'year in the middle, day and month exist: 25/1999/6 Date_Rectified = DateSerial(P2, P3, P1) Else 'otherwise Date_Rectified = Null End If End Function 1 3
ابوخليل قام بنشر أكتوبر 9 قام بنشر أكتوبر 9 1 ساعه مضت, jjafferr said: ومنها تقدر تحصل على السنة 🙂 هذه هي الدالة: يا سلام عليك الله يحفظك .. نحن بحاجة الى مواضيع متخصصة تضاف الى المكتبة يتم فيها تجميع مثل هذه الروائع بعناوين حسب كل فن 1
jjafferr قام بنشر أكتوبر 9 قام بنشر أكتوبر 9 4 دقائق مضت, ابوخليل said: يا سلام عليك الله يحفظك .. نحن بحاجة الى مواضيع متخصصة تضاف الى المكتبة يتم فيها تجميع مثل هذه الروائع بعناوين حسب كل فن شكرا جزيلا اخوي ابو خليل عملت موضوع لهذه الجزئية:
Moosak قام بنشر أكتوبر 9 قام بنشر أكتوبر 9 3 ساعات مضت, jjafferr said: هذه هي الدالة: ماشاء الله تبارك الله .. لك بصمة في كل مجال 🙂 1
Foksh قام بنشر أكتوبر 11 قام بنشر أكتوبر 11 (معدل) ومشاركة مع معلمي الأفاضل ، دعني أضيف قطرة من بحر علمهم 😇 . يمكننا باستخدام دالة Mid والتي تستخدم لاستخراج جزء معين من النص ، وعلى افتراض أن اسم الحقل النصي هو MyDate ، يمكنك استخدام الاستعلام التالي لاستخراج السنة : SELECT MyDate, Mid(MyDate, InStrRev(MyDate, "/") + 1, 4) AS YearNum FROM YourTable; * طبعاً مع تغيير اسم الجدول أيضاً في YourTable ؛ و أيضاً لم أقم بمشاهدة ملف الأستاذ محمد لطفي أيضاً 🤗 إن كان قد استخدم اسلوب الاستعلام . واذا أردنا توسيق الفكرة كما أشار المعلم الفاضل الأستاذ جعفر ، قد نجعل الاستعلام بهذا الشكل ايضاً بحيث مع اختلاف اتجاه كتابة التاريخ ( من اليمين لليسار أو العكس ) أو ايضاً بدلاً من الفاصل "/" يمكن ان يكون "-" على سبيل المثال , SELECT MyDate, IIf(InStr(MyDate, "-") > 0, Left(MyDate, 4), IIf(Len(MyDate) = 10, IIf(Left(MyDate, 4) Like "####", Left(MyDate, 4), Right(MyDate, 4)), Null) ) AS YearNum FROM YourTable; تم تعديل أكتوبر 11 بواسطه Foksh إضافة استعلام آخر وتوسيع نطاق الفكرة
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.