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

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

قام بنشر

الاخوة الكرام 

السلام عليكم ورحمة الله وبركاته

المطلوب المساعدة في  كود يقوم بترحيل ايام الغياب من الكشف الى العمود AL  بحيث تظهر بهذا الشكل في العمودAL بحيث يتم اختيار الخلية التي بها الايام فقط ويترك الخلايا الفارغة

وجزاكم الله خيرا

ترحيل.xlsx

قام بنشر

السلام عليكم ورحمة الله

استخدم الكود التالى

Sub AbsCount()
Dim ws As Worksheet, LR As Long
Dim x As Long, y As Integer
Dim C As Range, Abst As String
Const Com = ","
Set ws = Sheets("SS")
x = 3
LR = ws.Range("AG" & Rows.Count).End(xlUp).Row
Do While x <= LR
For Each C In ws.Range("A" & x & ":AE" & x)
If C.Value > 0 Then
Abst = Abst & C.Value & Com
ws.Range("AL" & x) = StrReverse(Left(Abst, Len(Abst) - 1))
End If
Next C
Abst = ""
x = x + 1
Loop


End Sub

 

  • Like 5
  • أفضل إجابة
قام بنشر

بعد إذن أخي الكريم @ابراهيم الحداد

لا نحتاج لعكس الكلام لأنه يظهر الأرقام مقلوبة مثل 13 تظهر 31 وهكذا

هذا جهدي المتواضع في هذا المجال

Sub AbsDays()
Dim ws As Worksheet, C As Range, LR As Long, x As Long
Set ws = Sheets("SS")
LR = ws.Range("AG" & Rows.Count).End(xlUp).Row
For x = 3 To LR
ws.Range("AI" & x) = ""
For Each C In ws.Range("A" & x & ":AE" & x)
If C.Value > 0 Then ws.Range("AI" & x) = ws.Range("AI" & x) & IIf(ws.Range("AI" & x) = "", "يوم ", " و") & C.Value
Next C : Next x
MsgBox "Done by mr-mas.com"
End Sub

بالتوفيق

ترحيل أيام الغياب.xlsb

  • Like 6
قام بنشر (معدل)

الاستاذ محمد صالح   سبحان الله وكانك تقرا ما بخاطري

عندما قمت بتجربة كود الاستاذ ابراهيم جزاه الله خيرا حدث ما قلته بالضبط فظهرت الارقام معكوسة فقمت بحذف 

StrReverse  حتى تظهر الارقام بصورتها الصحيحة 

فاذا بحضرتك تفيض علي من كرمك بحل رائع 

فجزاك الله خير الجزاء وزادك من فضله

 

تم تعديل بواسطه ABOU ELSAAD
  • Like 3
قام بنشر

استاذ محمد 

بعد اذن حضرتك لي طلب اخر

هل من الممكن الاختصار بحيث اذا كانت ايام الغياب متتالية

مثل غياب يوم ( 1و2و3و4و5و6) ان تختصر الى غياب يوم (1-6) 

  • Like 1
قام بنشر

السلام عليكم 

الله يعطيك العافية 

سؤالى هل من الممكن  بدل تعبئة الغياب برقم و ليكن حرف " غ "  ثم بماكرو في صفحة ثانية يقوم بترحيل الغياب على شكل يوم و تاريخ لكل شخص ؟

  • Like 1
قام بنشر

السلام عليكم ورحمة الله

الاخ    ABOU ELSAAD

يمكنك استخدام الكود التالى

Sub AbsCount()
Dim ws As Worksheet, LR As Long
Dim x As Long
Dim a As Integer, b As Integer, d As Integer
Dim C As Range, Abst As String
Const Com = ","

Set ws = Sheets("SS")
x = 3
LR = ws.Range("AG" & Rows.Count).End(xlUp).Row
Do While x <= LR
For Each C In ws.Range("A" & x & ":AE" & x)
If C.Value > 0 Then
a = WorksheetFunction.Min(ws.Range("A" & x & ":AE" & x))
b = WorksheetFunction.Max(ws.Range("A" & x & ":AE" & x))
ab = b - a + 1
d = WorksheetFunction.Count(ws.Range("A" & x & ":AE" & x))
If ab = d And d > 1 Then
Abst = " يوم " & " (" & a & " - " & b & ")"
ws.Range("AL" & x) = Abst
Else
Abst = C.Value & Com & Abst
ws.Range("AL" & x) = Left(Abst, Len(Abst) - 1)
End If
End If

Next C
Abst = ""
x = x + 1
Loop

End Sub

 

  • Like 6
قام بنشر

استاذ ابراهيم الحداد

السلام الله عليك ورحمته وبركاته 

 تعجز الكلمات عن التعبير عن مدى امتناني وشكري لحضرتك 

فجزاك الله خير الجزاء في الدنيا والاخرة 

واسف على تعب حضرتك معي

  • Like 1
  • 3 weeks later...
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information