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

طريقة جمع الأرقام الموجودة داخل الخلية


إذهب إلى أفضل إجابة Solved by أ / محمد صالح,

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

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

مساء الخير

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

مثال بالأرقام:

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

(المرحلة الأولى)

2 + 8 + 9 + 4 + 7 + 8 + 6 + 9 +  1 + 0 + 3 + 9+ 1 = 67

ثم نقوم بالجمع مرة أخرى (المرحلة الثانية)

7+ 6 = 13

ثم نقوم بالجمع مرة أخرى (المرحلة الثالثة)

3 + 1 = 4

إذن الناتج هو 4 لأننا وصلنا إلى الرقم المكون من خانة واحدة فقط

أنتهى الحل

 

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

 

ملاحظة:

1- يظهر الناتج في خلية أخرى مثلا إسمها الخلية A2

2- في المثال أعلاه عدد المراحل ثلاثة ولكن لو كان الرقم المدخل في الخلية كبير جدا فطبيعي أن تزداد عدد المراحل إلى أكثر من ذلك (أي أنها ليست دائما ثلاثة مراحل). أو بمعنى آخر تتأثر عدد المراحل بمدى كبر حجم الرقم المدخل. وطبعا نحن لايهمنا كم ستصل عدد المراحل والمهم هو فقط ناتج الجمع ولكن ذكرت ذلك لإحتمال أن تكون المعلومة تساعد في تصميم الكود.

بحثت عن الطريقة على الإنترنت ولكن لم أجد الحل الصحيح وأتمنى أن أجد الحل هنا

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

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

  • أفضل إجابة

حسب فهمي للمطلوب

جرب هذه الدالة المعرفة بنسخ هذا الكود في،موديول جديد

Function sumparts(num As String) As Long
Dim n As Long, a As Long
a = 0
For n = 1 To Len(num)
a = a + Val(Mid(num, n, 1))
Next n
If Len(CStr(a)) > 1 Then
sumparts = sumparts(CStr(a))
Else
sumparts = a
End If
End Function

وبعد البحث في الانترنت عن هذا الأمر

يمكن اختصار هذه الدالة إلى

Function sumparts(num As String) As Long
sumparts = num - 9 * Int((num - 1) / 9)
End Function

وطريقة استدعائها داخل الخلية

=sumparts(A1)

حيث A1 هي الخلية التي تحتوي على العدد المراد معرفة مجموع أرقامه

ويمكن الوصول لهذا الهدف مباشرة في معادلة اكسل بهذه الصورة

=A1-9*INT((A1-1)/9)

بالتوفيق 

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

صباح الخير 

شكرا لك أخي العزيز

أنا لم أعرف إضافة الدالة للإكسيل

أخوك مبتدئ في الإكسيل

شكرا لك مرة أخرى

*******

شكرا لك أخي العزيز

نعم نحن نعمل على الأرقام الصحيحة الموجبة فقط، وبدون أي فواصل

وجربت الجدول ونعم يعمل كما هو مطلوب تماما

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

تحياتي وتقديري

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

لاضافة دالة معرفة الى ملفك

اضغط alt+f11 لفتح نافذة ال vba

من قائمة insert اختر module 

الصق كود الدالة في الموديول

وفي الخلية المطلوب اظهار جمع الارقام اكتب 

=sumparts(A1)

حيث ان A1 هي الخلية التي تحتوي على العدد المراد تقسيمه

بالتوفيق 

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

  • 3 weeks later...

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information