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

در یک محیط مهندسی، نیاز به "نرمال" کردن اعداد به روشی غیرعادی نیست. به عنوان مثال، ممکن است لازم باشد مقادیر عددی نرمال شده به مضرب 10^3 را نشان دهید، به طوری که 7340 به صورت 7.34 و 73400 به عنوان 73.4 بیان می شود.

در اکسل این امکان وجود دارد که از یک قالب اعداد سفارشی برای بیان اطلاعات به صورت نماد علمی استفاده کنید که نمایش یک عدد را به مضرب 10^3 عادی می کند. برای انجام این کار، این مراحل را دنبال کنید:

image

شکل 1. تب Number در کادر محاوره ای Format Cells.

  1. سلول هایی را که می خواهید قالب بندی شوند انتخاب کنید.
  2. تب Home نوار را نمایش دهید.
  3. روی نماد کوچک در گوشه سمت راست پایین گروه Number کلیک کنید. اکسل کادر محاوره ای Format Cells را نمایش می دهد.
  4. مطمئن شوید که تب Number انتخاب شده است. (شکل 1 را ببینید.)
  5. در لیست دسته بندی های قالب، Custom را انتخاب کنید.
  6. در کادر Type، ##0.0E+0 را به عنوان فرمت خود وارد کنید. (این فقط یک عدد را در سمت راست رقم اعشار نشان می دهد. اگر بیشتر می خواهید، تعداد صفرهای بعد از رقم اعشار را افزایش دهید.)
  7. روی OK کلیک کنید.

حالا وقتی عددی مانند 7340 را وارد سلول می کنید، اکسل آن را به صورت 7.3E+3 نمایش می دهد. به دلیل نحوه وارد کردن قالب سلول، قسمت بعد از E همیشه مضربی از 3 خواهد بود.

این خوب و خوب است، اما اگر فقط 7.3 را در سلول بخواهید، و سپس یک پیشوند متریک با یک واحد در یک سلول مجاور، مانند کیلوگرم، چه؟ این کمی پیچیده تر است، اما می توان آن را با استفاده از فرمول انجام داد. به عنوان مثال، فرض کنید شماره اصلی خود را در سلول A2 دارید، عدد نرمال شده را در سلول B2 و پیشوند متریک و نام واحد را در سلول C2 می خواهید. تنها کاری که باید انجام دهید این است که فرمول زیر را در سلول B2 وارد کنید:

=IF(OR(A2>=1,A2

با فرض اینکه واحدهایی که با آنها کار می کنید یک واحد خیالی به نام foo هستند، در سلول C2 از فرمول متفاوتی به شرح زیر استفاده می کنید:

=IF(OR(A2>=1, A2

این فرمول ها ممکن است کمی طولانی به نظر برسند و اینطور هستند. با این حال، آنها برای هر عددی بین تقریباً -9.99999E-18 تا 9.99999E+20 کار خواهند کرد. برای مثال، اگر عدد 0.000125 را در سلول A2 قرار دهید، سلول B2 شامل 125 و سلول C2 حاوی Millifoos خواهد بود.

اگر ترجیح می دهید از فرمول های طولانی تری مانند اینها در کتاب های کاری خود استفاده نکنید، می توانید چند تابع VBA را برای انجام این کار توسعه دهید. تابع زیر، MySciNum، یک عدد نرمال شده را برمی گرداند. بنابراین، می توانید از =MySciNum(A2) در سلول B2 برای بدست آوردن همان نتایجی که در بالا اشاره شد استفاده کنید:

Function MySciNum(BaseNum As Double) As Double
    Select Case BaseNum
        Case Is >= 1
            While Abs(BaseNum) > 1000
                BaseNum = BaseNum / 1000
            Wend
        Case 0
            Do nothing
        Case Else
            While Abs(BaseNum) < 1
                BaseNum = BaseNum * 1000
            Wend
    End Select
    MySciNum = BaseNum
End Function

این تابع فقط یک عدد را برمی گرداند. برای برگرداندن واحدها با پیشوند متریک مناسب، باید از تابع زیر استفاده کنید. تنها کاری که باید انجام دهید این است که مرجع سلول و نام یک واحد را به آن منتقل کنید. به عنوان مثال، می توانید از =MySciPre (A2، "foo") استفاده کنید. ماکرو به صورت زیر است:

Function MySciPre(BaseNum As Double, Unit As String) As String
    Dim OrigNum As Double
    Dim Pref As Integer
    Dim Temp As String

    Pref = 0
    OrigNum = BaseNum
    Select Case BaseNum
        Case Is >= 1
            While Abs(BaseNum) > 1000
                BaseNum = BaseNum / 1000
                Pref = Pref + 1
            Wend
        Case 0
            Pref = 99
        Case Else
            While Abs(BaseNum) < 1
                BaseNum = BaseNum * 1000
                Pref = Pref - 1
            Wend
    End Select

    Select Case Pref
        Case -6
            Temp = "atto" & Unit
        Case -5
            Temp = "femto" & Unit
        Case -4
            Temp = "pico" & Unit
        Case -3
            Temp = "nano" & Unit
        Case -2
            Temp = "micro" & Unit
        Case -1
            Temp = "milli" & Unit
        Case 0
            Temp = Unit
        Case 1
            Temp = "kilo" & Unit
        Case 2
            Temp = "mega" & Unit
        Case 3
            Temp = "giga" & Unit
        Case 4
            Temp = "tera" & Unit
        Case 5
            Temp = "peta" & Unit
        Case 6
            Temp = "exa" & Unit
        Case Else
            Temp = ""
    End Select

    If Len(Temp) > 0 Then
        Temp = LCase(Temp)
        Temp = UCase(Left(Temp, 1)) & Mid(Temp, 2)
        If Abs(OrigNum) <> 1 Then Temp = Temp & "s"
    End If

    MySciPre = Temp
End Function
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

126 نفر آنلاین
0 عضو و 126 مهمان در سایت حاضرند
بازدید امروز: 11417
بازدید دیروز: 23384
بازدید کل: 15262316
...