趣味のエクセルで当てよう!ロト・ナンバーズ

当選狙いで、ナンバーズ4をメインにロト、ビンゴ5などの各種データリストや、それらの分析用エクセルVBAなどについて書いてます。

マクロの中でワークシート関数を使う

マクロの中で関数を使うと便利ですね。
全部の関数が使える様ではないですが?
私も出来るだけ使っています。


・文字列関数や日付関数はマクロの中で使えない様です。



 エクセルマクロ情報サイト - 趣味のエクセルで当てようロト・ナンバーズ




・私は下の様に使っています。


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