EXCELで血統表を作ろう!

レベル10  マクロに挑戦

−血量計算をやってみよう−

EXCELで血統表を作ろう!  目次へ
トップページへ


【マクロとは】

EXCELには,「マクロ」と呼ばれるプログラム機能が付いています.
よく使われるのは,[“Sheet 1”の“A1:G20”の範囲を選択する]→[選択範囲をコピーする]→[“Sheet 2”に貼り付ける]→[その範囲を印刷する]のように,決まりきった一連の操作を繰り返し実行するような場合の自動化ですが,もう少しプログラムっぽい記述をすると,簡易プログラムとして役に立つものが作れます.
レベル10 では,このマクロ機能を使って,インブリードの表示から血量計算をするプログラムを作ってみます.


【インブリード表示と血量】

実際のマクロを作る前に,血量計算はどのように行うかを見てみましょう.

血統表中のインブリード,たとえばテイエムオペラオーの5代血統表中のインブリードは,次のように表されます.


Nasrullah 4*5

Nearco 5×5

Nasrullah(ナスルーラ)のインブリードは“*”,Nearco(ネアルコ)のインブリードは“×”で表示されていますが,これは,Nasrullahが父方(または母方)の一方のみにあるのに対し(テイエムオペラオーの場合は,母方のインブリードです),Nearcoは父方と母方の両方に存在していることを表しています.
2つの場合を区別せず,同じ記号を使うこともありますが,別の表記をした方がわかりやすいでしょう.

また,このインブリードの血量は,それぞれ次のようになります.


Nasrullah 9.375%

Nearco 6.25%

インブリード表示とその血量は,次のような関係にあります.

ある馬のインブリードが
   * * * ...
で表されるとき,その馬の血量は,
  (0.5+0.5+0.5+....)×100 (%)
である.

上の式では,“*”と“×”は区別されません.
テイエムオペラオーの場合,Nasrullahのインブリードは4*5ですから,上の式に当てはめて計算すると,

    (0.5の4乗+0.5の5乗)×100
  =(0.0625+0.03125)×100
  =9.375 %

となります.


【マクロを書いてみる】

マクロについての詳しい説明は,EXCELのヘルプや解説書を読んでいただくとして,とりあえずマクロを書いてみましょう.

まず,EXCELを立ち上げてファイルを新規作成します.
次に,メニューから「ツール」→「マクロ」→「Visual Basic Editor」を選択します.
すると,今までのセルがたくさんある表計算の画面とは全く違う画面が表示されます.これがマクロを記述する“VBE”(Visual Basic Editor)の画面です.
画面は3つに分かれていて,左上に“プロジェクト”,左下に“プロパティ”と書かれた四角い部分があり,右側には大きな何もない部分があります.

メニューから「挿入」→「標準モジュール」を選ぶと,右側の部分が白い画面に変わり,カーソル位置を示す縦の線が点滅します.
この状態で,マクロを記述することができます.

この画面に,下の記述をそのまま書き込んでください.
面倒な方は,この部分をコピーして貼り付けてもOKです.
記述の内容については,あとで説明します.

Sub 血量計算( )

Dim N As Integer
Dim TOTAL As Single
Dim BLD As Single

N = 1
TOTAL = 0
BLD = 0

While Mid(ActiveCell, N, 1) <> Error
    BLD = 0.5 ^ Mid(ActiveCell, N, 1) * 100
    TOTAL = TOTAL + BLD
    N = N + 2
Wend

MsgBox TOTAL & " %"

End Sub

一番上の行“Sub 血量計算( )”を書き込むと,自動的に最後の行“End Sub”が表示されます.
それ以外の部分は,上の囲み内容を書き込んでください.普通のワープロやメモ帳と同じように操作します.

記述できたら,メニューから「ファイル」→「終了して Microsoft Excel へ戻る」を選び,マクロの記述を終了します.


【マクロを動かしてみる】

表計算の画面(セル枠が表示された画面)に戻ったら,どこのセルでもいいですから,“4*5”と書き込み(全角,半角どちらでもかまいません),書き込んだセルをアクティブにします.(書き込んだセルにカーソルを合わせ,クリックするか,矢印キーで太い枠を移動させ,書き込んだセルが太い枠で囲まれた状態にします.)

この状態で,メニューの「ツール」→「マクロ」→「マクロ」を選ぶと,マクロの画面が開き,“血量計算”というマクロ名が表示されます.
“血量計算”にカーソルを合わせてから「実行」をクリックするか,“血量計算”をダブルクリックすると,マクロが起動します.
(ちょっとどきどきしますね)

