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

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

قام بنشر

إخواني عندي عمود اكسل كله ارقام جوالات 

أقوم بإزالة الأرقام المكررة عن طريق تحديد العمود ثم بيانات ثم ازالة التكرارات

 

لكن أتفاجأ أن الرسائل تصل للعملاء مرتين وعند العودة للجدول اجد أن هناك فعلاً ارقام مكررة أي أنه لم يتم إزالة التكرارات كلها فكيف أتأكد من ذلك حتى لا أتسبب بإزعاج وإحراج مع العميل؟

قام بنشر

ربما بعض الأرقام بالمفتاح الدولي وبعضها بدونه

وللتأكد دعنا نجرب مثلا آخر 6 أرقام من خلال هذه المعادلة

على فرض أن الأرقام في العمود A1 ونازل ضع هذه المعادلة بالخلية B1 اسحب لأسفل

ناتج المعادلة الطبيعي 1 وما زاد هو عدد التكرار

=SUMPRODUCT(((RIGHT($A1:$A$1;6))=(RIGHT(A1;6)))*1)

 

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

بعد اذن الاخ أبوأحـمـد

جرب هذا الكود سيقوم بالتحقق من وجود القيم المكررة في الأعمدة A و B و C وسيقوم بسحب القيم المكررة إلى الأسفل

 

