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

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

السلام عليكم تحيه طيبه للجميع

بإختصار بيانات يتم تصفيتها باسماء العملاء ويتم استخراج اعلى قيمة للعميل بعد التصفيه بإستخدام دالة SUBTOTAL وتعمل بشكل جيد

المطلوب استخراج تاريخ اعلى قيمة

مرفق المثال وشرح المطلوب بشكل واضح وشرح داخل الماكرو لطريقة عمله

مع الشكر

مثال.rar

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

أخي الكريم ماذا لو كان هناك أكبر القيم لعميل واحد بنفس القيمة ..أقصد مثلاً إذا قمنا بتصفية العميل وحصلنا على القيمة 10 مرتين .. ما الحل في هذه الحالة؟

 

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

تقصد الأحدث في التاريخ ؟؟ هو الأول أم الأقدم في التاريخ؟؟

حاول تكون محدد الهدف لأنه وارد ان يكون هناك أكثر من قيمة للعميل الواحد

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

أخي الكريم جرب الكود التالي

Sub Test()
    Dim A, I As Long, II As Long

    A = Sheets("ALL").Cells(1).CurrentRegion.Value

    With CreateObject("Scripting.Dictionary")
        For I = 1 To UBound(A, 1)
            If Not .exists(A(I, 1)) Then
                .Item(A(I, 1)) = .Count + 1
                For II = 1 To UBound(A, 2)
                    A(.Count, II) = A(I, II)
                Next
            Else
                If A(I, 3) > A(.Item(A(I, 1)), 3) Then
                    For II = 2 To UBound(A, 2)
                        A(.Item(A(I, 1)), II) = A(I, II)
                    Next II
                ElseIf A(I, 3) = A(.Item(A(I, 1)), 3) Then
                    A(.Item(A(I, 1)), 2) = Application.Min(A(.Item(A(I, 1)), 2), A(I, 2))
                End If
            End If
        Next
        I = .Count
    End With

    Sheets("DATA").Cells(1).Resize(I, UBound(A, 2)).Value = A
End Sub

تقبل تحياتي

 

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

صراحة أخي الكريم الكود يحتاج لوقت طويل جداً لشرحه ووقتي للأسف لا يسمح بذلك ..

إن شاء الله يتدخل أحد الأخوة ويقوم بشرحه .. ولكن لماذا تريد الشرح .. إذا كنت تريد تعديل على الكود بحيث يناسب ملفك عدلناه لك إن شاء الله

فقط وضح ما تريد فعله ليسهل التعديل

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

الله يجزاك خير نعم اريد التعديل لفلترت التاريخ مثلا عام 2015 فقط

بمعنى مشتروات العميل فقط لعام واحد واستخراج الاعلى لها نفس الطريقه السابقه

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

يرجى إرفاق ملف آخر موضحاً فيه شكل النتائج المتوقعة لأن الطلب غير واضح بعض الشيء ... بالمثال دائماً يتضح المقال

تقبل تحياتي

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

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

في ١٠‏/٦‏/١٤٣٧ هـ at 17:36, ياسر خليل أبو البراء said:

 


Sub Test()
    Dim A, I As Long, II As Long

    A = Sheets("ALL").Cells(1).CurrentRegion.Value

    With CreateObject("Scripting.Dictionary")
        For I = 1 To UBound(A, 1)
            If Not .exists(A(I, 1)) Then
                .Item(A(I, 1)) = .Count + 1
                For II = 1 To UBound(A, 2)
                    A(.Count, II) = A(I, II)
                Next
            Else
                If A(I, 3) > A(.Item(A(I, 1)), 3) Then
                    For II = 2 To UBound(A, 2)
                        A(.Item(A(I, 1)), II) = A(I, II)
                    Next II
                ElseIf A(I, 3) = A(.Item(A(I, 1)), 3) Then
                    A(.Item(A(I, 1)), 2) = Application.Min(A(.Item(A(I, 1)), 2), A(I, 2))
                End If
            End If
        Next
        I = .Count
    End With

    Sheets("DATA").Cells(1).Resize(I, UBound(A, 2)).Value = A
End Sub

 

 

 

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

  • 1 year later...

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