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

طارق محمود

أوفيسنا
  • Posts

    4,520
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    42

مشاركات المكتوبه بواسطه طارق محمود

  1. السلام عليكم
    لماذا كل هذه التشكيلات الغريبة في الملف .؟ 

    الملف كان ممكن يكون أسهل بكثير إذا لم يكن هناك MERGE - WRAPE ... الفونت 60 وأكثر ....

    الأفضل إعادة صياغة الملفات بالطريقة العادية ليسهل عمل المعادلات 

  2. السلام عليكم
    الأفضل تضع كل الحالات

    لذلك وضعت لك الحل من خلال أكثر من كود واحد

    الأول : عند تنشيط الورقة 
    وهذا يراجع الصفوف من 15 إلي آخر صف ويخفي السطر أوتوماتيكيا بشرطين أن I=0  ، G<>0 أي يكون هناك سداد

    الثاني : عند حدث تنشيط الورقة 
    وهذا يراجع الصفوف من 15 إلي آخر صف ويخفي السطر أوتوماتيكيا بشرطين أن I=0  ، G<>0 أي يكون هناك سداد

    الثالث : Un-Hide
    كود عادي ليس خاص بأحداث الورقة
    وهذا يظهر كل السطور التي تم إخفاؤها من قبل

    بالإضافة إلي كود رابع في حدث الملف عند فتح الملف يتم تفعيل الكود الأول

    إليك الأكواد والملف به الأكواد

     

    Private Sub Worksheet_Activate()
    LR = [I9999].End(xlUp).Row
    If LR < 15 Then LR = 15
    
    For r = 15 To LR
       If Cells(r, "I") = 0 And Cells(r, "G") <> 0 Then Rows(r).EntireRow.Hidden = True
    Next r
    
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    r = Target.Row
    If Cells(r, "I") = 0 And Cells(r, "G") <> 0 Then Rows(r).EntireRow.Hidden = True
    End Sub
    
    Sub un_Hide()
    LR = [I9999].End(xlUp).Row
    
    Rows(10 & ":" & LR).EntireRow.Hidden = False
    
    End Sub
    
    
    '===============================================================
    Private Sub Workbook_Open()
    Sheets ("كشف الحساب ")
    LR = [I9999].End(xlUp).Row
    If LR < 15 Then LR = 15
    
    For r = 15 To LR
       If Cells(r, "I") = 0 And Cells(r, "G") <> 0 Then Rows(r).EntireRow.Hidden = True
    Next r
    End Sub

     

     

    اخفاء السطر.xlsm

    • Like 2
  3. السلام عليكم ورحمة الله

    أخي الكريم

    تفضل جرب الكود التالي

    Sub nn()
    For sh = 1 To Sheets.Count
        With Sheets(sh)
            LR = .[C9999].End(xlUp).Row
            .Range("A" & LR & ":H" & LR).Copy
            .[A17].PasteSpecial xlPasteValues
            With .Range("A18:H" & LR)
                .ClearContents
                .Interior.ColorIndex = xlNone
                
            End With
        End With
    Next sh
    End Sub

    ومرفق أيضا الملف وبه الكود

    اصناف2.xlsm

    • Like 3
  4. السلام عليكم
    أخي الكريم

    اولا :  مبروك على التطوير

    لم أفهم أي تطوير ، لكن بارك الله فيك في جميع الأحوال
     

    ثانيا: الملف الثاني كمان معطوب
    برجاء الإرسال بصيغة xls عادي سيقبل المنتدي

    أو لو استطاع أحد الإخوة فتح أي من الملفين يتفضل بإعادة رفع الملف مفكوك

  5. أخي الكريم
    عند تغيير أي بيان في البيانات الأصلية لايظهر ذلك في pivot table إلا بعد أن تعمل تحديث لل pivot table نفسه
    أسهل طريقة لعمل التحديث Refresh عن طريق الضغط علي الزر الأيمن للماوس وأنت داخل ال pivot table
    أنظر الصورة

    image.png.fd3438d1474a41b8114bc9cbc1911a5d.png




    ومن الممكن إذا كان التغيير كثيرا وقد يحدث نسيان منك أو من المستخدم ، أقصد نسيان عمل التحديث Refresh 
    ممكن في هذه الحالة عمل كود صغير بالورقة التي بها ال  pivot table تجعل عمل التحديث Refresh يتم أوتوماتيكيا كلما فتحت تلك الورقة

    • Like 2
  6. السلام عليكم
    تستطيع دائما تفكيك اي معادلة لفهمها

    لاحظ أن نظام الجهاز عندي يضع بالمعادلة علامة (,) بدلا من (;)

    المعادلة السابقة
    بعد تفكيكها تكون كالتالي  

    =IFERROR(A,)

    حيث نستعيض بالمعامل   A  عن المعادلة 

    SUMPRODUCT((INDEX(ACH.!$B$3:$AP$9999,MATCH(A3,ACH.!$A$3:$A$9999,),)>0)*COUNTIF(INDEX(IP!$C$4:$N$44,,IFERROR(MATCH(C3,IP!$E$2:$N$2,)+2,MATCH(E3,IP!$C$3:$D$3,))),ACH.!$B$1:$AP$1))

    ومعني المعادلة الأولي أن في حالة حدوث خطأ من المعادلة  A فلا تكتب النتيجة خطأ
    والآن إلي  المعادلة  A بنفس الطريقة نبسطها كالتالي
     

    A= SUMPRODUCT(B*C)
    حيث
    B=(INDEX(ACH.!$B$3:$AP$9999,MATCH(A3,ACH.!$A$3:$A$9999,),)>0)
    ،
    C=COUNTIF(INDEX(IP!$C$4:$N$44,,IFERROR(MATCH(C3,IP!$E$2:$N$2,)+2,MATCH(E3,IP!$C$3:$D$3,))),ACH.!$B$1:$AP$1)

    ومعني ذلك ببساطة أن A تساوي حاصل ضرب مصفوفتين B,C مشروطتين

    والمصفوفة B هي أيضا يمكن تبسيطها هكذا 

    B=(INDEX(B1,B2,)>0)
    حيث 
    B1
    هي المجال 
    ACH.!$B$3:$AP$9999
    
    ،
    B2
    هي المعامل الناتج عن
    MATCH(A3,ACH.!$A$3:$A$9999,)

    و لإيجاد المعامل B2
    نذهب للورقة ACH في المجال A3:A9999 والذي يبدأ بالخلية A3 لتبحث عن كود العميل والموجود بالخلية A3 بالورقة QSC ،
    إذن ستجد أنه في الصف الثامن (إذا بدأت العد من الخلية A3 )

    أي أن : الجزء الأخير من المصفوفة B والذي أسميناه B2 سيأتي بالرقم 8
    إذن المصفوفة B هي عنصر ناتج من المجال B1     (أي المجال B3:AP9999  في الورقة ACH) وهو العنصر الثامن 
    وحيث أن رقم العمود لم يذكر فيكون الناتج هو كامل الصف الثامن من المجال B3:AP9999  في الورقة ACH
    وبما أن  وحيث المجال B3:AP9999  يحتوي علي 41 عمود من (B) إلي (AP)
    إذن نتوقع أن يكون العنصر الثامن هذا هو محتوي 41 خلية وبالرجوع لها تجدها (1 , 0 , 1 , 0 , 1 , 1 , 0 , 6.25 , 1 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0) بالترتيب حيث يعتبر الخلايا الفارغة أصفار
    باقي معني أخير بالمصفوفة B وهي مقارنة العناصر الناتجة بالرقم 0 (حيث آخر مقطع منها هو >0)
    فالناتج النهائي لها سيكون 41 عنصرا كل منها يحتوي علي 1 إذا كان الأصلي أكبر من 0 ويحتوي علي 0 إذا كان الأصلي ليس أكبر من 0
    الناتج النهائي لها سيكون هكذا (1 , , 1 , , 1 , 1 , , 1 , 1 , 1 , 1 , , , , , , , , , , , , , 1 , 1 , , 1 , , , , , 1 , , , , , , , , , )
    والمعني الطبيعي لهذا هو جعل الإكسل ينتقي عدد المرات (الأصناف) التي أخذها هذا العميل

    والآن المصفوفة C هي ..... هكذا بنفس الوسيلة تجد أنها أيضا تنتج 41 عنصرا
    من الورقة الأخيرة IP وهذه العناصر رأسية (SKU CODE) ولابد أن تتساوي في العدد مع عناصر المصفوفة الأولي أي 41 عنصرا
    حقيقة أنا لا أعلم ماذا يعني SKU CODE ولكن تقاطع المصفوفتين سينتج 1 عند التقاطعات المملؤة أي التي بها 1 في المصفوفتين
     

    أعتقد أن المعني لهذا هو جعل الإكسل ينتقي عدد المرات (الأصناف) التي أخذها هذا العميل وفي نفس الوقت تتطابق مع هذا ال SKU CODE

     

    • Like 5
    • Thanks 1
  7. السلام عليكم
    أهلا ومرحبا أخي الكريم
    إستعنت بكود تفقيط عربي لأستاذنا الجليل عبد الله باقشير 
    ستتعرف علي الكود وعلي المعادلات الجديدة المضافة للملف
    وكل ماهو بالفونط الأزرق
    حتي أنه كان عندك خطأ في العام (كتبت 2018 بدلا من 2019) في الخلية C16 بالورقة2
    وكذلك أي خلايا بها عوامل مساعدة ستجدها بالأزرق أيضا بالجزء الرمادي بالورقة

    أرجو أن يكون المرفق هو ماتريد
    تفضل

    تصفيه_مستحقات.xlsm

    • Like 1
  8. السلام عليكم

    أخي الكريم

    مرفق نفس الملف وبه الكود

    لكي تضيف نفس الكود بالملف الأصلي

    إفتح الملف ثم الفيجوال بيسيك Alt-F11 ثم دبل كليك علي اسم الشيت

    ثم انسخ هذا الكود وضعه بمحرر الأكواد

    Private Sub Worksheet_Change(ByVal Target As Range)
    cl = Target.Column
    If cl > 14 And cl < 17 Then Exit Sub
       r = Target.Row
       If WorksheetFunction.CountA(Range(Cells(r, 1), Cells(r, 11))) < 2 Then Exit Sub
    
        ActiveSheet.Unprotect Password:="121314"
        Cells(r, 15) = Application.UserName
        Cells(r, 16) = Date & " - " & Time
        'Range("A1:C" & r).Locked = True
        
        ActiveSheet.Protect Password:="121314"
         
    End Sub

    كما بالصورة التالية
    image.png.a65e1d1eece7a808bf34470672d266fe.png

    AAAA (1).xlsm

    • Like 2
  9. السلام عليكم

    أخي الكريم

    لم يفتح الرابط الذي أعطيته أنت

    وبحثت عن رابط مماثل ، تجده بالورقة الثانية بالمرفق

    الرابط الثاني هو : http://www.asmainfo.com/Kuwait/Ar/quotes/DailyQuote.aspx

    أيضا يجلب فقط حتي السطر الـ 327 لأن هذا هو آخر سطر بالصفحة علي الموقع بالفعل

    أي أنه لايوجد شركات أخري بعد شركة مبرد للنقل

    تفضل المرفق

    استيراد البيانات.xlsx

  10. السلام عليكم

    إذن تنسخ الأكواد من ملف  Report.xlsm الى الشيت الاصلى الى فيه الداتا كاملة 

    السلام عليكم

    إذن تنسخ الأكواد من ملف  Report.xlsm الى الشيت الاصلى الى فيه الداتا كاملة 

    أو إرسل لي الى الشيت الاصلى (لو فيه داتا تخاف من نشرها ، إرسله علي الخاص كرسالة)

×
×
  • اضف...

Important Information