اگر سلولی دارید که حاوی یک مقدار است، ممکن است بخواهید راهی برای جمع کردن تمام ارقام موجود در مقدار ایجاد کنید. به عنوان مثال، اگر یک سلول حاوی مقدار 554 باشد، ممکن است بخواهید مجموع 5+5+4 را تعیین کنید که 14 است.
راه های مختلفی وجود دارد که می توانید به این کار نزدیک شوید. (آیا این همیشه در اکسل به نظر نمی رسد؟) اولین مورد استفاده از فرمولی است که بر چندین عملکرد متکی است:
=SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))
این فرمول منظم ارقام را در هر مقدار صحیح (در سلول A1) به روشی ساده و زیبا جمع می کند. با این حال، این تنها فرمول ممکن نیست. فرمول زیر فرمول آرایه ای (با فشار دادن Ctrl+Shift+Enter خاتمه می یابد) نسخه همان فرمول است:
=SUM(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
اگر مقدار A1 یک عدد صحیح باشد، هر یک از این فرمول ها خوب کار می کنند. اگر نویسه های غیر رقمی در عدد وجود داشته باشد (مانند علامت منفی یا اعشار)، فرمول ها یک #VALUE را برمی گردانند! خطا
اینها تنها فرمول های ممکن برای این نوع محاسبه نیستند. می توانید چند نمونه دیگر از فرمول ها را در پایگاه دانش مایکروسافت بیابید:
http://support.microsoft.com/?kbid=214053
همچنین می توانید از یک تابع تعریف شده توسط کاربر برای برگرداندن مبلغ مورد نظر استفاده کنید. ماکرو زیر از هر رقم در سلول ارجاع شده عبور می کند و کل را محاسبه می کند. سپس این مقدار به کاربر برگردانده می شود:
Function AddDigits(Number As Long) As Integer
Dim i As Integer
Dim Sum As Integer
Dim sNumber As String
sNumber = CStr(Number)
For i = 1 To Len(sNumber)
Sum = Sum + Mid(sNumber, i, 1)
Next
AddDigits = Sum
End Function
برای استفاده از این تابع، فقط از فرمولی مانند =AddDigits(A1) در یک سلول استفاده کنید. یک تابع حتی فشرده تر تعریف شده توسط کاربر (به همان روش فراخوانی می شود) به شرح زیر است:
Function AddDigits(ByVal N As Long) As Integer
Do While N >= 1
AddDigits = AddDigits + N Mod 10
N = Int(N / 10)
Loop
End Function
برخلاف ماکرو قبلی، این نسخه محتویات سلول را به رشته ای تبدیل نمی کند تا آن را پردازش کند. در عوض، از هر رقمی از مقدار عبور می کند، آخرین رقم را حذف می کند و آن را به کل اضافه می کند.