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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。

