Ｅｘｃｅｌの活用例について
愛媛県立八幡浜高等学校 橋 本

１．はじめに潔⑴ グラフ描画について表計算ソフトの代表格となったＭｉｃｒｏｓｏｆｔ Ｅｘｃ

Ｅｘｃｅｌには、直接、関数のグラフをかく機能はなｅｌ（以下Ｅｘｃｅｌ）は、現在、多くの先生方が成績処理やいため、今回は散布図を使用することとした。表示範囲を統計処理等、校務の中で活用しているアプリケーションである。

40分割し、41個の点を滑らかにつなぐことで、グラフを表現在使用されているＥｘｃｅｌは、非常に多くの機能を備えて現している。41個の点の座標はＡ３からＢ４３のセルで計おり、本来の表計算を主体とした処理以外にも使用できるアプ算している。授業ではこのセルは非表示にして使用する方リケーションに成長している。また、Ｏｆｆｉｃｅアプリケーが画面はすっきり見える。

ションに実装されているＶｉｓｕａｌ ＢＡＳＩＣ ｆｏｒＡｐｐｌｉｃａｔｉｏｎｓ（以下ＶＢＡ）には、多数のコマン⑵ 関数値の算出について散布図で使用した41個の点のｙ座標を計算するためには、ドや関数が用意されており、それを利用することでこれまでの直接、Ｂ３〜Ｂ43のセルに式を入力することもできるが、作業の自動化や、多方面のアプリケーションを作成することが授業で活用することを考えれば、途中で式の形を変える場可能になる。そこで、Ｅｘｃｅｌの機能を拡張するＶＢＡを活面も想定できる。そこで、あるセルに書かれた式を評価す用した例を考えてみたいと思い、この主題を設定した。

るために、つぎのような関数をＶＢＡで作成した。

２．ＶＢＡについて初心者向けのプログラム言語として開発されたＶｉｓｕａｌ
ＢＡＳＩＣをもとにＷｏｒｄやＥｘｃｅｌなどのＯｆｆｉｃｅアプリケーションの機能を拡張するためにカスタマイズされた

Function eval(ByVal expr As String, dummy) As Double
eval = Evaluate(expr)
End Function
リスト１ 数式評価関数言語である。
Ｅｘｃｅｌのセルをオブジェクトして扱えるようになっており、定型作業の自動化が簡単に行えるようになっている。

この関数を用い、Ｂ３以下のセルには、「=eval(式,a&p&q&x)」と入力することで計算させている。２つ目の引数は、このeval関数内では用いていないが、これを指定して３．数学教材の作成
数学の授業の中でコンピュータの活用を考えた場合、最初におくことでa,p,q,xの値が変更されたときに自動的にeval関数を使って再計算させることができる。

思い浮かぶのはＧｒａｐｅｓ等に代表される関数グラフソフト

また、式中にあるa,b,c等のパラメータは、名前を定義ウェアである。そこで、今回Ｅｘｃｅｌを使用して関数グラフしておくことで指定セルの値を使用して関数の値を計算す教材を作成することとした。今年は、１年生を担当しているこることになる。今回定義した名前は次の表の通りである。ともあり、２次関数の分野で使用する教材を作成した。作例は、授業利用の場面を想定し、一部作例で使用していない名前

y=a(x‑p)^2+qについて、各パラメータを変えることで、グラフも定義している。Cという名前はＥｘｃｅｌで予約していが変化するようにしたものである。

るようで、̲c(アンダースコアc)として定義している。
名前定義

式=$E$2

A=$E$19

B=$E$19

C=$E$20

P=$E$21

Q=$E$22

X=$B3

表１ 作例で定義している名前⑶ アニメーション効果について
今回は、グラフが変化する様子をじっくり観察できるようにアニメーション機能も付けた。図１右下に配置した
Ｓｔａｒｔボタンを押すことでリスト２のStart̲Anim関数が実行され、対象となるパラメータが変化することで、グ
図１ 作成した教材

ラフが変形していく。見ている時間も考慮しており、アニメーション自体は４秒程度で終わるようにスピードを調整

Dim oFn As Longしている。
Sub Start̲Anim()oFile = "Output.BIN"

st = (Range("G26").Value ‑ Range("E26").Value) /oFn = FreeFile

For i = Range("E26").Value To Range("G26").Value

Set sref = Worksheets("DATA")

20+ st Step stRange(Range("D26").Value).Value = i

For r = 1 To 412

WaitSec (0.2)

For c = 2 To 17

Next
End Subbuffer((r ‑ 1) * 16 + c ‑ 2) = Val("&H"& sref.Cells(r, c).Value)
Next

リスト２ アニメーション処理関数

Nextbuffer(412 * 16) = 0

Start̲Anim関数中のWait̲Sec関数は、一定時間待つ処buffer(412 * 16 + 1) = 0

理をするものである。この部分が無いと最近のコンピュータの演算性能であれば、一瞬にして処理が終わり、グラフ

Open oFile For Binary As #oFnの変化を観察することができない。

For i = 0 To 412 * 16 + 1

Sub WaitSec(sngWaitSec As Single)

Put #oFn, , buffer(i)Next

Dim dblCurDateTime As Double
dblCurDateTime = Now + sngWaitSec / 86400

Close #oFn
End Sub

Do
Loop Until Now >= dblCurDateTime
End Sub
リスト３ 処理待ち関数

リスト４ バイナリデータ出力関数
リスト後半のように、出力用のファイルをバイナリモードで開いておき、buffer配列に格納されたデータを１バイトずつ

４．バイナリエディタの作成
校務の中で、バイナリデータを扱う機会があったため、ＥｘPut関数で出力することで、簡単にバイナリファイルを作成することができる。

ｃｅｌでバイナリエディタを作成してみた。Ｅｘｃｅｌには、バイナリファイルの入出力機能が用意されているため、比較的簡単に作成することができた。

５．まとめ
今回はＥｘｃｅｌのＶＢＡを使用して、２本のプログラムを作ってみた。授業で使える程度の教材ならば、Ｅｘｃｅｌで対応できない部分にＶＢＡを使用することで簡単に作成できた。
また、今回の教材に盛り込まなかったグラフの一部を太線にする処理も、使い慣れたＥｘｃｅｌならば少しの工夫で実現することができる。さらに、バイナリエディタといった表計算とは違った分野での使い方も容易に行えることが確認でき、ＶＢＡにより機能を追加することでＥｘｃｅｌの活用場面は飛躍的に広がるものと思われる。

図２ バイナリエディタ

今後も多くの機能を持つＶＢＡの活用分野を探し、ほとんどのパソコンにインストールされているＥｘｃｅｌの有効な利用

数学とは直接関連のない題材であるため、プログラム全体の説明は割愛するが、バイナリデータの出力部分は、リスト４のようなものである。
Sub データ出力()
Dim oFile As String
Dim buffer(412 * 16 + 2) As Byte

方法を考えていきたいと思う。