VBA 使えるソースコード

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

2020-01-01から1ヶ月間の記事一覧

VBA 測定単位を計算する(関数)

Function Unit(x() As Double) As Double()Dim i As IntegerDim n As IntegerDim a As IntegerDim m As DoubleDim j As IntegerDim x_k() As DoubleDim x_len As IntegerDim max As Double, min As Doublemax = x(1)min = x(1)x_len = UBound(x) For i = 1 T…

VBA お絵描きしてみよう

Sub Draw()Dim i As IntegerDim j As IntegerDim a As DoubleDim b As DoubleDim c As DoubleDim d As Double d = 350For j = 1 To 5 a = Rnd b = Rnd c = Rnd For i = 1 To 5 ActiveSheet.Shapes.AddShape(msoShapeOval, 82.8 + i * 100, 59.4 + j * 100, 9…

VBA 度数分布表を自動で作成(関数)

Function Bord(x() As Double) As Double()Dim i As IntegerDim a As Integer Dim b() As DoubleDim m As DoubleDim n As IntegerDim h As IntegerDim c As DoubleDim x_len As IntegerDim max As Double, min As Doublemax = x(1)min = x(1)x_len = UBound(…

VBA シンプソン則で関数を積分しよう(関数)

Function S(h As Double, a As Double, b As Double) As Double S = (2 * M(2 * h, a, b) + T(2 * h, a, b)) / 3 End Function 使った関数 ↓ yoronx.hatenablog.com yoronx.hatenablog.com

VBA 台形則で関数を積分しよう(関数)

Function T(h As Double, a As Double, b As Double) As Double Dim inte As DoubleDim i As IntegerDim n As DoubleDim x_i As Double n = (b - a) / hinte = 0 For i = 0 To n - 1 x_i = a + i * h inte = inte + (f2(x_i) + f2(x_i + h)) * h / 2Next i T…

VBA 中点則で関数を積分しよう(関数)

Function M(h As Double, a As Double, b As Double) As Double Dim inte As DoubleDim i As IntegerDim n As DoubleDim x_i As Double n = (b - a) / hinte = 0 For i = 1 To n x_i = a + (2 * i - 1) / 2 * h inte = inte + f2(x_i) * hNext i M = inte En…

VBA 最小の固有値を求める

Function ramda_min(a() As Double) As Double Dim n As IntegerDim a_inv() As DoubleDim v() As DoubleDim y() As Double n = UBound(a, 1) ReDim y(n)ReDim v(n)ReDim a_inv(n, n) a_inv() = A_inverse(a())v() = vk(a_inv())y() = Ax(a_inv(), v()) ramd…

VBA 固有値を求める(関数)

Function ramda(a() As Double) As Double Dim n As IntegerDim v() As DoubleDim y() As Double n = UBound(a, 1) ReDim y(n)ReDim v(n) v() = vk(a())y() = Ax(a(), v()) ramda = y(1) / v(1) '最初だけ見れば良い End Function 使った関数 ↓ yoronx.haten…

VBA 固有ベクトルを求める(関数)

Function vk(a() As Double) As Double() Dim i As IntegerDim k As IntegerDim l As Integer Dim n As IntegerDim w As DoubleDim sum As Double Dim x() As DoubleDim y() As DoubleDim r() As Double n = UBound(a, 1)l = 10000 ReDim y(n)ReDim x(n) For…

VBA 四則演算をセルに打ち出してみよう

Sub Calc() Dim x As IntegerDim y As IntegerDim a As SingleDim b As SingleDim c As SingleDim d As Single x = InputBox("x = ")y = InputBox("y = ") a = x + yb = x - yc = x * yd = x / y Cells(1, 1).Value = aCells(2, 1).Value = bCells(3, 1).Val…

VBA 学習の方法

まず始めに、このブログ内では、そのまま張り付ければ基本使えるソースコードをのせています。 そこで、このコードを使った学習方法について説明していきます。 ①まずはコピペ ②起動してどーなっているのかを確認 ③なぜこのような結果になるのか考える ④ソー…

VBA 逆行列を求める(関数)

Function A_inverse(a() As Double) As Double()Dim n As IntegerDim i As IntegerDim k As Integer Dim arr1() As DoubleDim A_inv() As DoubleDim x_n() As Double n = UBound(a, 1) ReDim arr1(n, n)ReDim A_inv(n, n)ReDim x_n(n) For i = 1 To n x_n(i)…

VBA Ax=bを求める(関数)

Function Gauss_kai(a() As Double, b() As Double) As Double() Dim n As IntegerDim m As IntegerDim i As IntegerDim j As Integer Dim arr1() As DoubleDim arr2() As DoubleDim arr3() As DoubleDim arr4() As Double n = UBound(a, 1)m = UBound(b) Re…

VBA 後退代入 Ax=b→Ux=yのxを求める(関数)

Function xxx(U() As Double, y() As Double) As Double()Dim i As IntegerDim j As IntegerDim k As Integer Dim n As IntegerDim m As IntegerDim x As Double Dim arrc() As Double 'xxxになる解そのもの n = UBound(U, 1)m = UBound(y) ReDim arrc(n) ar…

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