VBA 使えるソースコード

つたないソースコードを載せます。これは、他人の書いたソースコードを読む練習に最適です。初心者の方は、どうしたらきれいになるかなど考えながら活用してください。

2020-01-12から1日間の記事一覧

VBA Ax=bの(Ab)を前進消去~ガウス~(関数)

Function Gau_kai(a() As Double, b() As Double) As Double()Dim i As IntegerDim j As IntegerDim k As Integer Dim n As IntegerDim m As IntegerDim x As DoubleDim y As DoubleDim z As DoubleDim w As Double Dim arrA() As DoubleDim arrb() As Doubl…

VBA 行列の積(関数)

Function M_Product(arr1() As Double, arr2() As Double) As Double() Dim i As IntegerDim j As IntegerDim k As IntegerDim n_1 As IntegerDim m_1 As IntegerDim n_2 As IntegerDim m_2 As IntegerDim kadai_14() As Double n_1 = UBound(arr1, 2)m_1 = …

VBA 行列の定数倍(関数)

Function MA(arr1() As Double, a As Double) As Double() Dim m_a() As DoubleDim i As IntegerDim j As IntegerDim n As IntegerDim m As Integer n = UBound(arr1, 2)m = UBound(arr1, 1) ReDim m_a(m, n) For i = 1 To m For j = 1 To n m_a(i, j) = arr…

VBA 行列の差(関数)

Function MM(arr1() As Double, arr2() As Double) As Double() Dim m_m() As DoubleDim i As IntegerDim j As IntegerDim n As IntegerDim m As Integer n = UBound(arr1, 2)m = UBound(arr1, 1) ReDim m_m(m, n) For i = 1 To m For j = 1 To n m_m(i, j) …

VBA 行列の和(関数)

Function MP(arr1() As Double, arr2() As Double) As Double() Dim m_p() As DoubleDim i As IntegerDim j As IntegerDim n As IntegerDim m As Integer n = UBound(arr1, 2)m = UBound(arr1, 1) ReDim m_p(m, n) For i = 1 To m For j = 1 To n m_p(i, j) …

VBA 行列とベクトルの積(関数)

Function Ax(Arr() As Double, arr1() As Double) As Double() Dim i As IntegerDim j As IntegerDim n As IntegerDim m As IntegerDim kadai_10() As Double n = UBound(arr1)m = UBound(Arr, 1) ReDim kadai_10(m) For i = 1 To m For j = 1 To n kadai_10…

VBA ベクトルの定数倍(関数)

Function ab(arr1() As Double, a As Double) As Double() Dim kadai_8() As DoubleReDim kadai_8(UBound(arr1))Dim i As Integer For i = 1 To UBound(arr1) kadai_8(i) = arr1(i) * aNext i ab = kadai_8 End Function

VBA ベクトルの差(関数)

Function a_b(arr1() As Double, arr2() As Double) As Double() Dim kadai_7() As DoubleReDim kadai_7(UBound(arr1))Dim i As Integer For i = 1 To UBound(arr1) kadai_7(i) = arr1(i) - arr2(i)Next i a_b = kadai_7 End Function

VBA ベクトルの和(関数)

Function ab(arr1() As Double, arr2() As Double) As Double() Dim kadai_6() As DoubleReDim kadai_6(UBound(arr1))Dim i As Integer For i = 1 To UBound(arr1) kadai_6(i) = arr1(i) + arr2(i)Next i ab = kadai_6 End Function

VBA 特殊な行列(関数)

Function Tn(ByVal n As Integer) As Double() Dim T_n() As DoubleReDim T_n(n, n)Dim i As IntegerDim j As Integer For i = 1 To n For j = 1 To n If i = j Then T_n(i, j) = 2 ElseIf Abs(i - j) = 1 Then T_n(i, j) = -1 End If Next jNext i Tn = T_n…

VBA 行列の収納(関数)

Function Matrix(ByVal k As Integer, ByVal l As Integer, ByVal m As Integer, ByVal n As Integer) As Double() Dim i As IntegerDim j As IntegerDim Arr() As DoubleReDim Arr(1 To m, 1 To n) For i = 1 To m For j = 1 To n Arr(i, j) = Cells(k - 1 …

VBA ベクトルの収納(関数)

Function Vector(ByVal k As Integer, ByVal l As Integer, ByVal n As Integer) As Double() Dim i As IntegerDim Arr() As DoubleReDim Arr(1 To n)For i = 1 To n Arr(i) = Cells(k - 1 + i, l).ValueNext i Vector = Arr End Function

VBA サイコロの平均の収束

Sub サイコロの平均()Dim n As IntegerDim m As IntegerDim X_n As DoubleDim E As DoubleDim Ex() As DoubleDim i As IntegerDim j As IntegerDim p As SingleDim a As Double Worksheets("sheet5").Activate n = 1000m = 2000 ReDim Ex(1 To n, m + 1) Ex(…

VBA 二項分布の生成

Sub 二項分布()Dim n As IntegerDim X_n As DoubleDim X_bar() As DoubleDim i As IntegerDim j As IntegerDim p As SingleDim a As Double p = 0.2 '確率a = 999 ReDim X_bar(a) For n = 1 To 1000 'ここでは試行回数そのものを変える X_n = 0 'いったんリ…

VBA 標準乱数の生成(ボックスミュラー法)

Sub 標準正規分布()Dim x As DoubleDim y As DoubleDim u As DoubleDim v As DoubleDim i As IntegerDim a(999) As DoubleDim b(999) As Double For i = 1 To 1000 u = Rnd v = Rnd x = (-2 * Log(u)) ^ (1 / 2) * Sin(2 * 4 * Atn(1) * v) y = (-2 * Log(u)…

VBA ベクトルの内積(関数)

Function InnerProd(x() As Integer, y() As Integer) As DoubleDim I As IntegerDim a As Integer For I = 0 To UBound(x()) a = a + x(I) * y(I)Next I InnerProd = a End Function

VBA 3つのサイコロ、何回ふったらすべて一致する?

Function dice() As Integerdice = Int(Rnd * 6 + 1)End Function

VBA 素因数の数

Sub 素因数の数()Dim N As IntegerDim p As IntegerDim I As IntegerDim a As Integer N = InputBox("n =")p = 2Do While N > 1 If N Mod p = 0 Then a = a + 1 Do While N Mod p = 0 N = N / p Loop End If p = p + 1Loop Call MsgBox(a) End Sub

VBA 素数判定(関数使用)

関数 Function IsPrime(m As Integer) As StringDim I As IntegerDim a As Integer For I = 2 To m - 1 If m Mod I = 0 Then a = 1 End IfNext I If a = 1 Then IsPrime = "素数ではない。"Else IsPrime = "素数である。"End If End Function