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

طلب تعديل كود جلب بيانات للأستاذ ياسرخليل ابو البراء


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

السلام عليكم أخوانى 

على الرابط التالى موضوع

http://www.officena.net/ib/topic/58539-استدعاء-بيانات-بهذه-الطريقة،-يوجد-ملف-مرفق/#comment-373767

الكود المعنى بالتعديل " GetIdFaster "  ليشمل عدة أعمدة  من العمود C الى العمود Z

 بالمرفق ياللى بالمشاركة رقم 6 وهو من تنفيذ الاستاذ / ياسر خليل

تقبلوا وافر تقديرى

 

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

أخي الكريم

الكود التالي

Sub GetId()
    Dim Cell As Range, Rng As Range
    'سطر لتجنب الخطأ في حالة عدم العثور على نتائج
    On Error Resume Next
    'تعيين نطاق البيانات في ورقة البيانات الرئيسية
    Set Rng = Sheet1.Range("B3:C" & Sheet1.Cells(Rows.Count, 2).End(xlUp).Row)
    'عمل حلقة تكرارية لكل خلية من خلايا النطاق المراد إظهار النتائج به ، في العمود الثالث
    For Each Cell In Sheet2.Range("C4:C" & Sheet2.Cells(Rows.Count, 2).End(xlUp).Row)
        'قيمة الخلية تساوي نتيجة البحث عن الخلية المجاورة في نطاق البيانات ، ويكون الحبث في خانة العمود الثاني
        Cell.Value = Application.WorksheetFunction.VLookup(Cell.Offset(0, -1), Rng, 2, False)
    Next Cell
End Sub

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

حاول ترفق ملفك لتكون الأمور أوضح

إذا كنت تقصد نطاق البيانات يبقا التعديل أمره بسيط

هتشوف صف البداية وليكن كما في الكود الصف الثالث

والأعمدة زي ما ذكرت بدايتها العمود C ونهايتها العمود Z

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

Set Rng = Sheet1.Range("C3:Z" & Sheet1.Cells(Rows.Count, 3).End(xlUp).Row)

 

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

اخى العزيز الاستاذ ياسر خليل

تحية طيبة

الكود المطلوب تعديله هو الكود رقم 3 حيث أنه الاسرع فى استدعاء البيانات

ياللى بالملف  الموجود بالمشاركة رقم 6

والتعديل هو زيادة نطاق البيانات الرئيسية  بالشيت الاول من العمود C الى العمود Z

حاولت التعديل على الاكود دون فائدة

علما بأنه توجد مشكلة فى رفع الملف فربما يوجد مشكلة بالمستعرض طرفى

وافرتقديرى واحترامى

 

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

أخي الحبيب ابن مصر

إليك المرفق التالي الذي يوضح الفرق في السرعة (هناك ثلاثة أكواد مختلفة لتحقيق الهدف .. شوف الكود الثالث لأنه لا يستخدم الحلقات التكرارية ستجد أنه الأسرع)

 

Comaprison.rar

أخى الفاضل الاستاذ ياسر

هذا ماأقصده **** شوف الكود الثالث لأنه لايستخدم الحلقات التكراريه

مع الاخذ فى الاعتبار من فضل حضرتك رسالة تأكيد استدعاء البيانات

وافر تقدير واحترامى

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

أخي الكريم ناصر

الكود كالتالي

