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

شکل 1. تب Number در کادر محاوره ای Format Cells.
- سلول هایی را که می خواهید قالب بندی شوند انتخاب کنید.
- تب Home نوار را نمایش دهید.
- روی نماد کوچک در گوشه سمت راست پایین گروه Number کلیک کنید. اکسل کادر محاوره ای Format Cells را نمایش می دهد.
- مطمئن شوید که تب Number انتخاب شده است. (شکل 1 را ببینید.)
- در لیست دسته بندی های قالب، Custom را انتخاب کنید.
- در کادر Type، ##0.0E+0 را به عنوان فرمت خود وارد کنید. (این فقط یک عدد را در سمت راست رقم اعشار نشان می دهد. اگر بیشتر می خواهید، تعداد صفرهای بعد از رقم اعشار را افزایش دهید.)
- روی 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