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

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

قام بنشر

الطريقة الصحيحة هي استخراج الاسماء  بعد مقارنة الأعمدة في عمود مغاير  لاكن بما انك تريد  استخراج النتائج  تحت آخر خلية بها بيانات ربما يتطلب منك ذالك استخدام الأكواد. 

 

قام بنشر

ادن جرب هدا ووافينا بالنتيجة 

Sub Compare_Col()
Dim lr As Long, i As Long
Dim WS As Worksheet: Set WS = Worksheets("Sheet1")
On Error Resume Next
lr = WS.Columns("A:C").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    For i = 1 To lr
    Application.ScreenUpdating = False
    If WorksheetFunction.CountIf(Range("C1:C" & lr), Range("A" & i)) < 1 Then
    Cells(Rows.Count, 3).End(xlUp).Offset(1).Value = Range("A" & i).Value
    End If
    Next i
    Application.ScreenUpdating = True
End Sub

 

marem v2.xlsb

  • Like 2
قام بنشر

ممكن يا استاذ محمد سؤال أو استفسار

ممكن نثبت العمود A  ونجعل الكود يشمل عدد كبير من الأعمدة يعني يشمل ( C و D و E و F ) بدلا من C فقط

ممكن حضرتك تخبرني ماذا اغير في الكود 

ويكون بارك الله فيك ومعلش احنا بنتعب حضرتك معانا

قام بنشر (معدل)
2 ساعات مضت, 2saad said:

ممكن نثبت العمود A  ونجعل الكود يشمل عدد كبير من الأعمدة يعني يشمل ( C و D و E و F ) بدلا من C فقط

جرب هدا

Sub Uniques()
                            'Col_C_D_E_F
Dim Rng As Range, lr&
Dim ws As Worksheet: Set ws = Worksheets("Sheet1")
lr = ws.Columns("A:F").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
For Each Rng In Range("A1:A" & lr)
    If WorksheetFunction.CountIf(Range("C1:F" & lr), Rng) = 0 Then
        Range("C" & Rows.Count).End(xlUp).Offset(1) = Rng
    
    End If
Next
End Sub

 

marem v3.xlsb

تم تعديل بواسطه محمد هشام.
  • Like 2
قام بنشر

شكرا لحضرتك وبارك الله فيك

 حضرتك عند الضغط علي الزر المكتوب عليه ( c و d و e و f ) لا يرحل الأسماء الموجودة في العمود (a) وغير موجودة في في هذه الأعمدة ( c و d و e و f )

يعني زي ما يحدث عند الضغط علي زر ( c ) يحدث في الضغط علي زر (c و d و e و f )

يا ريت يكون وصلت الفكرة

وشكرا علي تعبك معنا 

  • أفضل إجابة
قام بنشر (معدل)

 

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

 اختيارك لافضل اجابة عند توصلك للحل  في اي مشاركة على المنتدى سوف تكون مرجعا لم يحتاجها من بعدك خاصة عند كثرت التعديلات فلا تغفل عنها 😉

الرجاء  اخي  @2saad أخذ هده الملاحظات بعين الاعتبار في المشاركات المقبلة.  

Option Explicit
Sub test()

    Dim lr As Long, i As Long, j As Long
    Dim strCol As String
    Dim WS As Worksheet: Set WS = Worksheets("Sheet1")
    
    Application.ScreenUpdating = False
    lr = WS.Columns("A:R").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    
    'الاعمدة من C الى  F
    For i = 2 To 6
        strCol = Split((WS.Columns(i).Address(, 0)), ":")(0) 
        For j = 1 To lr
            If WorksheetFunction.CountIf(WS.Range(strCol & "1:" & strCol & lr), WS.Range("A" & j)) = 0 Then
                WS.Cells(Rows.Count, strCol).End(xlUp).Offset(1).Value = WS.Range("A" & j).Value
            End If
        Next j
    Next i
    
    Application.ScreenUpdating = True

End Sub

 

تم تعديل بواسطه محمد هشام.
اختصار للكود السابق
  • Like 4

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