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

نقل الاسماء بدون تكرار حسب الشروط واعطاء كود لكل حالة


sabah2023
إذهب إلى أفضل إجابة Solved by أ / محمد صالح,

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

السلام عليكم

يوجد معادلة حاولت ان اعدل عليها ولكن لم احصل على النتيجة المطلوبة

وارفت ملف يتضمن النتائج المطلوبة

اتمنى ان اجد الحل لهذا الموضوع كما توعدنا

جزاكم الله خير

 

نقل الاسماء بدون تكرار بشروط.xlsx

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

عليكم السلام

إذا كنت منفتحاً على استخدام ماكرو فإليك هذا وإلا ....

Sub test()
    Dim a, w
    Dim T As String
    Dim i&
    a = Sheets("aaa").Cells(1).CurrentRegion
    With CreateObject("scripting.dictionary")
        For i = 2 To UBound(a)
            T = a(i, 2) & a(i, 3) & a(i, 4)
            If Not .exists(T) Then
                .Add T, Array(.Count + 1, a(i, 2), a(i, 3), a(i, 4), a(i, 1), a(i, 1) + IIf(a(i, 1) = 1, 199, 99))
            Else
                w = .Item(T): w(5) = w(4) + 99: .Item(T) = w
            End If
        Next
        Sheets("aaa").Cells(2, 9).Resize(.Count, UBound(a, 2) + 2) = Application.Index(.items, 0, 0)
    End With
End Sub

 

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

السلام عليكم

حياك الله

يوجد بعض الملاحظات بالملف المرفق  - ارجو المرور عليها 

جزيت خيرا

 

واذا امكن شرح لي الكود البرمجي - ليتسنى لي في حالة تغيير مكان الخانات أو التبديل أو  الاضافة حتى اعرف وين اغير الكود

نقل الاسماء بدون تكرار بشروط - كود (1).xlsm

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

السلام عليكم 

الكود شغال بجلب اسماء المخازن وفروعها بشكل 100 %

الخانات باللون الاخضر المطلوب هو - اعزكم الله

اظهار التسلسلات بشكل تلقائي اثناء الضغط على زر التنفيذ على اساس التسلسلات باللفون الاصفر

وسوف اكتب التسلسلات (النتائج المطلوبة)  في خانات اللون الاخضر كمثال ، ويرحم والديك - لا تنسى شرح الكود لي

نقل الاسماء بدون تكرار بشروط - كود123.xlsm

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

  • أفضل إجابة

استكمالا لجهود الزملاء الأعزاء

إذا كان لديك أوفيس 2021 أو 365 يمكنك وضع هذه المعادلة في I2

=UNIQUE($B$2:$D$16)

أو يمكنك تعديل الإجراء المقدم من أخينا @محي الدين ابو البشر إلى

Sub test()
Dim a, T As String, i&
a = Sheets("aaa").Cells(1).CurrentRegion
With CreateObject("scripting.dictionary")
    For i = 2 To UBound(a)
        T = a(i, 2) & a(i, 3) & a(i, 4)
        If Not .exists(T) Then
            .Add T, Array(.Count + 1, a(i, 2), a(i, 3), a(i, 4))
        End If
    Next i
    Sheets("aaa").Cells(2, 9).Resize(.Count, UBound(a, 2)) = Application.Index(.items, 0, 0)
End With
End Sub

ولوضع كود لكل مادة في العمود الأول

يمكنك وضع هذه المعادلة في الخلية A2 مع سحبها لأسفل

=IFERROR(INDEX(M$2:M$8,MATCH(B2&C2&D2,J$2:J$8&K$2:K$8&L$2:L$8,0))-1+COUNTIFS(B$2:B2,B2,C$2:C2,C2,D$2:D2,D2),"")

بالتوفيق للجميع

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

اليك حل اخر بعد اظافة معادلة الاخ محمد صالح 

Sub Test2()
Set d = CreateObject("Scripting.Dictionary")
  k = Range("b2:D" & [b65000].End(xlUp).Row)
  Dim Rng(): ReDim Rng(1 To UBound(k), 1 To UBound(k, 2))
  For i = LBound(k) To UBound(k)
    Réf = k(i, 1) & "|" & k(i, 2) & "|" & k(i, 3)
    If d.exists(Réf) Then
       lig = d(Réf)
Else
d(Réf) = d.Count + 5: lig = d.Count: Rng(lig, 1) = k(i, 1): Rng(lig, 2) = k(i, 2): Rng(lig, 3) = k(i, 3)
End If
    
 Next i
 
[j2].Resize(d.Count, UBound(Rng, 2)) = Rng
End Sub

 

نقل الاسماء بدون تكرار بشروط.xlsb

تم تعديل بواسطه محمد هشام.
  • 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