自作 ExcelVBAコードの断片を紹介してみる[最下行を選ぶ/印をつける/変数でRange]

  • LINEで送る

僕がいままで一番使った頻度が高いスクリプト言語はVBAなわけですが、AIもどき的な競馬予想ツールを作っていて、その中で使ったテクニックというか断片を公開しようという試み。

これやるならどれだみたいなブログはたくさんあるからもういらないと思うし、この断片一覧も特に必要ないとは思うんだけど。笑

こんなことしてるんですよというのと、自分の備忘録も兼ねてチラシの裏的な記事も書いてみようかなと思い記事を起こしてみました。

ケーバ予想ツールはいまのところ3戦して1勝1敗1分という感じで、まだまだ改善が必要な状況ではあります、ではどーぞ。

一番下の行を選ぶ(For文)

何気に役に立つというか使用頻度けっこう高めなテクニックじゃないかと思うんですが、Excelシートの一番下の最新行を選ぶFor文です。

For r = 5 To 10000
    
    If Cells(r, 1).Value <> "" Then
        
        rMax = r
        
    End If
    
Next r
    
Cells(rMax + 10, 1).Select

ツールの仕様上、1万行もいくことないんでFor文の繰り返しは1万行までにしていまして、間に空白行もあったりするのでWhile文じゃなくてFor文でチェックしてます(わかる人にはわかる)。

馬柱に印をつける(IF文)

◎とか〇とかコピペしてつけるのめんどくさい、印を自動でつけたいなということで、IF文で印をつけるようにしてみました。


If rankin = 1 Then

    Cells(r, 27).Value = "◎"
    
ElseIf rankin = 2 Then

    Cells(r, 27).Value = "○"

ElseIf rankin = 3 Then

    Cells(r, 27).Value = "▲"

ElseIf rankin = 4 And Cells(r, 26).Value <> "" Then

    Cells(r, 27).Value = "△"

ElseIf rankin = 5 And Cells(r, 26).Value <> "" Then

    If maxRow - nowRow + 1 <= 12 Then
        
        Cells(r, 27).Value = "×"
        
    Else
    
        Cells(r, 27).Value = "△"
    
    End If
    
ElseIf rankin = 6 And Cells(r, 26).Value <> "" Then

    If maxRow - nowRow + 1 <= 16 Then
        
        Cells(r, 27).Value = "×"
        
    Else
    
        Cells(r, 27).Value = "△"
    
    End If
    
ElseIf Cells(r, 26).Value <> "" Then

    Cells(r, 27).Value = "×"
    
End If

この前後にも同じくらいの長さのコードがあったりもするんですが、なんとなく雰囲気だけ感じていただけたら良いかなーと。

Rangeを変数で操作する

これ最近知ったんですが、それより前はRangeって数字決め打ちじゃないとダメで、Cellsばっかり使っててR1C1表示と切り替えるのが大変みたいな状況によく陥ってました(わかる人にはわかる)。

Range("K" & rs & ":L" & re).Value = Range("K" & r1 & ":L" & r2).Value

こんなちょっとしたことでも、1回1分としても毎週50回そういう場面に遭遇するとしたら50分節約できる、精神的苦痛も含めたらその何倍もの効果があると思っていたりします。

CrowdWorks[PR]

まとめ

ほんとにごく一部ですがこんなことしてるんですよというアピールとか、ブログ熱がだいぶ冷めてきたのも含めて記事を書いてみました。笑

ケーバ予想ツールの方はまだ30レースもデータを織り込んでなくて、始まったばかりな感じですが、万馬券何回も当てるツールに育てていきたいですね。

あわせてプログラミングの知識も高めていきたい、どちらかというと目的はそっち寄りだったりもして、VBAだけじゃなくてWEB版とかPython版とか作ってみたいような気もしたりしなかったりしてます。

ブログネタ考えるのもめんどくさくなってきてるので、しばらくこのチラシの裏運用を続けていこうかなと思ってたり、他にも書きたいことあったら書いていきます。

ExcelVBAでプログラミング(IF文)

  • LINEで送る

コメントを残す

*

%d人のブロガーが「いいね」をつけました。