うまくマクロが動いていれば,メッセージボックス(小さい画面)が開いて,その中に“9.375 %”という表示と,“OK”ボタンが現れるはずです.
この画面を終了させるには,“OK”ボタンをクリックしてください.

今度は別のセルに“5×5”と書き込み,セルをアクティブにします.
最初の“5”を全角,あとの“5”を半角というように,全角半角を混ぜて記入してみましょう.また,“×”の記号も,全角の“バツ”でもいいですし,半角の“エックスの大文字”でもかまいません.
記入が終わったら必ずセルをアクティブにしてから,マクロを実行します.

今度は,メッセージボックスに“6.25 %”と表示されましたか.

もしエラーメッセージが出たり,計算結果がまちがっていたら,もう一度VBE画面を開いてマクロの記述内容を確認してみてください.


【マクロの内容】

このマクロについて簡単に説明します.

While Mid(ActiveCell, N, 1) <> Error
    BLD = 0.5 ^ Mid(ActiveCell, N, 1) * 100
    TOTAL = TOTAL + BLD
    N = N + 2
Wend

以上の5行が,実際に血量計算を行っているメインの部分になります.
これ以外の記述は,マクロ(プログラム)のいろいろな約束ごとや,計算結果の表示について表しています.

メイン部分では,
「アクティブになっているセルの中身の,最初の文字1文字分を取り出し,その値を0.5の累乗にして100倍しなさい.
次に,その文字から2つ右隣の文字1文字分を取りだし,その値を0.5の累乗にして100倍し,最初の値に足しなさい.
このような操作を,セルの中身がなくなるまで繰り返しなさい.」
という内容の計算をしています.
つまり,

  (0.5+0.5+0.5+....)×100

の計算を行っているわけです.

このマクロは,文字数に制限がありません.したがって,

  5*6*6*5*4×7*5*6*6

のようなインブリードであっても,ちゃんと計算できます.
また,文字については半角・全角の区別をしていませんので,数字・記号とも,どちらを使って記述してあっても計算は正しく行われます.

数字以外の記号については,計算には関係ありませんので,“*”や“×”以外の記号で記述してあっても(たとえば 4#5!5&3 のように書いてあっても),記号が1文字であれば,計算上は全く問題ありません.

ただし,取り出す数字は1文字分ずつと決まっていますので,

  8*10×10*9*11

のように,2桁以上の数字が含まれる場合は,計算できません.
実際には,10代目以上の血統表の血量を計算することはほとんどないと思われますので,これで支障はないでしょう.


【マクロの保存】

このままマクロを保存すると,このマクロは今作成したブック(ファイル)の中でしか使えません.
他のブック(EXCELの他のファイル)でも使えるように,別の場所に保存します.

メニューの「ツール」→「マクロ」→「Visual Basic Editor」を開きます.
画面左上の「プロジェクト」の中に,“VBA Project (PERSONAL.XLS)”という部分があります.
ここを右クリックし,表示されるメニューから「挿入」→「標準モジュール」を選びます.

画面右側に空白部分が現れたら,ここに,作成したマクロ(“VBA Project (Book1)”のモジュール内に記録されています)をコピーして貼り付けます.
メニューの「ファイル」→「PERSONAL.XLSの保存」を選ぶと,個人用マクロ保存ブックにマクロが保存され,どのブックからでも使うことができます.

また,このマクロを起動させるのに,いちいちメニューから選ぶのは面倒ですね.
このマクロをツールバーのボタンとして登録することもできます.

EXCELのセル表示画面に戻り,メニューの「ツール」→「ユーザー設定」→「コマンド」を選びます.
左側のコマンドの中から「マクロ」を選び,ニコニコマークのついた「ユーザー設定ボタン」をクリックします.
このボタンをドラッグして上のツールバーの適当な位置(どこでもかまいませんが,右側の空いているところがいいでしょう)に移動させると,ニコニコマークがツールバーに表示されます.
このマークを右クリックすると,マクロの登録ができるリスト画面が開きますので,「マクロの登録」を選び,“PERSONAL.XLS!血量計算”を選択して“OK”ボタンを押します.

ボタンの名前やイメージ(マーク)を変更することもできますので,適当なものを選んでください.



レベル11へ
EXCELで血統表を作ろう!  目次へ
トップページへ


address=http://cosmarr.com