第8回 表計算ソフトの高度利用
Excelのマクロ機能を利用することにより、さまざまな処理を自動化することが出来る。今回の授業ではマクロの簡単な使い方を学び、マクロが一種のプログラムであることを理解する。
本講義で身につけた知識が役立つ科目など:
機械工学実験、卒業研究、大学院および企業での研究など。
8.0 最初にやること
マクロは非常に便利なツールであるが、あまりにも色々なことが自動化できるため、マクロを利用してウィルスを作成することも出来てしまう。
このため、Excelをインストールした直後の状態では、マクロの作業を行うことができない。自宅PCにてマクロを利用した作業を行う際は、まずは以下の手順にてマクロを利用できるようにセットアップすること。
なお、情報処理教室のExcel2007については以下の作業は不要である。
8.0.1 Excel2010の場合 (大学のPCはこちら)
標準セットアップの状態では、メニューに開発タブが表示されていない。このような場合、以下のような作業を行うこと。
- メニューの「ファイル」から、[オプション] をクリックします。
- [リボンのユーザ設定] カテゴリをクリックし、 [リボンのユーザ設定]にある [開発] の左にあるチェックボックスにチェックを入れます。
8.0.2 Excel2007の場合
標準セットアップの状態では、メニューに開発タブが表示されていない。このような場合、以下のような作業を行うこと(Excelのヘルプより引用)。
- (Microsoft Office ボタン) をクリックし、[Excel のオプション] をクリックします。
- [基本設定] カテゴリの [Excel の操作の基本オプション] で、[[開発] タブをリボンに表示する] チェック ボックスをオンにし、[OK] をクリックします。
8.0.3 Excel2003以前のバージョン
セキュリティレベルが「高」に設定されており、マクロが利用できないようになっていることがある。
このような場合、以下の手順に従ってセキュリティレベルを「中」に変更すること。
- 「ツール」メニューの「マクロ」より、「セキュリティ」を選ぶ。
- 「セキュリティ」パネル中の「セキュリティレベル」を「中」にしてOKを押す。
- 変更を反映するため、一度Excelを終了させ、再度起動する。
8.1 macro001 : セルに値を代入する
何はともあれ、マクロを使ってみましょう。
手順
- 先ず、macro_lesson.xls というファイルを作成せよ。macro001からmacro005までは全てこのファイルに保存すること。
- 「開発」-「コード」-「マクロの記録」(Excel2007以前では「新しいマクロの記録」)を選択し、マクロ名として macro001 (以下のマクロについても同様にマクロ名を設定すること)を入力する。以降の手順は全てマクロに記録される。
- 適当なセルを選択し、5箇所程度に文字列を入力したのち、停止ボタンを押してマクロを終了させる。これでマクロが記録された。
- 「ファイル」-「新規作成」より新しいブックを作成する。
- 「開発」-「コード」-「マクロ」を選択し、先ほど作成したマクロを選択して実行せよ。
マクロの内容を確認する
「開発」-「コード」-「Visual Basic」を選択し、プロジェクトの中の「標準モジュール」-「Module1」をダブルクリックして開いてみると、先ほど記録したマクロの内容を確認出来る。Excelマクロは一種のプログラミング言語であることが判る。
- 参照しているセルの番地や代入する値を変更してマクロを実行すると、実行結果が変わることを確認せよ。
- 注:マクロは標準の状態ではマクロを記録したときに利用したファイルの中に保存される。このため、マクロを実行する際には、そのマクロを含んだファイルを開いておく必要がある。
8.2 macro002 : 色を付ける
適当なセルに色を付けるマクロを作成し、Visual Basic Editorで記録された内容を確認せよ。
8.3 macro003 : 罫線を引く
適当な範囲に対して罫線を引くマクロを作成し、Visual Basic Editorで記録された内容を確認せよ。
8.4 macro004 : 書式を設定する
フォントの種類やフォントサイズを変更するマクロを作成し、Visual Basic Editorで記録された内容を確認せよ。
8.5 macro005 : 簡単な繰り返し
以下のように、1行おきにセルに色を付けるマクロを作成する。これを手作業でやるのは大変である。以下のような手順で、繰り返し作業を含むマクロを作成してみる。
- まず macro005 として、A2 から F2 までのセル範囲に色を付けるマクロを作成する。
- 繰り返し命令である For 〜 Next 構文を利用して、繰り返し処理を実行する。Visual Basic Editor にて Range("A2:F2") あたりの処理を以下のように変更せよ。プログラムの始まりと終わりを表わす Sub macro005() および End Sub といった命令を削除しないように気をつけること。
注:Cells(x,y) は x行y列目のセルを意味している。例えば Cells(1,1) = "A1" であり、例えば Cells(3,2) = "B3"である。
For i = 0 To 100
Range(Cells(2 * i + 1, 1), Cells(2 * i + 1, 6)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Next i
- Excel2003以前のバージョンでは、マクロのコマンドが若干異なっている。自宅PCのExcelが2003以前のバージョンの場合は、以下のように変更せよ。なお、以下のコマンドはExcel2007でも実行することが可能である。
For i = 0 To 100
Range(Cells(2 * i + 1, 1), Cells(2 * i + 1, 6)).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
Next i
8.6 課題
データファイル sample.dat を利用して、実行結果が下図となるようなマクロを作成せよ。なおこのデータは、20名分の成績データであるものとする。
- 単一のマクロで全ての処理を実行出来るようにすること。また、マクロ名は「kadai」とすること。
- ファイルを開く作業をマクロで自動化することは困難であるため、sample.dat を開く作業は手作業で行い、その時点から実行するマクロを作成すること。
- 平均点 および 標準偏差 をそれぞれ関数 AVERAGE()および STDEV() を用いて算出する。
- 算出された平均点および標準偏差を用いて、全員の偏差値を算出する。なお、偏差値の算出式は以下のとおり。偏差値は小数点以下一桁まで表示すること。
- [偏差値] = ( [素点] - [平均点] ) *10 / [標準偏差] + 50
- 1行目に行を挿入し、「番号」「名前」「点数」「偏差値」といった見出しをつける。
- データ範囲を選択してデータの並び替えを行い、最高点と最低点のセルに色をつける。その後、番号順に並び替える。
- フォントは全て 「MS Pゴシック 9ポイント」とする。
- 提出するExcelファイルには、マクロを1つだけ含むようにすること。
- マクロを記録する際にミスをした箇所など、不要な処理は全て除くこと。
提出期限は来週月曜正午までとする。