شانون یک کاربرگ بزرگ دارد که شامل شماره تلفن در یک ستون است. تعداد زیادی از آن شماره های تلفن شامل کد منطقه نیستند. اینها اعدادی در کد محلی شانون (775) هستند. او فکر می کند که آیا راهی سریع برای اضافه کردن 775 قبل از این شماره تلفن ها بدون نیاز به تایپ دستی آنها وجود دارد.
اولین چیزی که باید فهمید ماهیت داده های شانون است. شماره تلفن ها را می توان به صورت متن یا شماره در کاربرگ او گنجاند. ساده ترین راه برای این تعیین این است که سلولی را انتخاب کنید که حاوی یک شماره تلفن باشد و سپس به آنچه در نوار فرمول نشان داده شده است نگاه کنید. به عنوان مثال، اجازه دهید بگوییم که شما سلول A7 را انتخاب می کنید، که حاوی شماره تلفنی است که به نظر می رسد:
555-1212
اگر سلول A7 را انتخاب کنید و نوار فرمول 5551212 (بدون خط تیره) را نشان دهد، سلول حاوی عددی است که به شکل شماره تلفن فرمت شده است. با این حال، اگر نوار فرمول 555-1212 را نشان دهد (همان چیزی که در سلول A7 می بینید)، سلول حاوی متن است.
دانستن اینکه آیا با متن سروکار دارید یا با اعداد چه اهمیتی دارد؟ زیرا بر نحوه اضافه کردن کد منطقه تأثیر می گذارد. بیایید بگوییم که شما تعیین می کنید که شماره تلفن های شما پیامکی هستند. در این صورت می توانید موارد زیر را در یک ستون خالی وارد کنید:
=RIGHT("775-" & A7, 12)
چیزی که در نهایت به آن می رسید یک شماره تلفن با فرمت مناسب با پیشوند 775 است. اگر شماره تلفن در سلول A7 قبلاً دارای یک کد منطقه باشد، پیشوند "775-" با عملکرد RIGHT حذف می شود.
اگر می خواهید شکل متفاوتی به شماره تلفن های خود داشته باشید، می توانید به سادگی نحوه اضافه کردن پیشوند را در فرمول تغییر دهید، مانند شکل زیر:
=RIGHT("(775) " & A7, 14)
باز هم، این رویکردها فقط در صورتی کار می کنند که شماره تلفن شما دارای مقادیر متنی باشد. اگر آنها مقادیر عددی هستند، باید به طور متفاوتی به آنها نزدیک شوید. ساده ترین راه این است که طول مقدار عددی را بررسی کنید و اگر کمتر از 8 رقم باشد، پیشوند را به آن اضافه کنید:
=IF(LEN(A7)
به شرطی که نتیجه این فرمول را به عنوان یک شماره تلفن فرمت کنید، باید همانطور که می خواهید با پیشوند مناسب 775 به نظر برسد.
در نهایت، ممکن است شرایطی پیش بیاید که شماره تلفن های شما ترکیبی باشد - برخی متنی و برخی عددی هستند. در این مثال، ساده ترین کار استفاده از یک ماکرو است که می تواند اطلاعات منبع شما را بررسی کند، نوع داده ها را تعیین کند، و سپس تنظیمات شماره تلفن ها را انجام دهد. ماکرو زیر به سلول هایی که انتخاب می کنید نگاهی می اندازد و شماره تلفن های درون آن سلول ها را به متن فرمت شده تبدیل می کند:
Sub FixPhones1()
Dim c As Range
Dim sRaw As String
Dim sNew As String
Dim J As Integer
Const sFmt As String = "###-###-####"
For Each c In Selection
Dont want to affect formulas
If Not c.HasFormula Then
sRaw = Trim(c.Text)
Remove anything not a digit
sNew = ""
For J = 1 To Len(sRaw)
If Mid(sRaw, J, 1) Like "[0-9]" Then sNew = sNew & Mid(sRaw, J, 1)
Next J
Dont make any changes if there are not exactly 7 or 10 digits
If (Len(sNew) = 7) Or (Len(sNew) = 10) Then
Add area code, if necessary
If Len(sNew) = 7 Then sNew = "775" & sNew
sNew = Format(sNew, sFmt)
c.Value = sNew
End If
End If
Next c
End Sub
برای به دست آوردن خروجی فرمت شده مورد نظر خود، مطمئن شوید که ثابت sFmt را تغییر داده اید تا الگوی قالب مورد نظر را منعکس کند. سپس سلول هایی را که می خواهید تغییر دهید انتخاب کنید و ماکرو را اجرا کنید. اگر یک سلول انتخاب شده حاوی فرمولی باشد یا دارای 7 یا 10 رقم نباشد، تحت تأثیر قرار نمی گیرد.
اگر ترجیح می دهید شماره تلفن شما به صورت مقادیر عددی درآید، پس ماکرو شما باید متفاوت باشد. در اینجا یک مثال از یکی است که در این شرایط کار می کند:
Sub FixPhones2()
Dim c As Range
Dim sRaw As String
Dim sNew As String
Dim J As Integer
Const sFmt As String = "[
توجه داشته باشید که تفاوت اصلی در این تغییر ماکرو این است که هر چیزی که در ثابت sFmt ذخیره می شود به ویژگی NumberFormat برای سلول در حال اصلاح اختصاص داده می شود.