こんにちは。伊川です。
今回は、面倒は、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で抽出したいと思います。