| ワークシート関数 | 内容 | 補足説明 | |
| 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 = "= |
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
|