Sherry ستونی از اعداد از 13 تا 15 رقم دارد. او باید فقط آخرین رقم هر عدد را حذف کند و متعجب است که چگونه می توان این کار را به راحتی انجام داد.
ساده ترین راه استفاده از یک فرمول برای حذف رقم است. با فرض اینکه مقدار اصلی در سلول A1 باشد، موارد زیر به خوبی کار می کند:
=LEFT(A1,LEN(A1)-1)*1
آنچه توسط تابع LEFT برگردانده می شود یک رشته است، به همین دلیل است که در انتهای فرمول در 1 ضرب می شود - این مقدار رشته را دوباره به یک مقدار عددی تبدیل می کند.
با این حال، شاید کوتاه ترین فرمول به صورت زیر باشد:
=TRUNC(A1/10)
البته تقسیم بر 10 راهی سریع برای جابجایی نقطه اعشار یک موقعیت به سمت چپ است. می توانید به جای TRUNC از تابع INT استفاده کنید، اما فقط در صورتی باید این کار را انجام دهید که مقادیر اصلی همه اعداد مثبت باشند. (INT و TRUNC هنگام کار با مقادیر منفی رفتار متفاوتی با یکدیگر دارند.)
بدیهی است که فرمول های توضیح داده شده در بالا نیاز به استفاده از ستون کمکی دارند. آنها همچنین به شدت تبعیض آمیز نیستند. آنها آخرین رقم را از هر مقداری در سلول A1 حذف می کنند و اگر A1 حاوی متن باشد یا خالی باشد، "تنظیم" نمی کنند. اگر کمی انعطاف پذیری بیشتری می خواهید، ممکن است از ماکرو استفاده کنید:
Sub ShortenByOne()
Dim c As Range
For Each c In Selection
If (Not c.HasFormula) And (Application.WorksheetFunction.IsNumber(c)) Then
c = Left(c, Len(c) - 1)
End If
Next c
End Sub
برای استفاده از ماکرو، محدوده سلول هایی را که می خواهید تحت تأثیر قرار دهید انتخاب کنید و سپس آن را اجرا کنید. مقادیر تغییر می کنند تا منعکس کننده افت سمت راست ترین رقم باشند. توجه داشته باشید که ماکرو هیچ تغییری در سلول های حاوی فرمول یا سلول هایی که حاوی مقادیر عددی نیستند ایجاد نمی کند. (تابع کاربرگ IsNumber در ترجیح تابع IsNumeric استفاده می شود زیرا IsNumeric سلول های خالی را طوری رفتار می کند که انگار واقعا عددی هستند که بدون آزمایش اضافی ماکرو را خراب می کند. IsNumber این مشکل را نشان نمی دهد.)
اگر می خواهید مطمئن شوید که فقط سلول های حاوی 13، 14 یا 15 رقم اصلاح شده اند، می توانید از یک تغییر در ماکرو بالا استفاده کنید:
Sub ShortenByOne()
Dim c As Range
For Each c In Selection
If (Not c.HasFormula) And (Application.WorksheetFunction.IsNumber(c)) Then
If Len(c) > 12 And Len(c) < 16 Then
c = Left(c, Len(c) - 1)
End If
End If
Next c
End Sub
توجه داشته باشید که پس از اینکه ماکرو تشخیص داد که سلول حاوی فرمول نیست و حاوی یک عدد است، بررسی می کند که آیا طول عدد بزرگتر از 12 و کمتر از 16 است. (به عبارت دیگر، 13، 14 یا 15.) تنها در این صورت است که سمت راست ترین رقم را حذف می کند.