Private Sub RemoveDuplicatesAndFillDown()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim colRangeA As Range
    Dim colRangeB As Range
    Dim colRangeC As Range
    Dim cell As Range

    ' تعيين الورقة المستهدفة
    Set ws = ThisWorkbook.Worksheets("التكويد")
    
    ' العثور على آخر صف غير فارغ في العمود C
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    
    ' تعيين نطاقات الأعمدة A و B و C
    Set colRangeA = ws.Range("A2:A" & lastRow)
    Set colRangeB = ws.Range("B2:B" & lastRow)
    Set colRangeC = ws.Range("C2:C" & lastRow)
    
    ' إلغاء تنسيق الخلايا المحددة
    colRangeA.NumberFormat = "General"
    colRangeB.NumberFormat = "General"
    colRangeC.NumberFormat = "General"
    
    ' إزالة القيم المكررة وسحب القيم إلى الأسفل في الأعمدة A و B
    For Each cell In colRangeA
        If Application.WorksheetFunction.CountIf(colRangeA, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
    
    For Each cell In colRangeB
        If Application.WorksheetFunction.CountIf(colRangeB, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
    
    For Each cell In colRangeC
        If Application.WorksheetFunction.CountIf(colRangeC, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
End Sub

 

تم تعديل بواسطه ابا اسماعيل
  • Like 1
  • 2 weeks later...
قام بنشر
في 7‏/8‏/2023 at 08:19, أبوأحـمـد said:

ربما بعض الأرقام بالمفتاح الدولي وبعضها بدونه

ناتج المعادلة الطبيعي 1 وما زاد هو عدد التكرار

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

استخدمت نفس الطريقة وظهر لي التكرار بعضها 2 وبعضها 3

الاشكال كيف أزيل هذه التكرارات اذا كان العمود كبير؟ بالآلاف

في 7‏/8‏/2023 at 11:16, ابا اسماعيل said:

بعد اذن الاخ أبوأحـمـد

جرب هذا الكود سيقوم بالتحقق من وجود القيم المكررة في الأعمدة A و B و C وسيقوم بسحب القيم المكررة إلى الأسفل

 

Private Sub RemoveDuplicatesAndFillDown()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim colRangeA As Range
    Dim colRangeB As Range
    Dim colRangeC As Range
    Dim cell As Range

    ' تعيين الورقة المستهدفة
    Set ws = ThisWorkbook.Worksheets("التكويد")
    
    ' العثور على آخر صف غير فارغ في العمود C
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    
    ' تعيين نطاقات الأعمدة A و B و C
    Set colRangeA = ws.Range("A2:A" & lastRow)
    Set colRangeB = ws.Range("B2:B" & lastRow)
    Set colRangeC = ws.Range("C2:C" & lastRow)
    
    ' إلغاء تنسيق الخلايا المحددة
    colRangeA.NumberFormat = "General"
    colRangeB.NumberFormat = "General"
    colRangeC.NumberFormat = "General"
    
    ' إزالة القيم المكررة وسحب القيم إلى الأسفل في الأعمدة A و B
    For Each cell In colRangeA
        If Application.WorksheetFunction.CountIf(colRangeA, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
    
    For Each cell In colRangeB
        If Application.WorksheetFunction.CountIf(colRangeB, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
    
    For Each cell In colRangeC
        If Application.WorksheetFunction.CountIf(colRangeC, cell.Value) > 1 Then
            cell.Offset(1, 0).Resize(lastRow - cell.Row).Value = cell.Value
        End If
    Next cell
End Sub

 

 

ممتاز لكن السؤال كيف أطبق هذا الكود وأين أضعه؟

هل أضعه في خلية واحدة مثلاً؟

السؤال الذي يطرح نفسه ما هو فائدة أيقونة إزالة التكرارات إذن؟ 

اذا كانت لا تقوم بإزالة التكرارات؟

لاحظوا هذه الرسالة تتكرر في كل مرة أقوم بالضغط على "إزالة التكرارات" !!!

والعدد يبقى كما هو 

لقطة شاشة 2023-08-18 094858.png

قام بنشر
13 ساعات مضت, رحااال said:

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

استخدمت نفس الطريقة وظهر لي التكرار بعضها 2 وبعضها 3

الاشكال كيف أزيل هذه التكرارات اذا كان العمود كبير؟ بالآلاف

إعمل فرز أو تصفية حسب الرقم والعدد أكبر من 1 مكرر احذفه

قام بنشر
9 ساعات مضت, أبوأحـمـد said:

إعمل فرز أو تصفية حسب الرقم والعدد أكبر من 1 مكرر احذفه

1- عملت فرز لكن هل الفرز يكون للأرقام 1 . 2 والا للارقام الاساسية كيف اسوي فرز بحيث يكون ارتباط بين الرقم والنتيجة

2- هل الارقام 2 يعني ان الرقم موجود مرتين و3 يعني 3 مرات وهكذا؟   لأنني بحثت عن 3 ووجدته مرتين فقط و4 كذلك

 

قام بنشر

نعم صحيح 1= لا يوجد تكرار 

وهذا تعديل للمعادلة لزيادة التأكد

تم إضافة TRIM لحذف الفراغات

 

=SUMPRODUCT(((TRIM(RIGHT($A1:$A$1;6)))=TRIM((RIGHT(A1;6))))*1)

 

  • Like 2
قام بنشر
6 ساعات مضت, أبوأحـمـد said:

نعم صحيح 1= لا يوجد تكرار 

وهذا تعديل للمعادلة لزيادة التأكد

تم إضافة TRIM لحذف الفراغات

اللي اقصده يا أبو أحمد لو سويت سورت ،،، وصارت الرقم واحد فوق وال2 تحت لكن عمود ارقام الجوالات ما تغير مكانه بكذا تلخبطت الامور

فكيف اسوي سورت بحيث يكون كل نتيجة مرتبط بالرقم 

=SUMPRODUCT(((TRIM(RIGHT($A1:$A$1;6)))=TRIM((RIGHT(A1;6))))*1)

 

 

قام بنشر
14 دقائق مضت, رحااال said:

اللي اقصده يا أبو أحمد لو سويت سورت ،،، وصارت الرقم واحد فوق وال2 تحت لكن عمود ارقام الجوالات ما تغير مكانه بكذا تلخبطت الامور

 

لحل المشكلة انسخ العمود اللي فيه معادلة ثم إلصقه كقيم 

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