Document

授業計画書
14.アプリケーションの作成
アプリケーションの作成を通したプログラムの理解
14.1 確認・提出事項
・第13回レポート提出
・全レポート(提出遅れ分)提出
14.2 授業内容
総復習
14.3 エクセルの基本
各部名称他
14.4 VBA によるプログラミング
条件判断
繰り返し命令
コントロール
オブジェクトとプロパティとメソッド
14.5 プログラムによる解析
移動平均法
ピーク解析への応用
14.6 知っておくと便利な小技
14.7 その他
試験は 2 月 1 日(火)の 1 限、123 号教室で行います。
出題範囲は配布したプリントです。
語句、演習、例題、レポートをよく見直しておいてください。
※これまでの授業用資料、レポート課題等は
http://ace.cen.kagoshima-u.ac.jp/bunseki/proex/proex.htm
にアップロードしてあります。
「=」を押した後
A2をクリック
「=」を押した後A2をクリックし、
F4キーを押す
=A2
オートフィルを行った場合、
相対セル参照はこれに合わせて
変化するが、絶対セル参照は
常に同じセルを参照し続ける。
=$A$2
=A2~A6
=$A$2
【条件判断、繰り返し命令】
●条件判断
※IF文は、「条件」が満たされていたら、
Then以降の「命令」を実行する。
なお、条件が満たされていない場合は、
※Excelの関数とは文法が異なるので注意! Thenの後ろは実行されない。
【IF文】
If [条件] Then [命令]
●[条件]の例
>
※数学の場合、「以上」は と表現されるが、
=
a=1 :aが1なら
コンピュータの場合は
>=
と表記する。
a>0 :aが0より大きいなら
a<=0 :aが0以下なら
a="演習" :aが文字列"演習"なら
例:If flag="OK" Then a=a+1 :文字列変数flagの内容が"OK"だったら、
aに1を加算
●繰り返し命令
【For~Next命令】●教科書pp.70~71
あらかじめ決まった回数だけ同じ命令を繰り返す場合に有効。
文法:For [カウンタ]=[初期値] to [終了値] step [増加値]
Next
【例題1】
Sub 繰り返し()
Dim i As Integer
For i = 1 To 3
MsgBox i & "回目"
Next
カウンタはあらかじめ宣言しておく。
iが1から3になるまで、(step [増加値]省略時は)
iを1ずつふやす。
iが3になるまで繰り返す。
End Sub
Exit Forを使うことで、ループから強制的に抜けることができる。
【文法:Do While 条件~Loop】・条件が成立する限り繰り返す ●教科書pp.74~75
【文法:Do~Loop While 条件】
Do While~LoopやFor~Nextは
「前判断」と呼ばれる。
Do WhileやForに来た時点で
繰り返しの条件から
はずれていれば、
繰り返しを一度も実行せずに
次の処理に移る。
Do~Loop While
「後判断」と呼ばれる。
Loop Whileに来た時点で
繰り返しの条件判断を行うので、
最低1回は構文が実行される。
【演習】For~Next命令を用いて、1~100までの数字をA1~A100に表示する
プログラムを作成せよ。
ただし、10ループごとにInputboxを表示させ、”終了”と入力がされたら
そこでFor~Next文から脱出するプログラムを作成せよ。
For i = 1 To v
For ii = 0 To 7
Cells(i + 1, 23 + ii).Value = score(i, ii)
Next
Next
ii = 1
Do While True
ii = ii + 1
a = Cells(ii, 21).Value
If a = "" Then Exit Do
v=0
For i = 26 To 29
v = v + Cells(ii, i).Value
Next
Cells(ii, 31).Value = v
Loop
左は、化学生命工学科が申請する予定の
Jabeeの書類を作るための学習時間の
計算プログラムのごく一部です。
実用プログラムでも、データの集計程度なら
For~NextとIf~Then、ちょっとした工夫で
十分事足りることが多いです。
【コントロールまとめ】
●教科書p.108
コントロールとは、フォーム等に配置して使う部品のこと。
コントロールツールボックスから、デザインモードで配置する。
セルやフォームに視覚的な効果をつけることができる。
【ボタン】
コマンドボタン
:押すことで処理を実行できる。
【ボックス】
テキストボックス :文字入力を受け付ける
チェックボックス :オン、オフを設定する。
コンボボックス
:リストの中から一つ選択するか、直接入力する。
リストボックス
:リストの中から一つ選択する。
【他】
ラベル
:文字を表示する。
【オブジェクトとプロパティとメソッド】
●教科書pp.86~89,92~93
【Excelに限らず、Windowsでプログラムを作る上で必ず出てくる言葉が
「オブジェクト」と「プロパティ」と「メソッド」です。】
【オブジェクト】
操作の対象となるもの → ワークシート、セルなど
【プロパティ】
値や属性 → セル内の数値やフォントの大きさなど
基本的には
[オブジェクト].[プロパティ]=値
変数=[オブジェクト].[プロパティ]
といった表記をする
1行1列のCellオブジェクトの
Valueプロパティに「月曜日」を設定
【例1】:Cells(1,1).Value = "月曜日"
値
A1に「月曜日」と表示
Valueプロパティ
セルに入力されている内容を示す
オブジェクト
(正確にはCellsはCellオブジェクトが集まったコレクションという→教科書p.89)
【メソッド】●教科書pp.94~97
オブジェクトを操作したり、動作させたりする → InputBoxなど
【例3】:Application.InputBox("InputBoxメソッド")
Applicationオブジェクト「入力ウィンドウを開け」というメソッド
[省略可能]
2
【移動平均法】
以下のようにデータが分散していたとする。
Y
2
2'
1
7
3
3'
5
4'
5'
4
6'
6
X
1、2、3の平均をとって、これを2'とする。
2、3、4の平均をとって、これを3'とする。
・
・
・
これを繰り返すことによって、ランダムノイズを減少させることができる。
移動平均法のサンプルプログラム
A列に並んでいるデータを3点移動平均法によって平滑化し、
B列に表示するプログラム
Dim a As String 'セルのチェック用
Dim aa As Single, bb As Single, cc As Single, ave As Single
'aa,bb,cc セルの読み込み用、ave 平均用
Dim i As Integer 'カウンタ(Do~Loop内で使用)
i = 1
'変数の初期化、一段下から始める
Do
i = i + 1
a = Cells(i + 1, 1).Value
'セルのチェック
If a = "" Then Exit Do '空白だったら終了
aa = Cells(i - 1, 1).Value '注目点のひとつ上
bb = Cells(i, 1).Value
'注目点
cc = Cells(i + 1, 1).Value '注目点のひとつ下
ave = (aa + bb + cc) / 3 '平均算出
Cells(i, 2).Value = ave
'平均を注目点の隣のセルに書き込み
Loop
科学にエクセルを利用する利点は、大量のデータを統計的に処理出来る点である。
計算精度はMathmatica等よりも劣るが、簡単にデータを視覚化することができる。
また、データを入出力できるセルがはじめから用意されていることは、
エクセルでプログラムを作る上での最大の利点である。
おまけ