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

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

エクセルメモ

・自分の為のメモなので順不同、重複あるかもしれません。


<<関数 計算式>>
マクロ学習法とは 5(関数)
・関数について---マクロを勉強する前に関数をマスターするのはとても大事なことだと言いますね。そして関数は複数組み合わせて、複雑な処理が出来る様になりますね。


関数で出来ない事をマクロで処理する。逆に、関数で出来る事をマクロで作るのは無駄ですね。だから、関数が分からないと遠回りになると思います。



・平均を求める
  A3からj12のセルに入ってる値で80以上の値の平均値を求める。
  =(SUMIF(A3:J12,">=80"))/(COUNTIF(A3:J12,">=80"))


・以上,以下判断
  =IF(E18>=-0.3,IF(E18<=0.3,1,0),0)
   -0.3以上+0.3以下の時---1
       それ以外の時----0とする。


・集計
  =SUBTOTAL(集計方法,範囲)
        集計方法  1、AVERAGE
              2、COUNT
              3、COUNTA 
          以下-----------


・配列数式
  B2*B3---------①
C2*C3---------②→①+②+③=合計求める時 
D2*D3---------③
          {=SUM(B2:D2*B3:D3)}
           { }はCtrl+Shift+Enterキー押下


・文字を数字にする
  =VALUE(A1) (マクロ上ではVAL)


・乱数発生させる
  =RAND()           (マクロ上ではRND)
=RANDBETWEEN(最小値,最大値)


・ セルの結合
=CONCATENATE(原本!E4423,原本!F4423)
  (原本!E4423が---1,原本!F4423--2の時→12になる)


・並び替え(小さい順、大きい順、他 =SMALL(範囲,順位))

・ IF関数 (関数とマクロでの式)
 =IF(a1=1,1,0) b1に左の式の場合a1が1の時b1は1に、でない場合0になる。
 If  Cells(1,1)=1 Then Cells(1,2)=1 Else Cells(1,2)=0 マクロでの式
又はマクロでの式
 If  Cells(1,1)=1 Then
  Cells(1,2)=1
 Else
  Cells(1,2)=0 
 End If


  =IF(AND(a1=10,b1=10),a1+b1,a1-b1)-----c1に入った計算式の場合
If  Cells(1,1)=10 and  Cells(1,2)=10 Then マクロでの式
 Cells(1,3)=Cells(1,1)+ Cells(1,2)
Else
   Cells(1,3)=Cells(1,1)- Cells(1,2) 
End If


  =IF(OR(A1=10,B1=10),10,0) -----c1に入った計算式の場合
  If  Cells(1,1)=10  or  Cells(1,2)=10 Then マクロでの式
       Cells(1,3)=10
 Else
  Cells(1,3)=0
End If


 AND  OR も最初のマクロ式の様に一行で表しても良いでしょうね。


マクロ学習法とは 7 (条件分析)
=countif(範囲,求める値)-------以下応用例(5の次に4が出たなら1とする)

・セルの位置を表示
Sub sell_iti()
Dim s As String
gyou = ActiveCell.Row
retu = ActiveCell.Column
s = Cells(gyou, retu).Address ' "$A$1"
Cells(gyou, retu) = s
End Sub


データの最終セルを取得する
・文字の分解(4桁の数字に見える文字を1桁数字にする)


 Q4472に数字が文字として入っている場合下の計算、無い場合何も出さない。


=IF(Q4472="","",VALUE(LEFT(Q4472,1)))      1番左
=IF(Q4472="","",VALUE(RIGHT(LEFT(Q4472,2),1)))  左から2番目
=IF(Q4472="","",VALUE(LEFT(RIGHT(Q4472,2),1)))  左から3番目
=IF(Q4472="","",VALUE(RIGHT(Q4472,1)))     1番右
 LEFTとRIGHTを組み合わせる代わりにMIDを使うこともある。


・偶数奇数に分ける(文字の分解した数字をもとに4つとも)


=IF(OR( R4472=1,R4472=3,R4472=5,R4472=7,R4472=9),"奇","偶")
=IF(OR( S4472=1,S4472=3,S4472=5,S4472=7,S4472=9),"奇","偶") 
=IF(OR( T4472=1,T4472=3,T4472=5,T4472=7,T4472=9),"奇","偶")
=IF(OR( U4472=1,U4472=3,U4472=5,U4472=7,U4472=9),"奇","偶")
あるいは =IF(MOD( R4472,2)=0,"偶","奇")


・大小に分ける
(文字の分解した数字をもとに4つとも)
=IF(R4472<5,"■","□")&IF(S4472<5,"■","□")&IF(T4472<5,"■","□")&IF(U4472<5,"■","□")


<<マクロ覚書>>


・セルの指定 (マクロでは入力、出力などでの基本部分)
   Cells(行、列).select   A3→  Cells(3,1).select      D4 ← Cells(4,4).select 
   Cells(行+1,列+1).select  は1行下へ1列右に 
     Cells(行-1,列-1).select  は1行上へ1列左に 
   Cells(行,列)の行、列は変数とする。


          Cells(10).Select は1行目の10列目(j列)選択


               Range("dd16") = "=cz15"   dd16セルにCZ15セルの値を入れる
   Range("aoh28") = "=ストレートパターン!C4"
     シート ストレートパターン のC4のセルの値をaoh28セルに入れる。



         複数範囲 Range(Cells(行、列),Cells(行、列)).select 
