目次
日常の面倒は、VBAに任せろ
こんにちは。伊川(@naonaoke)です。
日常の実務でもあるあるだと思うのですが、毎回、毎回、コピッて、ㇵっての繰り返しはいやになりますよね。
もし、ボタン一発で解決したら、こんなに楽なことはありません。
今回は、面倒は、VBAに任せろという題名で、皆さんに関数とVBAを比較して紹介します。
このブログはこんな人にお勧め
- 毎日の繰り返し作業に嫌気がさしている人
- お好みの文字を抽出したい人
- なんでもボタン一発で解決したい人
このブログを読み終わるころには・・・・・・
レースIDを作成したい
この赤枠の中を、自動で、必要な事項を入力したいわけです。
ExcelのセルA1に下記の情報が与えられています。
[馬連マトリクス](馬連人気順) 2019年 8月31日(土)札幌
2回 5日 9R 14.15発走
この赤字になった文字を抜き取りたいわけです。
レースIDとは何か?
JRAの競走馬には、開催毎に、IDが割り振られます。
201908310102050901 これが、レースIDのサンプルです。
このレースIDを作成することで、データベースで管理をすることが可能な訳です。
入力するのがとても面倒なため、何とか、自動で取得したいわけです。
01 ⇒馬場コード(※01は札幌を指します)
0205 ⇒開催回数と開催日
09 ⇒レース番号
01 ⇒ゼッケン番号つまりこの18桁のIDで競争馬を特定します。
使用する関数その1 TRIM関数
浄水器の会社で、日本トリムという会社があります。自宅でも使用しています。
TRIMの意味は、刈り取る等の意味ですね。
なぜ、TRIM関数を使うのかというと、余分な空白があると、うまく抽出できない可能性があるので、
あらかじめ、余分を取り除いておきます。
注意点は、左端と右端しか取り除くことができません。
使用する関数その2 MID関数
MID関数は、文字列の中から、文字を抽出する関数です。
セルB1の伊川直助を抽出したいときに、下記のような式を入力します。
MID ⇒文字列の中から値を抜き出す命令を出す関数
B1 ⇒抽出したいセルを指定します。この場合は、セルB1になります。
5 ⇒セルB1のどの場所から抽出するのかを指定します。この場合は、【伊】が5番目なので、5を入力します。
4 ⇒5番目から、何文字を抽出するかを指定します。伊川直助は、4文字なので 4を指定します。
使用する関数その3 FIND関数
FIND関数は、指定されたセルから、値を見つける関数で、見つけた文字の位置を数字で返します。
FIND関数 ⇒特定の文字を見つけろという関数です。この場合は、セルC1から”川”を見つける関数です。
C1 ⇒”川”はセルC1にあるので、その場所セルC1を指定します。
1 ⇒ セルC1の先頭から”川”を探すので、”川”は2番目の2が返ります。
仕上げ すべての関数を組み合わせる
結論から言うと、2019を抽出するためには、
このような関数を入力します。TRIM ⇒空白の取り除け
MID ⇒文字列の中から、文字を抽出しろ
A1 ⇒その場所は、セルのA1にある
FIND ⇒”)”を見つけろ
A1+1 ⇒セルA1の”)”のその1つ後ろを指定
FIND ⇒”年”を見つけろ
A1 ⇒その場所は、セルのA1にある
-FIND(“)”,A1)-1)) ⇒ここが少し難しいですね。ポイントは、FIND関数は、数字を返すので、加減乗除ができます。
つまり、-FIND(“)”,A1)-1))は
これが、特定の文字から特定の文字までの間を抽出する方法です。
=TRIM(MID(A1,FIND(“年”,A1)+1,FIND(“月”,A1)-FIND(“年”,A1)-1)) ⇒これは、8を抽出
これを見ると、
=TRIM(MID(A1,FIND(“年”,A1)+1,FIND(“月”,A1)-FIND(“年”,A1)-1))
=TRIM(MID(A1,FIND(“月”,A1)+1,FIND(“日”,A1)-FIND(“月”,A1)-1))
31は月と日に挟まれていますので、式は、上記のようになり、
最初の月を2回、日を1回、代入することで、完成します。
“★★★”⇒月 ”■■■”⇒日
注意点
FIND関数は、文字列の一番初めの値しか見つけることができません。
だから、
=TRIM(MID(A1,FIND(“(土)”,A1)+3,FIND(“R”,A1)-FIND(“(土)”,A1)-1))
このようにして、
札幌 2回 5日 9Rと別途抽出をしなければ、なりません。
ここで、読者様から、不満が出そうです。競馬は、土曜日だけじゃないと。
それは、次回、VBAで抽出したいと思います。
ここがポイント
結局、セルの範囲を、VBAのコードで表現することが出来ればいいのです。
Range(“A1″)=”伊川直助”
そうすると、セルA1に、伊川直助が入力されます。
今回は、それが、少し、複雑になっただけです。
日常の業務を楽にしましょう。
まとめ
今回のネタは競馬です。
実際のところ、仕事より、趣味を優先している伊川直助です。
仕事は、妥協しても、趣味は妥協したくない。
男って、そんなもんですよね。
今回のブログは続編がありますので、よろしければ、合わせて、読んでいただければ幸いです。
今回も最後までお読みいただきありがとうございました。
今回のサンプルファイルありません。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。