スポンサーリンク

条件判定とWithステートメントを利用してレースIDを作成

こんにちは。伊川(@naonaoke)です。

今回は、面倒はVBAにまかせろ その2の続きになります。

今回のポイント

・セルの書式設定を変更する

・Withステートメントを利用する

今回の動画は、こんな人にお勧め

・同じセルに対して、複数の処理をしたい

・VBAのコードをすっきり、短くしたい

・セルの書式を文字列に変更する

では、セルの書式設定の変更から紹介します。

セルの書式設定の一例

セルの書式

記載するコード

標準 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構文で条件判定をすることが必要となります。

その条件判定を、コードは記載できなくてもいいので、やりたいことを声にだして言ってみましょう。

やりたいことを声に出して読んでみましょう
もし、セルの文字が1文字であれば、先頭に0をつける。そうでなければ、そのままにする。
スポンサーリンク

 

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ステートメントには、ルールがあり、ならず、End Withで終了を宣言しないとエラーになります。

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

上のコードが完成のコードになります。

このコードの注意点は、VBAのコードは、上から順番に処理をしますので、上から、2段目に文字列にセルを変更しています。


これで完成しました。

まとめ

条件判定のIF構文と、Withステートメントは、たくさん利用しますので、

ぜひ、みなさんのスキルにしてください。

きっと、職場で役立つと思います。

また、面倒はVBAにまかせろ その1 面倒はVBAにまかせろ その2も、

合わせて読んでいただければ、理解が深まると思います。

サンプルファイルNo6はです
スポンサーリンク

Twitterでフォローしよう

おすすめの記事