ワークシート関数 | 内容 | 補足説明 | |
1 | Sum | 数値合計 | 数値の合計を求める場合はこれが早くて簡単 |
2 | Max | 最大値を取得 | 引数として配列あるいはセル範囲を指定した場合、その中の数値のみ が計算の対象となり、文字列、空白セル、論理値、エラー値は無視 |
3 | Min | 最大値を取得 | |
4 | Average | 平均値の計算 | 指定したセル参照の文字列、空白セル、論理値は無視。0は計算対象 |
5 |
Round |
四捨五入 |
[1]整数の桁数→少数点以下の桁数 [2]桁数に0→最も近い整数へ四捨五入 [3]桁数に負の数字→小数点の左側(整数部)で四捨五入 |
6 |
ASC |
全角を半角化 |
StrConv("全角", vbNarrow)関数を使用するより、こちらの方がが5倍 以上高速だった。ただしヴァ・ヴィ・ヴは半角にならない欠点があった |
7 |
Substitute |
文字の置換え |
Replaceメソッドよりこちらが10倍以上早かった。 また、?・*等のワイルドカ−ド記号の置換えはこれで出来ます |
8 |
VLookup |
表データ検索 |
表にあるデータから特定文字を検索し、選ばれた行から指定した列の 文字を一瞬に取得できる便利な関数です |
Sub シート関数1() Dim endr As Integer, myrang As Range, kei As Long endr = ActiveCell.SpecialCells(xlLastCell).Row Set myrang = Range(Cells(2, 4), Cells(endr, 4)) kei = Application.WorksheetFunction.Sum(myrang) MsgBox "D列の合計=" & kei End Sub |
Sub シート関数2() Dim endr As Integer, myrang As Range, maxd As Integer endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(3, 3), Cells(endr, 6)) maxd = Application.WorksheetFunction.Max(myrang) MsgBox "最大値=" & maxd End Sub |
Sub シート関数2a() Dim endr As Integer endr = Range("F1000").End(xlUp).Row Range("J1").Formula = "=MAX(F1:F" & endr & ")" MsgBox "終値の最大値=" & Cells(1, 10) End Sub |
Sub シート関数3() Dim endr As Integer, myrang As Range, mind As Integer endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(3, 6), Cells(endr, 6)) mind = Application.WorksheetFunction.Min(myrang) MsgBox "終値の最小値=" & mind End Sub |
Sub シート関数4() Dim endr As Integer endr = Range("F1000").End(xlUp).Row Range(Cells(3, 7), Cells(endr, 7)).Formula = "=Average(F3:F7)" Cells(2, 7).Value = "5日移動平均" End Sub |
Sub シート関数5() Dim endr As Integer, myrang As Range endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(3, 3), Cells(endr, 3)) myrang.Formula = "=Round(B3, -3)" End Sub |
Sub シート関数5a() Dim endr As Integer, myrang As Range endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(3, 2), Cells(endr, 2)) myrang.Formula = Application.Round(myrang, -3) End Sub |
Sub シート関数5b() 四捨五入して指定した桁数に MsgBox Application.Round(123.45678, 2) ' → 123.46 数値をもとも近い整数に切り上げ(切り上げ最小単位に1を指定例) MsgBox Application.Ceiling(123.145678, 1) ' → 124 数値を切捨てゼロに近い値にする(切捨て最小単位に1を指定例) MsgBox Application.Floor(123.95678, 1) ' → 123 数値を指定した桁へ切捨て(桁数に3指定で小数点以下3桁例) MsgBox Application.RoundDown(123.45678, 3) ' → 123.456 数値を指定した桁へ切捨て(桁数に3指定で小数点以下3桁例) MsgBox Application.RoundUp(123.45678, 3) ' → 123.457 End Sub |
Sub シート関数6() Dim endr As Integer, myrang As Range endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(2, 4), Cells(endr, 4)) myrang.Formula = "=ASC(B2)" End Sub |
Sub シート関数7() Dim endr As Integer, myrang As Range endr = Range("B1000").End(xlUp).Row Set myrang = Range(Cells(2, 4), Cells(endr, 4)) myrang.Formula = "=Substitute(B2,""−"",""ー"")" End Sub |
Sub シート関数8() Dim endr As Integer, myrang As Range endr = Range("A1000").End(xlUp).Row For i = 1 To endr Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), "?", "") Next End Sub |
Sub シート関数9() [1]ExceVBA関数として、変数「dd1」へ代入した例 dd1 = Application.WorksheetFunction.VLookup(Range("C20"), Range("C4:D19"), 2, False) [2]ExceVBA関数として、引数範囲は設定名で変数「dd2」へ代入した例 dd2 = Application.WorksheetFunction.VLookup(Range("C20"), " 板", 2, False) [3]マクロで、C25セルへVLOOKUP関数を設定した例 Cells(25, 3).Formula = "=VLOOKUP($C$20,$C$4:$D$19,2,FALSE)" [4]上記と同じですが、引数範囲は設定名で指定した例 Cells(24, 3).Formula = "=VLOOKUP($C$20,板,2,FALSE)" End Sub |
Sub シート関数9() cencbo = Cells(10000, 1).End(xlUp).Row On Error Resume Next meino = Application.WorksheetFunction.VLookup(Range("A1"), _ Range(Cells(3, 1), Cells(cencbo, 2)), 2, False) On Error GoTo 0 MsgBox "検索したコード[" & Cells(1, 1) & "]の銘柄名は「" & meino & "」です。" End Sub |