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

تعبئة الخلايا بكلمة TRUE بناءً على التواريخ والمدة المحددة لكل الأسماء


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

برجاء من السادة الافاضل المساعدة في الفايل المرفق استكمال التاريخ بناءا ع الاسم مع العلم بان عندي حوالي 500 اسم في الملف

في حالة عدم الحضور فترة من والى يكتب True لكل التواريخ تحت اسم معين في الشيت.

data.rar

رابط هذا التعليق
شارك

الأخ الكريم d911

يرجى تغيير اسم الظهور للغة العربية كما يرجى الإطلاع على رابط التوجيهات لمعرفة كيفية التعامل مع المنتدى

من هنا التوجيهات (ضروري وهام)

إليك الكود التالي عله يفي بالغرض

Sub FillTRUE()
    Dim Source As Worksheet, Target As Worksheet, Cell As Range
    Dim FoundColumn, FoundRow
    Set Source = Sheet1: Set Target = Sheet2
    
    With Application
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    
        For Each Cell In Source.Range("B2:B" & Source.Cells(Rows.Count, "B").End(xlUp).Row)
            FoundRow = Application.Match(Cell.Offset(, -1), Target.Columns(1), 0)
            FoundColumn = Application.Match(Cell, Target.Rows(1), 0)
    
            If IsNumeric(FoundColumn) And IsNumeric(FoundRow) Then
                Target.Cells(FoundRow, FoundColumn).Resize(, Cell.Offset(, 2).Value) = "TRUE"
            End If
        Next Cell
        
    With Application
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic
    End With
End Sub

تقبل تحياتي

رابط هذا التعليق
شارك

أعتقد أن كثرة المعادلات بالملف مع هذا العدد من الأعمدة سيتسبب في ثقل الملف .. :yes:

عموماً ننتظر الأخوة المتخصصين في المعادلات لمعالجة الأمر :fff:

 

  • Like 1
رابط هذا التعليق
شارك

إن شاء الله ليلاً إن تيسر لي الوقت سأقدم لك شرحاً للكود ...

تقبل تحياتي ويرجى مراجعة التوجيهات (خاصةً اسم الظهور)

أخي الكريم

جرب المعادلة التالية في الخلية B2 في ورقة العمل data

=IF(SUMPRODUCT(('Sheet 1'!$A$2:$A$500=$A2)*(B$1>='Sheet 1'!$B$2:$B$500)*(B$1<='Sheet 1'!$C$2:$C$500))>0,TRUE,"")

ثم قم بسحب المعادلة لأسفل وإلى اليمين إلى آخر النطاق للأعمدة والصفوف

إذا لم تعمل المعادلة يمكنك استبدال الفاصلة في المعادلة بفاصلة منقوطة

 

كما يمكنك استخدام المعادلة التالية

=IF(COUNTIFS('Sheet 1'!$A$2:$A$500,$A2,'Sheet 1'!$B$2:$B$500,"<="&B$1,'Sheet 1'!$C$2:$C$500,">="&B$1)>0,TRUE,"")

 

تم تعديل بواسطه ياسر خليل أبو البراء
  • Like 2
رابط هذا التعليق
شارك

والله قصرت أخي محمود لما استخدمت حرف العين بدلاً من كلمة عبد

كان هيبقا شكلها أحلى لو كان اسم الظهور : محمود عبد المنعم

عموماً أحسن من الاسم الأولاني d1425hd

رابط هذا التعليق
شارك

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

بس لو ممكن يبقى في كود يطلعلي لو في عدد 6 true متلاحقة بدون فاصل بنفس الملف

انا اسف ع الاطاله

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

أخي الكريم محمود

إن شاء الله سأقوم بشرحه حين يتيسر لي الوقت أما الآن فأنا منشغل قليلاً ..

الجزء الثاني من الطلب غير مفهوم بالنسبة لي .. يا حبذا لو أرفقت شكل النتائج المتوقعة ..

ماذا تريد من الكود أن يفعل في حالة أن هناك عدد 6 True في صف واحد متلاحقة (هل تقصد متتالية لا يوجد بينها خلايا فارغة؟) .. وفي هذه الحالة المطلوب من الكود ايه بالظبط؟

رابط هذا التعليق
شارك

جرب التعديل في الكود بهذا الشكل

Sub FillTRUE()
    Dim Source As Worksheet, Target As Worksheet, Cell As Range, Area As Range
    Dim FoundColumn, FoundRow
    Set Source = Sheet1: Set Target = Sheet2
    
    With Application
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    
        For Each Cell In Source.Range("B2:B" & Source.Cells(Rows.Count, "B").End(xlUp).Row)
            FoundRow = Application.Match(Cell.Offset(, -1), Target.Columns(1), 0)
            FoundColumn = Application.Match(Cell, Target.Rows(1), 0)
    
            If IsNumeric(FoundColumn) And IsNumeric(FoundRow) Then
                Target.Cells(FoundRow, FoundColumn).Resize(, Cell.Offset(, 2).Value) = "TRUE"
                If Cell.Offset(, 2).Value >= 6 Then Target.Cells(FoundRow, 2) = "Y"
            End If
        Next Cell
        
    With Application
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic
    End With
End Sub

 

Put TURE Or Y V2.rar

رابط هذا التعليق
شارك

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