کریس تعداد زیادی سلول دارد که شامل شماره قسمت هستند. این سلول ها می توانند شامل ارقام یا نویسه ها در هر ترکیبی باشند. آنها همچنین می توانند شامل کاراکترهای خاصی مانند خط تیره، اسلش و فاصله باشند. کریس به روشی نیاز دارد تا بدون در نظر گرفتن کاراکترهای خاص، تشخیص دهد که آیا یک سلول فقط دارای اعداد است یا خیر. بنابراین، یک سلول حاوی 123-45 فقط حاوی ارقام است، در حالی که 123AB-45 اینطور نیست.
ساده ترین راه برای فهمیدن اینکه آیا یک سلول معین فقط دارای نویسه ها و ارقام مجاز است یا نه، استفاده از فرمولی است که نویسه های غیر رقمی مجاز را حذف می کند و سپس می بیند که آیا مقدار حاصل عددی است یا خیر. تمام فرمول های زیر می توانند این کار را به خوبی انجام دهند:
=IF(IFERROR(INT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"-", ""),"/", "")," ", "")),FALSE), TRUE, FALSE)
=OR(ISNUMBER(SUBSTITUTE(A1,"-","")+0),ISNUMBER(SUBSTITUTE(A1,"/","")+0),ISNUMBER(SUBSTITUTE(A1," ","")+0))
=ISNUMBER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",""),"/",""),"-","")*1)
همچنین می توانید از یک ماکرو ساده استفاده کنید تا بفهمید که آیا یک سلول فقط شامل ارقام و کاراکترهای مجاز شما است یا خیر. در حالی که راه های مختلفی وجود دارد که می توان به چنین ماکرو نزدیک شد، یک روش نسبتا آسان در اینجا وجود دارد:
Function DigitsOnly(sRaw As String) As Boolean
Dim X As Integer
Const sAllowed As String = "0123456789 -/"
Application.Volatile
For X = 1 To Len(sRaw)
If InStr(sAllowed, Mid(sRaw, X, 1)) = 0 Then Exit For
Next X
DigitsOnly = False
If X > Len(sRaw) Then DigitsOnly = True
End Function
ماکرو هر چیزی را که به آن ارسال می شود بررسی می کند و هر کاراکتر در رشته را با لیستی از کاراکترهای مجاز (در ثابت sAllowed) مقایسه می کند. اگر یک کاراکتر غیر مجاز شناسایی شود، حلقه زودتر خارج می شود و مقدار False برگردانده می شود. بنابراین، اگر می خواهید سلول را در A1 ارزیابی کنید، می توانید از موارد زیر در ماکرو خود استفاده کنید:
=DigitsOnly(A1)
از آنجایی که آنها مقادیر True یا False را برمی گردانند، هر یک از این رویکردها (فرمول یا تابع تعریف شده توسط کاربر) می تواند همراه با قالب بندی شرطی برای ایجاد تغییرات قالب بندی در شماره قطعه شما استفاده شود.