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

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

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

السلام عليكم

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

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

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

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

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

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

سجل حساب جديد

تسجيل دخول

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

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

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

Important Information