Ciaran در یک کتابخانه کار می کند و اغلب مجبور است با لیست های طولانی اعداد ISBN در اکسل کار کند. اعداد باید شامل 10 یا 13 رقم باشند، ممکن است دارای خط تیره و ممکن است صفرهای ابتدایی داشته باشند. او از قالب متن برای سلول های حاوی ISBN استفاده می کند تا آنها را به عنوان رشته های متنی دست نخورده نگه دارد. برای برخی از اهداف، خط تیرهها در ISBNها باید حذف شوند (او برای این کار از Find and Replace استفاده میکند) و مشکل از آنجا شروع میشود. 0-241-95011-2 تبدیل به 241950112 می شود (اکنون به 9 رقم کاهش یافته است) و بدتر از آن، 978-0-00-200784-9 تبدیل به 9.78E+12 می شود (نماد علمی). Ciaran نمی تواند راهی برای حل این دو مشکل پیدا کند، مهم نیست که قبل یا بعد از استفاده از Find and Replace برای از بین بردن خط تیره ها با قالب بندی چه کاری انجام می دهد.
اتفاقی که می افتد این است که وقتی سلول ها را ویرایش می کنید، اکسل محتویات سلول را به جای متن، به صورت اعداد تجزیه می کند. در این مورد، بهترین راه حل این است که قبل از انجام یافتن و جایگزینی برای خلاص شدن از شر خط تیره، مطمئن شوید که محتویات سلول شما با یک آپستروف قرار داده شده است. اگر یک کاربرگ دارید که حاوی تعداد زیادی اعداد شابک در ستون A است، میتوانید آپستروفها را با فرمولی مانند زیر اضافه کنید:
= "" & A1
سپس می توانید نتایج فرمول ها را کپی کنید و سپس از Paste Special برای چسباندن مقادیر دوباره در ستون A استفاده کنید. سپس هر مقدار در ستون A شامل آپاستروف می شود. وقتی بعداً Find and Replace را انجام میدهید، صفرهای ابتدایی همچنان وجود دارند و هیچ تلاشی برای نمادگذاری علمی نخواهید داشت.
دلیل این کار این است که آپوستروف نشانگر اکسل است که محتویات سلول باید به عنوان متن در نظر گرفته شود. آپوستروف در کاربرگ نمایش داده نمی شود، اما بخشی از محتویات سلول است، همانطور که با نگاه کردن به نوار فرمول می توانید متوجه شوید.
روش دیگر دور زدن استفاده از Find and Replace برای خلاص شدن از شر خط تیره است. در عوض از تابع SUBSTITUTE برای حذف آنها استفاده کنید، به این ترتیب:
=SUBSTITUTE(A1,"-","")
تابع کاربرگ SUBSTITUTE یک مقدار متنی را برمی گرداند، بنابراین صفرهای ابتدایی حفظ می شوند و اکسل سعی نمی کند اعداد را به فرمت عددی تبدیل کند.
اگر به طور معمول نیاز به حذف خط تیره ها از طیفی از سلول های حاوی ISBN دارید، بهتر است از یک ماکرو برای انجام عملیات استفاده کنید. ماکرو زیر روی هر سلولی که قبل از اجرای آن انتخاب کرده اید کار می کند.
Sub RemoveDashes()
Dim c As Range
Dim sISBN As String
Application.ScreenUpdating = False
For Each c In Selection
sISBN = Replace(c, "-", "")
c.NumberFormat = "@"
c.Value = "" & sISBN
Next
Application.ScreenUpdating = True
End Sub
اساسا، ماکرو سه کار را انجام می دهد: خط تیره ها را حذف می کند، سلول را به عنوان متن قالب بندی می کند، و ISBN حذف شده را با یک آپستروف قبل از آن در سلول قرار می دهد.