こんにちは。伊川です。

今回は、面倒は、VBAに任せろという題名で、皆さんに関数とVBAを比較して紹介します。

レースIDを作成したい


この赤枠の中を、自動で、必要な事項を入力したいわけです。

ExcelのセルA1に下記の情報が与えられています。

[馬連マトリクス](馬連人気順) 2019831日(土)札幌
259R 14.15発走

この赤字になった文字を抜き取りたいわけです。

レースIDとは何か?

JRAの競走馬には、開催毎に、IDが割り振られます。

201908310102050901 これが、レースIDのサンプルです。

 

このレースIDを作成することで、データベースで管理をすることが可能な訳です。

入力するのがとても面倒なため、何とか、自動で取得したいわけです。

レースIDの構成
20190831⇒年月日
01   ⇒馬場コード(※01は札幌を指します)
0205  ⇒開催回数と開催日
09   ⇒レース番号
01   ⇒ゼッケン番号
つまりこの18桁のIDで競争馬を特定します。

使用する関数その1 TRIM関数

浄水器の会社で、日本トリムという会社があります。自宅でも使用しています。

TRIMの意味は、刈り取る等の意味ですね。

なぜ、TRIM関数を使うのかというと、余分な空白があると、うまく抽出できない可能性があるので、

あらかじめ、余分を取り除いておきます。

注意点は、左端と右端しか取り除くことができません。

料理でいうところの、あく抜きでしょうか。(笑)

使用する関数その2 MID関数

MID関数は、文字列の中から、文字を抽出する関数です。


セルB1の伊川直助を抽出したいときに、下記のような式を入力します。

MID関数の使い方
=MID(B1,5,4)
MID ⇒文字列の中から値を抜き出す命令を出す関数
B1  ⇒抽出したいセルを指定します。この場合は、セルB1になります。
5  ⇒セルB1のどの場所から抽出するのかを指定します。この場合は、【伊】が5番目なので、5を入力します。
4  ⇒5番目から、何文字を抽出するかを指定します。伊川直助は、4文字なので 4を指定します。

 

使用する関数その3 FIND関数

FIND関数は、指定されたセルから、値を見つける関数で、見つけた文字の位置を数字で返します。


FIND関数 ⇒特定の文字を見つけろという関数です。この場合は、セルC1から”川”を見つける関数です。

FIND関数の使い方
=FIND(“川”,”C1″,1)
C1    ⇒”川”はセルC1にあるので、その場所セルC1を指定します。
1     ⇒ セルC1の先頭から”川”を探すので、”川”は2番目の2が返ります。

仕上げ すべての関数を組み合わせる

結論から言うと、2019を抽出するためには、

関数の組合せ
=TRIM(MID(A1,FIND(“)”,A1)+1,FIND(“年”,A1)-FIND(“)”,A1)-1))
このような関数を入力します。
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回、代入することで、完成します。

特定の文字から特定の文字の間の値を抽出
=TRIM(MID(A1,FIND(“★★★”,A1)+1,FIND(“■■■”,A1)-FIND(“★★★”,A1)-1))
“★★★”⇒月 ”■■■”⇒日

簡単ですよね。

注意点

FIND関数は、文字列の一番初めの値しか見つけることができません。


だから、

=TRIM(MID(A1,FIND(“(土)”,A1)+3,FIND(“R”,A1)-FIND(“(土)”,A1)-1))

このようにして、

札幌 2回 5日 9Rと別途抽出をしなければ、なりません。

ここで、読者様から、不満が出そうです。競馬は、土曜日だけじゃないと。

それは、次回、VBAで抽出したいと思います。

 

スポンサーリンク

Twitterでフォローしよう

おすすめの記事