マクロの中でワークシート関数を使う
マクロの中で関数を使うと便利ですね。
全部の関数が使える様ではないですが?
私も出来るだけ使っています。
・文字列関数や日付関数はマクロの中で使えない様です。
エクセルマクロ情報サイト - 趣味のエクセルで当てようロト・ナンバーズ
・私は下の様に使っています。
CountIf関数
Cells(i, 84) = WorksheetFunction.CountIf(Range(Cells(2, 83), Cells(i, 83)), Cells(i, 83))
最初の行CE2のCells(2, 83)から現在の行Cells(i, 83)までCells(i, 83)のデータが何回か計算して隣のCF列、Cells(i, 84)に合計として出してる。
(この計算では時間が掛かり過ぎるかも知れませんが? 行iは2~現在行まで変化する)
私のマクロではApplicationを使っていますが今はWorksheetFunctionですね。
マクロ学習法とは 5(関数) - 趣味のエクセルマクロで当てようロト・ナンバーズ
caunter = Application.CountA(Range(Cells(4500, writretu), Cells(5500, writretu)))
上の式で、上の表のデータ個数をカウント(赤字)している。これも元に次のデータ記入位置(上の行に向かって)を計算(カウントが3の場合、次のカウントは4なので次回は1行上にデータを出力)
---------------------- 他の使い方 例 ---------------------------
Cells(5501, 320) = 5501 - Application.Max(Range(Cells(5501, 200), Cells(5501, 319)))
5501行の200列から319列での最大値を出して5501から引き算して320列5501行に出力
データを参照し、回号分を関数コピーしさらに値コピーする。
Sub kankaku_sita_syuukei() ' 間隔を下並びで出力。整列コピーする準備
kaigo = Range("l1") ’最終回号とする。
Range("gi10") = "=CL3 " 'データを参照する(gi10に =CL3 の式を入れる)
Range("gj10") = "=CN3 "
Range("gk10") = "=DG3 "
Range("gl10") = "=DA3 "
Range("gm10") = "=DB3 "
Range("gi10:gm10").Copy Range(Cells(11, 191), Cells(9 + kaigo, 195)) 'データを回号分コピー
Range(Cells(11, 191), Cells(9 + kaigo, 195)).Select ’値コピー(関数を消す)
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
---
---
End Sub