工学計算(Microsoft Excel)
エンジニアリング環境では、「正規化」する必要があることは珍しくありません
何らかの方法で数字。たとえば、7340が7.34として表され、73400が73.4として表されるように、10 ^ 3の倍数に正規化された数値を表示する必要がある場合があります。
Excelでは、カスタムの数値形式を使用して、数値の表示を10 ^ 3の倍数に正規化する科学的記数法で情報を表現することができます。これを行うには、次の手順に従います。
。フォーマットするセルを選択します。
。リボンの[ホーム]タブを表示します。
。番号グループの右下隅にある小さなアイコンをクリックします。
Excelに[セルの書式設定]ダイアログボックスが表示されます。
。 [番号]タブが選択されていることを確認してください。 (図1を参照)
。フォーマットカテゴリのリストで、[カスタム]を選択します。
。 [タイプ]ボックスに、形式として## 0.0E +0を入力します。 (これにより、小数点以下1桁の数値のみが提供されます。さらに必要な場合は、小数点以下のゼロの数を増やしてください。)
。 [OK]をクリックします。
これで、セルに7340などの数値を入力すると、Excelはそれを7.3E +3と表示します。セル形式の入力方法により、Eの後の部分は常に3の倍数になります。
これは問題ありませんが、セルに7.3だけを入れてから、隣接するセルに単位を付けたメートル法の接頭辞(キログラムなど)が必要な場合はどうでしょうか。これはもう少し複雑ですが、数式を使用して実行できます。たとえば、セルA2に元の番号があり、セルB2に正規化された番号があり、セルC2にメトリックプレフィックスとユニット名があるとします。セルB2に次の数式を入力するだけです。
=IF(OR(A2>=1,A2<=-1),SIGN(A2)(ABS(A2)/(10^(3INT(LOG(ABS(A2))/3))))), IF(A2=0,0,SIGN(A2)(ABS(A2)10^(-3*INT(LOG(ABS(A2))/3)))))
使用している単位がfooと呼ばれる虚数単位であると仮定すると、セルC2では、次のように別の数式を使用します。
=IF(OR(A2>=1, A2<=-1),CHOOSE(INT(LOG(ABS(A2))/3)+1, "Foos", "Kilofoos", "Megafoos", "Gigafoos", "Terafoos", "Petafoos", "Exafoos"), IF(A2=0,"",CHOOSE(INT(-LOG(ABS(A2))/3)+1, "Millifoos", "Microfoos", "Nanofoos", "Picofoos", "Femtofoos", "Attofoos")))
これらの式は少し長いように見えるかもしれません、そしてそれらはそうです。ただし、約-9.99999E-18から9.99999E +20までの任意の数で機能します。
たとえば、セルA2に番号.000125を入力すると、セルB2には125が含まれ、セルC2にはMillifooが含まれます。
ブックでこれらのような長い数式を使用したくない場合は、いくつかのVBA関数を開発してそのトリックを実行できます。
次の関数MySciNumは、正規化された数値を返します。したがって、セルB2で= MySciNum(A2)を使用して、上記と同じ結果を取得します。
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
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12874)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excel-Engineering_Calculations [EngineeringCalculations]
。