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

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

قام بنشر

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information