Range("A1:G"+Mid$(Str$(T),2)).select   Tは変数


 アクテブセル(現在選択中のセル)の列、行の取得(整数)
   列=ActiveCell.Column  (列は変数(整数)とする)  
   行=ActiveCell.Row         (行は変数(整数)とする)
   関数で列を取得は  =COLUMN(A1)----1となる。


列表示を上の様に数字で表してセルの列位置を調べ、セルの式を作る。A1はcells(1,1).
(ファイル → オプション → 数式 → 数式の処理 R1C1を選択する)


-------------------------------------------------------------------------------------

ユーザーフォームを開く(ユーザーフォーム1の場合)
UserForm1.Show------別のマクロの中に記入


ユーザーフォームを閉じる(ユーザーフォーム1の中で)
Unload UserForm1-----okボタンにマクロ設定する
(選択後、okボタン押下でユーザーフォームを閉じる)
Private Sub CommandButton1_Click()
If pata_1 = "" And pata_2 = "" Then MsgBox ("選択して下さい"): Exit Sub
Unload UserForm1 '選択後ユーザーホームを閉じる
Exit Sub
End Sub
上のユーザーホームは自分で作成しなければなりませんが,コマンドボタン等も配置します。
忘れる「ユーザーホーム」思い出して
-----------------------------------------------------------------------------------------------------------------

太字下線マクロをCtr+Bで実行する。
オプションでアルファベット1文字で設定する。
--------------------------------------------------------------------------------------

Dim   start  as  long
start = MsgBox("開始しますか?", vbYesNo)
If start = vbNo Then End  ’はいなら開始、いいえなら終了


実行時間が長いため間違ってマクロを実行させないように選択させている。


変数のstart とメッセージ内容は任意に設定 (はい(Y)、いいえ(N)は自動で表示)
これはユーザーホームの様に作成しなくて良い。(マクロ命令にあるので自動表示)
マクロ 対話型
--------------------------------------------------------------------------------------
・変数(変化する値)
   Dim c, l, r As Range ’オブジェクト変数
   Dim deme  As long ’整数型変数
   Dim deme(3)  As long   ’配列変数
   Dim moji  As string ’文字列型変数
      Static  ’(エクセル起動中は値を保持する変数)


 変数の値を消す 
  Set c=Nothing ’オブジェクト変数
  deme=0   ’整数型変数
  Erase deme ’ 配列変数
  moji="" ’文字列型変数


・静的変数(値が保持される)
  Static Number As Long
  マクロ学習法とは11 で説明
  マクロ学習法とは 11(静的変数)
・定数(変化しない値)
 Const deme As long=1 ’(demeを整数の1と設定する)
  マクロ学習法とは 12(定数)
・変数、定数ともローカル、モジュールレベル、パブリックが有り適用範囲、使用期間に  
 より選択する。
 プロシジャーだけ、モジュールでのとかありますが分かりにくいですね。
 習うより慣れろの感覚で覚えたいですね。


------------------------------------------------------------------------------------------
Sub saikeisanoff() ’再計算(画面表示関係含む)をしない設定マクロ
With Application
   .Calculation = xlManual
   .MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False  '画面表示関係
Application.ScreenUpdating = False
End Sub


Sub saikeisanon() ’再計算(画面表示関係含む)をする設定マクロ
With Application
   .Calculation = xlAutomatic
   .MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = True '画面表示関係
Application.ScreenUpdating = True
End Sub
マクロのスピードアップ 
再計算をしないなどにして他のマクロ実行後、再計算をするに戻す。
マクロ実行スピードアップの為のマクロ

-----------------------------------------------------------------------------------------------------
・行、列とも連続してデータの入ったセルの範囲を取得する方法


①変数の指定
 Dim 行列範囲  As  Object 


②行、列範囲の取得
 Set 行列範囲=cells(1,1).CurrentRegion 


③行(最終行)を入れる変数指定
 Dim 行  As  Integer


④最終行を取得する方法
 行=行列範囲.Rows.Count


⑤列の場合は
   列(最終列)を入れる変数指定
 Dim 列  As  Integer
    最終列を取得する方法
 列=行列範囲.Columns.Count
  番地の表示 
         番地=cells(1,1).CurrentRegion .Address(ReferenceStyle:=XlA1)
         msgBox"A1形式;"& 番地



・連続でデータの入った最終行を取得する
 Dim 最終行  As long
 最終行=Range("c1").CurrentRegion.Rows.Count
    列BCDのデータの最終行


----------------------------------------------------------------------------------------------
・プロシジャーとモジュール
  プロシジャー Sub A()やSub B()など
  モジュール  プロシジャーをまとめたもの
         Sub A()とSub B()など
       覚えなくてもマクロ作成には影響は無いと思います。
  マクロ学習法とは 3 (専門用語)
----------------------------------------------------------------------------------------------
・マクロ関数
 自分専用の関数を作る場合はマクロ関数を作ります。
 作った関数をセルに入力して答えを出します。
  マクロ関数 
----------------------------------------------------------------------------------------------
・マクロでのエラー処理
 エラーが起きたらマクロを終わらせる。
 Sub  owari()
    ---------
    ---------
    ---------
    On  Error Goto   Owaru
    ---------
    ---------
    ---------
    Owaru:
        Exit Sub


  End Sub
マクロエラーでとまどう!


マクロエラーで学ぶマクロ