VBAで文字列を操作するのは、基本です。
ACCESSもそうですが、欲しい文字を抽出できた時の感動は最高ですね。競馬のデータを作成したい人は必見です。
目次
条件判定とWithステートメントを利用してレースIDを作成
こんにちは。伊川(@naonaoke)です。
今回は、面倒はVBAにまかせろ その2の続きになります。
このブログはこんな人にお勧め
- 同じセルに対して、複数の処理をしたい
- VBAのコードをすっきり、短くしたい
- セルの書式を文字列に変更する
このブログを読み終わるころには・・・・・・
また、Withステートメントを利用することで、コードを短くできます。
セルの書式設定の一例
セルの書式 |
記載するコード |
標準 | G/標準 |
数値 | 0_ |
通貨 | \#,##0;\-#,##0 |
日付 | yyyy/m/d |
時刻 | [$-F400]h:mm:ss AM/PM |
パーセンテージ |
0% |
分数 | # ?/? |
指数 |
0.00E+00 |
文字列 | @ |
上記のように、セルの書式設定変更の一例です。ここではすべて紹介できませんが、上記の表で日常業務については、十分だと思います。
整形後の完成図
上の図のように整形したいと思います。
なぜなら、競馬のレースIDは、16桁と決まっているからです。
Excelは、数字の最初が【0】の場合、【0】は不要と判断して、削除します。
例)【02】の場合は、【2】になります。
セルを文字列対応に対応させる
セルを文字列に変更する場合のコード
Range(“A1”).NumberFormatLocal = “@”
これで文字列には対応します。
条件判定を行う
数字の【8】が入力されているセルを文字列に変更しても、【8】にしかなりません。
そのためIF構文で条件判定をすることが必要となります。
その条件判定を、コードは記載できなくてもいいので、やりたいことを声にだして言ってみましょう。
If Len(Range("A1")) = 1 Then Range("A1").NumberFormatLocal = "@" Range("A1") = "0" & Range("A1") End If
上記のようなコードになります。
LENは、文字数を数える関数です。VBA、WorkSheet関数、共通の関数です。
競馬場を競馬場コード(馬場コード)に変換する
つぎは、JRAは、各競馬場に数字を割り振っています。
上の図のようになっています。
この場合も条件判定が必要です。
この場合は、10回の条件判定をしなければなりません。
その場合は、IF構文、Select Case構文がありますが、今回はIF構文を使います。
そしてIF構文と、Withステートメントを組み合わせて処理を行います。
前提条件としては、セルA8に、札幌と入力さいる。
セルB8に【01】入力したい。
セルA8が札幌だったら、セルB8に【01】と表示させたい。
その前に、セルB8を文字列に変更したい。
上の図で、左側は、Range(“B8”)がたくさん記載されいるのに対して、向かって右側は、Range(“B8”)が記載されているのは、1回だけです。
中学で習った数学の因数分解と同じで、共通の言葉でくくると楽になります。
この場合の共通の言葉は、Range(“B8”)になります。
With Range("B8") .NumberFormatLocal = "@" .Value = Left(yy, 2) If .Value = "札幌" Then .Value = "01" ElseIf .Value = "函館" Then .Value = "02" ElseIf .Value = "福島" Then .Value = "03" ElseIf .Value = "新潟" Then .Value = "04" ElseIf .Value = "東京" Then .Value = "05" ElseIf .Value = "中山" Then .Value = "06" ElseIf .Value = "中京" Then .Value = "07" ElseIf .Value = "京都" Then .Value = "08" ElseIf .Value = "阪神" Then .Value = "09" ElseIf .Value = "小倉" Then .Value = "10" End If End With
Withステートメントには、ルールがあり、ならず、End Withで終了を宣言しないとエラーになります。
上のコードが完成のコードになります。
このコードの注意点は、VBAのコードは、上から順番に処理をしますので、上から、2段目に文字列にセルを変更しています。
これで完成しました。
ここがポイント
今回は、面倒はVBAに任せろの最終回になります。
この程度の文字列操作が出れば、業務の文字列操作は、カンタンにできます。
競馬は、土日で、72レースあります。
この煩雑な作業から、解放されたい一心でした。
趣味とVBAが合致すると上達が早いと思います。
まとめ
条件判定のIF構文と、Withステートメントは、たくさん利用しますので、
ぜひ、みなさんのスキルにしてください。
きっと、職場で役立つと思います。
また、面倒はVBAにまかせろ その1 面倒はVBAにまかせろ その2も、
合わせて読んでいただければ、理解が深まると思います。
今回のサンプルファイルは、No6です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。