اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم 

السادة الزملاء تحية طيبة للكل مرفق ملف اكسيل به بيانات مجمعة والشيت الاخر تقرير بالتاريخ لاظهار بياناته هذا الملف ماخوذ من زميل لنا بالشركة مشكورا على مجهوده  اريد التعديل عليه أنه فى شيت رقم 1 الخاص بالتقرير عند تسجيل التاريخ لعمل التقرير يظهر كل الاعمدة حتى من ليس له بيان اريد ان أظهر من له بيانات فقط  ونفس الكلام عند الفلترة على مكان المكبس

برجاء من سيادتكم الحل وشكرا جزيلا لكم

لا داعي لضغط الملف طالما مساحته صغيره

 

W.xlsm

  • تمت الإجابة
قام بنشر

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

ربما تفصد اخفاء الاعمدة   وليس الخذف كما ورد في طلبك

الكود يخفى العمود كله فارغ أو كله قيمه تساوي (0 أو 0%) → يخفي العمود بالكامل.

الكود في البداية يظهر كل الأعمدة ثم يعيد إخفاء المناسب

تم ربط الكود مع امر الفلترة 

اظافة التسطير لناتج الفلترة

هذا خسب فهمى لطلبكم

الكود 

Sub فلترة_اخفاء()
    Dim wsSrc As Worksheet, wsDst As Worksheet
    Dim lastRow As Long
    Dim rng As Range, col As Range, c As Range
    Dim hideCol As Boolean
    Dim rngOut As Range
    
    Application.ScreenUpdating = False
    
    Set wsSrc = ThisWorkbook.Sheets("المجمع")
    Set wsDst = ThisWorkbook.Sheets("1")
    
    lastRow = wsDst.Cells(wsDst.Rows.Count, "A").End(xlUp).Row
    If lastRow >= 5 Then
        wsDst.Rows("5:" & lastRow).ClearContents
        wsDst.Rows("5:" & lastRow).ClearFormats
    End If
    wsDst.Columns("A:W").Hidden = False

    lastRow = wsSrc.Cells(wsSrc.Rows.Count, "E").End(xlUp).Row
    If lastRow < 2 Then Exit Sub
    
    wsSrc.Range("E1:W" & lastRow).AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=wsDst.Range("Criteria"), _
        CopyToRange:=wsDst.Range("Extract"), _
        Unique:=False
    
    lastRow = wsDst.Cells(wsDst.Rows.Count, "A").End(xlUp).Row
    If lastRow < 5 Then GoTo Done
    
    Set rngOut = wsDst.Range("A5:W" & lastRow)
    
    With rngOut.Borders
        .LineStyle = xlContinuous
        .Color = vbBlack
        .Weight = xlThin
    End With
    
    rngOut.EntireColumn.Hidden = False
    For Each col In rngOut.Columns
        hideCol = True
        For Each c In col.Cells
            If Not (isEmpty(c.Value) Or c.Value = 0 Or c.Text = "0%") Then
                hideCol = False
                Exit For
            End If
        Next c
        If hideCol Then col.EntireColumn.Hidden = True
    Next col
    
Done:
    Application.ScreenUpdating = True
End Sub

الملف

W1.xlsm

تحياتي

 

 

  • Like 2
قام بنشر

شكرا اخي الفاضل كثيرا لمتابعة وجاري التجربة

قام بنشر

شكرا وجزاك الله خيرا اخي بشير

وشكرا لكل من ساهم ببناء هذا الموقع الرائع ومازال يتواصل فى حل مشاكل السادة الاعضاء ربنا يزيدكم

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

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

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

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

سجل حساب جديد

تسجيل دخول

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

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

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

Important Information