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

ترحيل من وقة عمل لأخرى مع استثناء القيم الصفرية


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

الإخوة الافاضل:

أرجو مساعدتي في إيجاد حل للملف المرفق، حيث أني اريد ترحيل البيانات من sheet1 الى sheet2 بحيث تكون مرتبة في أعمدة محددة حسب المثال الموضح في sheet2، مع إستثناء القيم الصفرية (لا يتم ترحيلها)

 

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

Transfer data.rar

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

وعليكم السلام

أخي العزيز و اهلا بك في هذا المنتدى وأتمنى أن تجد فيه حلا لكل ما يواجهك في عالم البرمجة

أخي وكما هو معمول به وحسب التعليمات الرجاء تغيير اسم ظهورك إلى اللغة العربية فضلا لا أمرا

 

يوجد حل إن شاء الله ولكن لكثرة انشغال الأعضاء يمكن أن موضوعك لم ينتبه له أحد 

الرجاء المعذرة وطول بالك

تفضل جرب هذا الحل

افتح شيت 2 ثم اضغط transfer

Transfer data1.rar

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

21 ساعات مضت, أبوعيد said:

وعليكم السلام

أخي العزيز و اهلا بك في هذا المنتدى وأتمنى أن تجد فيه حلا لكل ما يواجهك في عالم البرمجة

أخي وكما هو معمول به وحسب التعليمات الرجاء تغيير اسم ظهورك إلى اللغة العربية فضلا لا أمرا

 

يوجد حل إن شاء الله ولكن لكثرة انشغال الأعضاء يمكن أن موضوعك لم ينتبه له أحد 

الرجاء المعذرة وطول بالك

تفضل جرب هذا الحل

افتح شيت 2 ثم اضغط transfer

Transfer data1.rar

جزاك الله خير اخي بخصوص التوضيح بالنسبة لإسم الظهور...

وبخصوص الملف المرفق فلا يوجد به شيء، فهو كما هو، ليس به حل...

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

بارك الله فيك وجزاك الله خيراً أخي الحبيب أبو عيد

متميز كالعادة .. أنت متمكن في الحلقات التكرارية بشكل كبير جداً ..

تتبعت كود ووجدته رائع وجميل ولكنه بطيء قليلاً بسبب الحلقات التكرارية LOOPS

تقبل وافر تقديري واحترامي

 

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

بعد إذن الأخ الغالي أبو عيد وإثراءً للموضوع إليك أخي الكريم أحمد عياد الكود التالي باستخدام المصفوفات وهي اسرع في التنفيذ من الحلقات التكرارية بمراحل

إليك الكود التالي يوضع في موديول عادي

Sub TransferUsingArrays()
    Dim a, aOutput, iCol As Long, iRow As Long, iLooper As Long
    
    With Worksheets("Sheet1")
        a = .Range("A1").CurrentRegion
    End With
    
    ReDim aOutput(1 To UBound(a) * UBound(a, 2), 1 To 12)
    
    For iCol = 2 To UBound(a, 2)
        For iRow = 2 To UBound(a)
            If a(iRow, iCol) > 0 Then
                iLooper = iLooper + 1
                aOutput(iLooper, 1) = iCol - 1
                aOutput(iLooper, 3) = a(1, iCol)
                aOutput(iLooper, 9) = a(iRow, 1)
                aOutput(iLooper, 12) = a(iRow, iCol)
            End If
        Next iRow
    Next iCol
    
    Sheet2.Cells(2, "A").Resize(iLooper, 12) = aOutput
End Sub

اضغط من لوحة المفاتيح Alt + F8 هيظهر لك نافذة الماكروهات الموجودة لديك اختر الماكرو المسمى TransferUsingArrays وانقر على Run ولاحظ سرعة التنفيذ ..

يمكنك التأكد من سرعة الأداء بتنفيذ الكود على بيانات أكثر وليكن 20000 صف على سبيل المثال لتتأكد من سرعة أداء الكود باستخدام المصفوفات

تقبل تحياتي

 

 

Transfer Data YasserKhalil.rar

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

38 دقائق مضت, ياسر خليل أبو البراء said:

بعد إذن الأخ الغالي أبو عيد وإثراءً للموضوع إليك أخي الكريم أحمد عياد الكود التالي باستخدام المصفوفات وهي اسرع في التنفيذ من الحلقات التكرارية بمراحل

إليك الكود التالي يوضع في موديول عادي


Sub TransferUsingArrays()
    Dim a, aOutput, iCol As Long, iRow As Long, iLooper As Long
    
    With Worksheets("Sheet1")
        a = .Range("A1").CurrentRegion
    End With
    
    ReDim aOutput(1 To UBound(a) * UBound(a, 2), 1 To 12)
    
    For iCol = 2 To UBound(a, 2)
        For iRow = 2 To UBound(a)
            If a(iRow, iCol) > 0 Then
                iLooper = iLooper + 1
                aOutput(iLooper, 1) = iCol - 1
                aOutput(iLooper, 3) = a(1, iCol)
                aOutput(iLooper, 9) = a(iRow, 1)
                aOutput(iLooper, 12) = a(iRow, iCol)
            End If
        Next iRow
    Next iCol
    
    Sheet2.Cells(2, "A").Resize(iLooper, 12) = aOutput
End Sub

اضغط من لوحة المفاتيح Alt + F8 هيظهر لك نافذة الماكروهات الموجودة لديك اختر الماكرو المسمى TransferUsingArrays وانقر على Run ولاحظ سرعة التنفيذ ..

يمكنك التأكد من سرعة الأداء بتنفيذ الكود على بيانات أكثر وليكن 20000 صف على سبيل المثال لتتأكد من سرعة أداء الكود باستخدام المصفوفات

تقبل تحياتي

 

 

Transfer Data YasserKhalil.rar

جزاك الله خيرا أخي ياسر وبارك الله بك...

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

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

استكمالا للموضوع، هل من الممكن ان يتم حذف الاعمدة التي تحتوي على القيم الصفرية (الخالية من أرقام اكبر من 0) في sheet1  قبل البدء بعملية الترحيل الى sheet2؟ كذلك هل ممكن ان يتم دمج خلايا كل رقم في  العمود C الشيت الثانية sheet2 بحيث تصبح خلية واحدة مدمجة تحتوي على رقم الزبون؟

مثال على الدمج في المرفق

وبارك الله بكم

Transfer data 123.rar

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

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