ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
23 visibility
موضوع: آفیس توسط:

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.) تنها در این صورت است که سمت راست ترین رقم را حذف می کند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 50 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
ارسال شده در 25 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 43 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 36 visibility

25.6k سوال

11.0k پاسخ

614 دیدگاه

11.2k کاربر

222 نفر آنلاین
0 عضو و 222 مهمان در سایت حاضرند
بازدید امروز: 11243
بازدید دیروز: 24785
بازدید کل: 20648518
...