授業計画 15.アプリケーションの作成 アプリケーションの作成をとおしたプログラムの理解 15.1 確認・提出事項 全レポート(提出遅れ分含む)提出 15.2 授業内容 総復習 15.7 その他 試験は 2 月 7 日(火)の 1 限、301 号教室で行います。 出題範囲は配布したプリントです。 印刷されていないもの(パワーポイントのみで紹介したテクニックなど)は、 テスト範囲に含みません。 語句、演習、例題、レポート等をよく見直しておいてください。 最初の Excel に関する部分も復習しておくこと。 15.3 エクセルの基本 各部名称他 15.4 VBA によるプログラミング 条件判断、分岐、繰り返し命令 コントロール オブジェクトとプロパティとメソッド 15.5 プログラムによる解析 移動平均法 ピーク解析への応用 15.6 知っておくと便利な小技 ※これまでの授業用資料、レポート課題等は http://ace.cen.kagoshima-u.ac.jp/bunseki/proex/proex.htm にアップロードしてあります。 【条件判断、繰り返し命令】 ●条件判断 ※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を加算 ●分岐 【GoTo文】 ラベル名: (ラベル名の後にコロン(:)) GoTo ラベル名 (ここではコロンは不要) 【例題1】 ※GoTo文はラベルとセットで使う。 If文と組み合わせることが多い 多用しすぎるとプログラムが 読みにくくなる ラベル名は何でも良いが、 Sub 条件判断と分岐() プログラムコマンド(IfやGoToなど)と Dim a As String かぶらないこと。 looptop: a = InputBox("なにか入力してください") If a = "" Then GoTo looptop End Sub 変数aが空白なら、GoTo looptopが実行される ●繰り返し命令 【For~Next命令】●教科書pp.70~71 あらかじめ決まった回数だけ同じ命令を繰り返す場合に有効。 文法:For [カウンタ]=[初期値] to [終了値] step [増加値] Next 【例題2】 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を使うことで、ループから強制的に抜けることができる。 【演習】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、ちょっとした工夫で 十分事足りることが多いです。 【オブジェクトとプロパティとメソッド】 【Excelに限らず、Windowsでプログラムを作る上で必ず出てくる言葉が 「オブジェクト」と「プロパティ」と「メソッド」です。】 【オブジェクト】 操作の対象となるもの → ワークシート、セルなど 【プロパティ】 値や属性 → セル内の数値やフォントの大きさなど 基本的には [オブジェクト].[プロパティ]=値 変数=[オブジェクト].[プロパティ] といった表記をする 1行1列のCellオブジェクトの Valueプロパティに「月曜日」を設定 【例1】:Cells(1,1).Value = "月曜日" 値 A1に「月曜日」と表示 Valueプロパティ セルに入力されている内容を示す オブジェクト (正確にはCellsはCellオブジェクトが集まったコレクションという→教科書p.89) 【メソッド】 オブジェクトを操作したり、動作させたりする → 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 '変数の初期化、一段下から始める looptop: i = i + 1 a = Cells(i + 1, 1).Value 'セルのチェック If a = "" Then GoTo loopend '空白だったら終了 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 '平均を注目点の隣のセルに書き込み GoTo looptop loopend: 科学にエクセルを利用する利点は、大量のデータを統計的に処理出来る点である。 計算精度はMathmatica等よりも劣るが、簡単にデータを視覚化することができる。 また、データを入出力できるセルがはじめから用意されていることは、 エクセルでプログラムを作る上での最大の利点である。 おまけ
© Copyright 2024 ExpyDoc