سؤال

قمت بترميز برنامج نصي VBA في Excel الذي يضيف بيانات جديدة إلى ورقة بيانات مع معلومات سابقة. قبل القيام بذلك، يتم نسخ البيانات الجديدة إلى ورقة بيانات مؤقتة. لمنع التكرارات، أقوم بإنشاء عمود إضافي وقم بإجراء VLOOKUP من المعرفات. إذا كان المعرف من البيانات المستوردة الجديدة موجودة بالفعل في ورقة البيانات مع البيانات القديمة، فسيتم تمييز هذا الصف بأنه مكررة وسيتم حذفه. ثم يتم نسخ "الصفوف غير المكرر" في ورقة البيانات النهائية، حيث يتم تخزين جميع البيانات.

الآن أستخدم مرجعا عمود (a: a) في vlookup ولا أعرف إذا كان هذا هو السبب في أن البرنامج النصي VBA يحتاج إلى كل يوم المزيد من الموارد والوقت لتشغيله. عندما ترميز لأول مرة، فعلت الاختبار بدون أكثر من 4000 صف في ورقة البيانات الأصلية و 4000 صف في البيانات المستوردة. تم إجراء الماكرو بعد 90 ثانية. في الوقت الحالي، يحتاج إلى أكثر من 5 دقائق، وتبلغ ورقة البيانات مع البيانات 40،000 صف فقط، في حين أن البيانات الجديدة هي دائما حوالي 4000 صفوف.

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

هل كانت مفيدة؟

المحلول

كما هو مذكور في تعليقي، هناك بالتأكيد طريقة لإنجاز هذه المهمة باستخدام VBA، ولكن في بعض الأحيان يكون الحل الأبدية هو الأفضل.أود أن أوصي بإضافة سجلات 40 كيلو 40K في كل مرة واستخدام وظيفة "إزالة التكرارات" تحت شريط "البيانات" باستخدام العمود الذي يحمل قيمتك الفريدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top