Sub GetIdFaster()
    Dim Rng As Range
    Dim LastRow As Long
    
    'تعيين نطاق البيانات في ورقة البيانات الرئيسية
    With Sheet1
        Set Rng = .Range("B3:C" & .Cells(.Rows.Count, 2).End(xlUp).Row)
    End With
    
    'بدء التعامل مع ورقة النتائج
    With Sheet2
        'تحديد آخر خلية بها بيانات في العمود الثاني
        LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        'بدء التعامل مع العمود المراد استخراج النتائج به
        With .Range("C4").Resize(LastRow - 1)
            'معادلة البحث عن الأسماء في ورقة البيانات في خانة العمود الثاني
            .Formula = "=IFERROR(VLOOKUP(B4," & Rng.Address(, , , True) & ",2,False),"""")"
            .Value = .Value
        End With
    End With
End Sub

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

أو ارفق ملفك للعمل عليه إذا صعب عليك الأمر

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

الأستاذ الفاضل/ ياسر خليل

السلام عليكم 

مرفق ملف يوضح المطلوب.

وهو إستدعاء كافة بينات الاعمدة من العمود b إلي العمود Z 

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

تعديل كود جلب بيانات.xlsb.rar

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

جرب هذا الكود

Sub Test()
    Dim Col As New Collection, Arr, I As Long, J As Long
    On Error Resume Next

    Arr = Sheet1.Range("A7").CurrentRegion.Value
    For I = 2 To UBound(Arr, 1)
        For J = 2 To UBound(Arr, 2)
            Col.Add Key:=Arr(1, J) & Chr(2) & Arr(I, 1), Item:=Arr(I, J)
        Next J
    Next I

    With Sheet2.Range("A7").CurrentRegion
        Arr = .Value
        For I = 2 To UBound(Arr, 1)
            For J = 2 To UBound(Arr, 2)
                Arr(I, J) = Col(Arr(1, J) & Chr(2) & Arr(I, 1))
            Next J
        Next I
        .Value = Arr
    End With
End Sub

 

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

القدير الفاضل الاستاذ ياسر

سلام الله عليك

ليس بعد

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

 بإنتطار ردكم الكريم   

وافر تقديرى

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

أخي الكريم يرجى توضيح الأمر ..

ما المشكلة التي واجهتك في تنفيذ الكود .. انقر على كلمة Debug سيظهر معك سطر باللون الأصفر يرجى سخه ولصقه في مشاركة

أو توضيح المسألة بشيء من الدقة

 

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

الاستاذ الفاضل ياسر خليل ابو البراء

السلام عليكم

بارك الله فيك 

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

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

بإنتظار ردكم الكريم ***** وافر تقديرى واحترامى

 

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

أخي ناصر

كن أكثر تحديداً .. بعد استدعاء البيانات من Sheet1 إلى Sheet2

أنت تقوم بمسح البيانات الأصلية في Sheet1 أم مسح النتائج في Sheet2 ..؟

شيء آخر مهم بالنسبة للعناوين جرب تغير العناوين بحيث تكون العناوين مختلفة في كلا الورقتين

يعني العنوان في الملف المرفق باسم "الرقم" خلي العناوين في الأعمدة مختلفة في الورقتين

بمعنى آخر : خلي العناوين مثلا "الرقم 1" ، " الرقم 2" ، "الرقم 3" وهكذا

ونفس العناوين تكون متطابقة في الورقتين معاً .. ثم نفذ الكود مرة أخرى وجرب

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

أخى الفاضل ابوالبراء

السلام عليكم ورحمته الله وبركاته

الله ينورعليك

لم انتبه الى تغييرعناوين الاعمدة 

قمت بتغيرمسميات رؤس الاعمدة وتم تنفيذ الكود بفضل الله ثم بفضلكم

هل يمكن اخى الكريم بطرح إضافات أخرى للموضوع

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

بإنتظار ردكم الكريم ***** وافر تقديرى واحترامى

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

أخي الكريم ناصر

إذا كانت النقطة الأخرى تخص الطلب نفسه فلا مانع من طرحها هنا أما إذا كان الطلب مختلف عن الطلب الأصلي فأرجح طرح موضوع جديد

ولي وجهة نظر في ذلك : لنفترض أن أحد الخبراء اطلع على الموضوع الآن وقمت حضرتك بطرح نقطة جديدة .. العضو الخبير سيضطر إلى متابعة جميع المشاركات إلى أن يصل إلى المشاركة الأخيرة حتى يفهم الموضوع بشكل جيد ويحاول تقديم المساعدة فيه .. وفي هذا تضييع لوقت العضو الذي يريد المساعدة ناهيك أنه عندما يجد مشاركات كثيرة بالموضوع فقد ينتابه الكسل وينتقل لموضوع آخر دون أن يلتفت إلى الموضوع الحالي

ذكرت ذلك لأن الكثيرين يتضايقون من طرح موضوع آخر ، أحببت أن أوضح السبب في الأفضلية

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

أرجو تقبل الأمر من الجميع ... تقبلوا وافر تقديري واحترامي

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

السلام عليكم أخي الحبيب أبو البراء

كل عام وأنتم إلى الله أقرب بحلول عام هجري جديد..

ما شاء الله ..بارك الله ...خطاب متوج بالرزانة والحكمة 

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

الرأي قبل شجاعة الشجعان   هو أول وهي المحل الثاني..  والسلام عليكم.

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

أخى العزيز الفاضل الاستاذ القدير / ابو البراء

بارك الله فيك وأحسن الله إليك كما أحسنت لنا

بما أننا فى صلب الموضوع

 فهل يمكن فضلا من حضرتك

أن يكون إستدعاء البيانات بنفس تنسيقات ورقة البيانات الرئيسية 

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

لعدد معين من الاسماء مع وجود عدد معين من الصفوف الفارغة بين كل مجموعة أسماء

بانتظار ردكم الكريم وتويجهاتك الحكيمة

نحو الابقاء بنفس الموضوع أم أطرح موضوع أخر للطرح العام

 وافر تقديرى واحترامى

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

أخي الكريم ناصر ..

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

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

 

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

أخى الفاضل الاستاذ الفاضل / ياسر خليل

السلام عليكم

وكيف يتم ذلك لعدم خبرتى الكافية بالاكواد

أو ماهى الاكواد الملائمة لتنفيذ ذلك

بانتظار ردكم الكريم 

وافر تقديرى واحترامى

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

أخى الفاضل الاستاذ ابو البراء

السلام عليكم

تم الاطلاع على حلقات أفتح الباب وكم هى شيقة

ولكنها تحتاج لوقت للخوض فى دراستها كونى مبتدأ فى كيفية إدارة الاكواد

فهل من سبيل لاستكمال ما أشرت اليه لسيادتكم لاننى فى أمس الحاجة لهذه الاضافات

بارك الله فيك ***** فى انتظار ردكم **** تقبل وافر إحترامى وتقديرى

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

وعليكم السلام أخي الكريم ناصر

اعذرني أخي الحبيب لأن الوقت قد تأخر ولدي مشاغل كثيرة غداً

يمكن طرح موضوع جديد تطلب فيه تنسيق النتائج المستخرجة وإن شاء الله تجد المساعدة من إخوانك بالمنتدى

أعتذر إليك لضيق الوقت لدي

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

أخى الفاضل الاستاذ ياسر خليل

السلام عليكم **** والله يعطيك العافية

لاداعى للإعتذار أخى الكريم  يكفى أن حضرتك تتمتع بذوق عالى وخلق كريم

سيتم طرح الموضوع للطرح العام لحين سماح وقتكم ويسعدنى

مشاركة حضرتك لما فى مشاركاتك لمسات عمليه ذات إفادة عظيمة

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

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

اخى العزيز الفاضل ياسر خليل

السلام عليكم  وطابت اوقاتك بكل خير

معذرة اخى الفاضل نرجو فضلا من سيادتكم تعديل المدى الى

من العمود A  الى العمود J

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

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

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.

×
×
  • اضف...

Important Information