TOPページへ

先ずエクセルで複素数を扱えるようにする

先ずは、交流では、複素数を扱うので、エクセルで複素数を扱えるようにします。
複素数を扱うには、アドインを利用します。
分析ツールと分析ツールVBAにチェックする
これで、ワークシート上では、複素数が扱えるようになります。
vbaで、複素数を扱う場合は、ちょっと、工夫が必要になります。
vbaで、利用する場合は、以下のコードを、標準モジュールに作っておく必要があります。コピーペーストで、貼り付けてください。
Public Function COMPLEXa(a As Double, b As Double) As Variant

COMPLEXa = Application.Run("atpvbaen.xla!COMPLEX", a, b)

End Function

Public Function IMABSa(a As Variant) As Variant

IMABSa = Application.Run("atpvbaen.xla!IMABS", a)

End Function

Public Function IMAGINARYa(a As Variant) As Variant

IMAGINARYa = Application.Run("atpvbaen.xla!IMAGINARY", a)

End Function

Public Function IMARGUMENTa(a As Variant) As Variant

IMARGUMENTa = Application.Run("atpvbaen.xla!IMARGUMENT", a)

End Function

Public Function IMCONJUGATEa(a As Variant) As Variant

IMCONJUGATEa = Application.Run("atpvbaen.xla!IMCONJUGATE", a)

End Function

Public Function IMCOSa(a As Variant) As Variant

IMCOSa = Application.Run("atpvbaen.xla!IMCOS", a)

End Function

Public Function IMDIVa(a As Variant, b As Variant) As Variant

IMDIVa = Application.Run("atpvbaen.xla!IMDIV", a, b)

End Function

Public Function IMEXPa(a As Variant) As Variant

IMEXPa = Application.Run("atpvbaen.xla!IMEXP", a)

End Function

Public Function IMLNa(a As Variant) As Variant

IMLNa = Application.Run("atpvbaen.xla!IMLN", a)

End Function

Public Function IMLOG10a(a As Variant) As Variant

IMLOG10a = Application.Run("atpvbaen.xla!IMLOG10", a)

End Function

Public Function IMLOG2a(a As Variant) As Variant

IMLOG2a = Application.Run("atpvbaen.xla!IMLOG2", a)

End Function

Public Function IMPOWERa(a As Variant, b As Variant) As Variant

IMPOWERa = Application.Run("atpvbaen.xla!IMPOWER", a, b)

End Function

Public Function IMPRODUCTa(ParamArray a()) As Variant

IMPRODUCTa = Application.Run("atpvbaen.xla!IMPRODUCT", a)

End Function

Public Function IMPRODUCTb(a As Variant) As Variant

IMPRODUCTb = Application.Run("atpvbaen.xla!IMPRODUCT", a)

End Function

Public Function IMREALa(a As Variant) As Variant

IMREALa = Application.Run("atpvbaen.xla!IMREAL", a)

End Function

Public Function IMSINa(a As Variant) As Variant

IMSINa = Application.Run("atpvbaen.xla!IMSIN", a)

End Function

Public Function IMSQRTa(a As Variant) As Variant

IMSQRTa = Application.Run("atpvbaen.xla!IMSQRT", a)

End Function

Public Function IMSUBa(a As Variant, b As Variant) As Variant

IMSUBa = Application.Run("atpvbaen.xla!IMSUB", a, b)

End Function

Public Function IMSUMa(ParamArray a()) As Variant

IMSUMa = Application.Run("atpvbaen.xla!IMSUM", a)

End Function

Public Function IMSUMb(a As Variant) As Variant

IMSUMb = Application.Run("atpvbaen.xla!IMSUM", a)

End Function
上記コードを標準モジュールに作っておけば、VBAで、複素数の演算のコーディングが簡単になります。
エンジニアリング関数をvbaで、利用するときは、工夫が必要なようです。
あと、ワークシート上で、ユーザー定義で、上記関数も利用できるので、エンジニアリング関数とダブりますが、
それは、仕方がなく、好きな方を使うといいようです。
なお、関数の意味は、エンジニアリング関数のヘルプを参照してください。