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

الردود الموصى بها

قام بنشر

ربما يكون الحل

Option Explicit

Sub Get_days()
Dim i%, k%, m%, it
Dim arr(), cont
Dim st$
Dim Days_num%
Dim arr_arab(1 To 7)
 arr_arab(1) = "الأحد": arr_arab(2) = "الإثنين": arr_arab(3) = "الثلاثاء"
 arr_arab(4) = "الأربعاء": arr_arab(5) = "الخميس": arr_arab(6) = "الجمعة"
 arr_arab(7) = "السّبت"
Dim dict As Object
 m = 1
Set dict = CreateObject("Scripting.Dictionary")
For i = 5 To 16
      If Range("c" & i) <> "" Then
    With dict
       cont = Split(Range("c" & i), "-")
      .Add i - 4, cont
         For Each it In .Items
           ReDim Preserve arr(1 To 1)
           arr(1) = it
           Range("e" & i) = UBound(cont) + 1
             For k = UBound(cont) To 0 Step -1
             Days_num = Weekday(DateSerial([E2], i - 4, cont(k)))
            st = st & arr_arab(Days_num) & ","
              Range("g" & i) = Left(st, Len(st) - 1) & "."
             Next
         Next
         .RemoveAll
         Erase arr
         st = vbNullString
    End With
  End If
 Next

End Sub

الملف مرفق

 

khairi ali.xlsm

  • Like 2
قام بنشر

احي مصطفى لا داعي للسطر الذي قلت عنه لانه في الكود مذكور أن يتجاوز الخلايا الفارغة )

المطلوب فقط ان تترك الخلية فارغة ولا يتم وضع   لا  " 0"  ولا   " -" ولا   اي شيء آخر

يتم ادراج فقط ارقام من 1 الى نهاية الشهر حسب الخلية المناسبة   في العامود   C    يتوسط الرقمين   "-"

للتوضيح 

هذه الصورة

 

Verefication.PNG

  • Like 2
قام بنشر

رائع أستاذنا الفاضل الأستاذ / سليم

أرى أن يتم استبدال العلامة "-" بفاصلة " ,"لأنه أحيانًا لو كان الغياب يومان يتحول إلى تاريخ 

وقم بتجربتها فكانت بلا مشاكل

 

khairi ali.xlsm

  • Like 1
قام بنشر

هذا ملف اخر  لا يأخذ بعين الاعتبار    ما تحتويه الخلايا  (فقط ينظر الى الارقام بين 1 و نهاية الشهر)

ولا ينظر الى الفواصل اي كانت (فواصل  نص  * \ /  الخ.....)

Option Explicit
Sub Saerch_date()
  Dim regex As Object, str As String
  Set regex = CreateObject("VBScript.RegExp")
      
      With regex
      .Global = True
      .IgnoreCase = True
      .Pattern = "([1-3]?\d+)"
      End With
      
  Dim MY_Match, x%, s$, i%, m%: m = 1
  Dim Days_num$, Final_Month%
  Dim my_array()
  Dim arr_arab(1 To 7)
    arr_arab(1) = "الأحد": arr_arab(2) = "الإثنين"
    arr_arab(3) = "الثلاثاء": arr_arab(4) = "الأربعاء"
    arr_arab(5) = "الخميس": arr_arab(6) = "الجمعة"
    arr_arab(7) = "السّبت"
  Range("E5:E16,G5:G16").ClearContents
 For i = 5 To 16
  Set MY_Match = regex.Execute(Range("c" & i))
   If MY_Match.Count = 0 Then GoTo next_i
  For x = MY_Match.Count - 1 To 0 Step -1
  Final_Month = Month(DateSerial([E2], i - 4, MY_Match(x)))
   If Final_Month = i - 4 Then
   Days_num = Weekday(DateSerial([E2], i - 4, MY_Match(x)))
   ReDim Preserve my_array(1 To m)
    my_array(m) = arr_arab(Days_num)
    m = m + 1
 End If
Next x
 Range("E" & i) = m - 1
s = Join(my_array, ",")
Range("G" & i) = s
s = "": m = 1: Erase my_array
next_i:
Next
 Set regex = Nothing
 Erase arr_arab
End Sub

الملف مرفق

 

 

khairi ali_Extra.xlsm

  • Like 2

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

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information