Friday, 2 March 2018

تتحرك متوسط فبا الصفيف


أريد أن حساب متوسط ​​متحرك لآخر، ويقول 20، أرقام العمود. والمشكلة هي أن بعض خلايا العمود قد تكون فارغة، وينبغي تجاهلها. مثال: المتوسط ​​المتحرك للثلاثة الأخيرة سيكون (155167201) 3. حاول إيف تنفيذ هذا باستخدام المتوسط، تعويض، مؤشر، ولكن أنا ببساطة لا أعرف كيف. إم مألوفة قليلا مع وحدات الماكرو، لذلك هذا الحل سوف تعمل بشكل جيد: موفينغافيراج (A13) شكرا لأية نصائح أو حلول سأل 12 مارس 11 في 15:36 أدخل هذا مع كونترولشيفتنتر لجعلها صيغة صفيف. سيجد هذا أحدث ثلاث قيم. إذا كنت تريد أكثر أو أقل، تغيير حالتين من 3 في الصيغة إلى ما تريد. يقوم هذا الجزء بإرجاع 4 أعلى رقم صف لكل الخلايا التي لها قيمة أو 5 في المثال الخاص بك لأن الصفوف 6 و 8 و 9 هي الصفوف الأولى إلى الثالثة الأعلى مع قيمة. يعود هذا الجزء 9 ترو أو فالس استنادا إلى ما إذا كان رقم الصف أكبر من 4 أكبر. هذا يضاعف القيم في A1: A9 من قبل تلك 9 أو فالس. يتم تحويل ترويس إلى 1 و فالس إلى الصفر. هذا يترك دالة سوم مثل هذا لأن جميع القيم أعلاه 155 لا تفي بمعيار رقم الصف، والحصول على مضروبة صفر. لقد كتبت نصا قصيرا في فبا. هوبيفول يفعل ما تريد. هنا أنت: 1) لقد وضعت الحد إلى 360 الخلايا. وهذا يعني أن البرنامج النصي لن يبحث عن أكثر من 360 خلية. إذا كنت ترغب في تغييره ثم تغيير القيمة الأولية للعداد. 2) البرنامج النصي لا يعود متوسط ​​مدور. تغيير الصف الأخير إلى موفينغافيراج جولة (كدل (تمب ط)، 2) 3) استخدام هو تماما مثل أردت، حتى مجرد اكتب موفينغايفيراج (a13) في الخلية. أي تعليقات هي موضع ترحيب. الجدول متوسط ​​الجدول أدناه سوف ننظر إلى برنامج في إكسيل فبا أن يخلق الجدول المتوسط ​​المتداول. وضع زر أمر في ورقة العمل وإضافة سطر التعليمات البرمجية التالي: رانج (كوت. كوت 3).Value وركشيت فونكتيون. راندبيتوين (0، 100) يدخل سطر التعليمات البرمجية هذا رقم عشوائي بين 0 و 100 في الخلية B3. نريد إكسيل فبا لاتخاذ قيمة الأسهم الجديدة ووضعه في المركز الأول من الجدول المتوسط ​​المتداول. يجب أن تتحرك جميع القيم الأخرى لأسفل مكان واحد ويجب حذف القيمة الأخيرة. إنشاء حدث تغيير ورقة العمل. سيتم تنفيذ التعليمات البرمجية المضافة إلى حدث تغيير ورقة العمل بواسطة إكسيل فبا عند تغيير خلية على ورقة عمل. انقر نقرا مزدوجا فوق الورقة 1 (الورقة 1) في مستكشف المشروع. 3. اختر ورقة عمل من القائمة المنسدلة لليسار. اختر تغيير من القائمة المنسدلة المناسبة. إضافة خطوط التعليمات البرمجية التالية إلى حدث تغيير ورقة العمل: 4. أعلن متغير يسمى نيوفالو من نوع عدد صحيح ونطاقين (فيرستفورفالويس و لاستفورفالويس). خافت نوفالو كما صحيح. فيرستفورفالويس كمجال، لاستفورفالويس كمجال 5. حدث تغيير ورقة العمل يستمع إلى كافة التغييرات على الورقة 1. نريد فقط إكسيل فبا أن تفعل شيئا إذا تغير شيء في الخلية B3. ولتحقيق ذلك، قم بإضافة سطر التعليمات البرمجية التالي: إذا كان الهدف. إذا كنت تريد أن تقوم بتهيئة القيمة الجديدة مع قيمة الخلية B3، فيرستفورفالويس مع المدى (كوتد: D6quot) و لاستفورفالويس مع المدى (كوتد 4: D7quot). نيوفالو رانج (كوتاد 3quot).Value تعيين فيرستفورفالويس المدى (كوتد 3: D6quot) تعيين لاستفورفالويس المدى (كوتد 4: D7quot) 7. الآن يأتي خدعة بسيطة. نريد تحديث جدول المتوسط ​​المتداول. يمكنك تحقيق ذلك عن طريق استبدال القيم الأربع الأخيرة مع القيم الأربع الأولى للجدول ووضع قيمة الأسهم الجديدة في الموضع الأول. lastfourvalues. Value firstfourvalues. Value رانج (cutD3quot).Value نوفالو 8. لا تنسى إغلاق بيان إف. 9. أخيرا، أدخل الصيغة أفيراج (D3: D7) في الخلية D8. 10. اختبار البرنامج من خلال النقر على زر الأمر. أنا دائما تستخدم مراجع مجموعة على أوراق العمل لحسابات، ولكن أنا بدأت الآن لاستخدام المصفوفات للعمل مع البيانات، وذلك بسبب مدى أسرع يمكن أن يكون. وانا ذاهب الى التعامل مع مليارات من الحسابات، لذلك أنا بحاجة إلى القيام به قدر الإمكان في الذاكرة. في مقتطف الشفرة المقدمة، أحاول الحصول على سماميناراي لحساب المتوسط ​​المتحرك 50 فترة من القيم 50 السابقة من الصفيف المسمى فاراي. لا أحد يعرف كيفية تحقيقه هنا هو ما لدي حتى الآن، وأنا لا يمكن الحصول عليه للعمل. مجموع (فاراي (ي، j49) 50) هو الجاني. وأنا أعلم أن ليس صحيحا، ولكن كنت بحاجة الى اخماد فكرة لشخص ما مع تجربة أكثر من مجموعة من لي لتفسير ما أريد فعلا. أنا فقط لا أعرف كيفية ترجمة هذا إلى ملخص البنود 1 إلى 50 وتقسيم المجموع بنسبة 50. والعنصر الثاني من ساميناراي ثم حساب متوسط ​​العناصر 2 إلى 51، الخ أي أفكار هنا هو مقتطف من بعض التعليمات البرمجية التي حاولت: (إذا كنت تعيش في دالاس، سأشتري لك مشروب من اختيارك للمساعدة في هذه المشكلة) طلب مارس 18 15 في 3:41 ويبين الماكرو أدناه كيفية تحقيق النتيجة وأعتقد أنك تسعى. قمت بتعيين الخلية A1 من ورقة العمل موفيافغ إلى راند () 1000. أنا جر ذلك وصولا الى الخلية A1500. فعلت لصق خاص من القيم فقط لهذا النطاق حتى تم إصلاح القيم العشوائية. قمت بتعيين الخلية C50 إلى متوسط ​​الخلايا A1: 50. أنا جر ذلك إلى أسفل. قمت بتشغيل الماكرو أدناه الذي يخلق مصفوفة تحتوي على المتوسطات المتحركة. يتم كتابة هذه الصفيف إلى العمود E بدءا من الصف 50. توضح الصورة أدناه أن القيم المحسوبة بواسطة إكسيل تطابق القيم المحسوبة بواسطة الماكرو. ومع ذلك، فبا ليست هي اللغة التي تستخدمها كنت أداء المليارات من الحسابات. أجبت على سؤال حديث ينطوي على حساب 8،063 مليون قيمة وكتابتها على القرص مع 1 مليون قيم لكل ملف. حساب وحفظ 50 مليون القيم مع فبا استغرق 13 دقيقة، 15 ثانية. ويقترح المضاعف وقتا إجماليا لجميع القيم البالغ عددها 8،063 مليون قيمة ما يقرب من 14 يوما، أي 20 ساعة. مع VB. Net، وحساب وتخزين جميع القيم 0863 مليون استغرق 51 دقيقة. القراءة من وكتابة إلى مصنف إكسيل مع VB. Net أبطأ مع فبا. ولكن بمجرد أن تكون البيانات ضمن صفائف VB. Net، الحسابات هي آلاف المرات بشكل أسرع. VB. Net هو ترقية فبا لذلك منحنى التعلم ليست حاد. الإصدار السريع من VB. Net مجاني لتحميل ويمكنك توزيع أي برامج تكتبها إذا قمت بالتسجيل. أترك لكم للتفكير في ذلك.

No comments:

Post a Comment