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

تصفية تلقائية باكثر من شرط


إذهب إلى أفضل إجابة Solved by محمد هشام.,

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

السلام عليكم

المطوب ان يتم تصفية عمود البارت في جدول منفصل في حالة وجود بيانات في عمود

INDEX

 

مثل ماهو موضح فى الخلايا من 

C15:D28   

https://www10.0zz0.com/2024/02/14/05/574362972.png

574362972.png

 

574362972.png

 

 

تصفية تلقائية.xlsx

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

10 ساعات مضت, mustafa khatab said:

المطوب ان يتم تصفية عمود البارت في جدول منفصل في حالة وجود بيانات في عمود

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

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

Option Explicit

Public Sub TransposeData()
Dim Cpt() As Variant, I As Long, J As Long, k As Long, rng As Variant

Dim WS As Worksheet: Set WS = Worksheets("Sheet1")
  Application.ScreenUpdating = False
    rng = WS.[C6:O10].Value2
    For I = 2 To UBound(rng)
        For J = 2 To UBound(rng, 2) Step 2
            If rng(I, J) > 0 Then
                ReDim Preserve Cpt(2, k + 1)
                Cpt(0, k) = rng(I, 1)
                Cpt(1, k) = rng(I, J)
                k = k + 1
            End If
        Next J
    Next I
        If k > 0 Then
        WS.Range("C15:D" & Rows.Count).ClearContents
        WS.Cells(15, 3).Resize(k, 2).Value = Application.Transpose(Cpt)
        End If
 Application.ScreenUpdating = True 
End Sub

 ولوضعها في جدول يمكنك التعديل على الكود على الشكل التالي 

هدا مثال لنسخ البيانات على ورقة 2 

Option Explicit
Public Sub TransposeData2()
Dim WS As Worksheet, desWS As Worksheet, rng As Variant
Dim Cpt() As Variant, I As Long, J As Long, k As Long, loc As String
Set WS = Worksheets("Sheet1"): Set desWS = Worksheets("Sheet2")
Application.ScreenUpdating = False
    rng = WS.[C6:O10].Value2
    For I = 2 To UBound(rng)
        For J = 2 To UBound(rng, 2) Step 2
            If rng(I, J) > 0 Then
                ReDim Preserve Cpt(2, k + 1)
                Cpt(0, k) = rng(I, 1)
                Cpt(1, k) = rng(I, J)
                k = k + 1
            End If
        Next J
    Next I
        If k > 0 Then
desWS.Range("C15:D" & Rows.Count).ClearContents
desWS.Cells(15, 3).Resize(k, 2).Value = Application.Transpose(Cpt)
'اظافة الجدول
loc = desWS.Range("C14:D" & desWS.[D65000].End(xlUp).Row).Address
If desWS.ListObjects.Count <> 0 Then Exit Sub
desWS.Cells(14, 3).Resize(, 2).Value = Array("Part", "INDEX")
desWS.ListObjects.Add(xlSrcRange, desWS.Range(loc), , xlYes).Name = _
"Table1"
End If
 Application.ScreenUpdating = True
End Sub

 

تصفية تلقائية V2.xlsb

تم تعديل بواسطه محمد هشام.
اظافة مثال لنسخ على ورقة2
  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

  • أفضل إجابة

ربما لم تنتبه للكود اذا اردت الاشتغال على ورقة 2  قم بتعديل هذا السطر لان البيانات يتم جلبها من ورقة 1 

14 ساعات مضت, محمد هشام. said:

 ولوضعها في جدول يمكنك التعديل على الكود على الشكل التالي 

هدا مثال لنسخ البيانات على ورقة 2

Set WS = Worksheets("Sheet1"): Set desWS = Worksheets("Sheet2")
الى
Set WS = Worksheets("Sheet2"): Set desWS = Worksheets("Sheet2")

 او تعديله بالكامل بالشكل التالي 

Option Explicit
Public Sub TransposeData2()
Dim desWS As Worksheet, rng As Variant
Dim Cpt() As Variant, I As Long, J As Long, k As Long, loc As String
Set desWS = Worksheets("Sheet2")
Application.ScreenUpdating = False
    rng = desWS.[C6:O10].Value2
    For I = 2 To UBound(rng)
        For J = 2 To UBound(rng, 2) Step 2
            If rng(I, J) > 0 Then
                ReDim Preserve Cpt(2, k + 1)
                Cpt(0, k) = rng(I, 1)
                Cpt(1, k) = rng(I, J)
                k = k + 1
            End If
        Next J
    Next I
        If k > 0 Then
desWS.Range("C15:D" & Rows.Count).ClearContents
desWS.Cells(15, 3).Resize(k, 2).Value = Application.Transpose(Cpt)
'اظافة الجدول
loc = desWS.Range("C14:D" & desWS.[D65000].End(xlUp).Row).Address
If desWS.ListObjects.Count <> 0 Then Exit Sub
desWS.Cells(14, 3).Resize(, 2).Value = Array("Part", "INDEX")
desWS.ListObjects.Add(xlSrcRange, desWS.Range(loc), , xlYes).Name = _
"Table1"
End If
 Application.ScreenUpdating = True
End Sub

 

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

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