少し前に十進ベーシックのプログラムを出したけれど、考えてみれば、エクセルにはベーシック言語がついている。
わざわざ別のソフトをインストールしなくても、そのままエクセルのベーシックを動かせば、プログラムでの計算ができるのである。というわけで、ON-OFFのエクセルベーシック版も作ってみた。以下、アルファベット部分がプログラムで、日本語部分は(本来のプログラムにはない)注釈部分である。 st = Range("b5") 等号の後のRangeは、括弧内で指定したセルの値を扱うための命令。実際のエクセルのセルではB5に計算の時系列の最初の値を入れるようにしている。この式でstという変数に時系列の最初の値が代入される。 vend = Range("b6") 上の式と同じで、vendという変数に時系列の最後の点の値を代入する。 Cells(1, 4) = Range("b1") 左側のCells(1,4)は1行4列目のセル(D1になる)の値で、この式はD1にB1の値を代入するコマンドになる。B1には初期温度を入れるようにしているので、この式が実行されるとD1に初期温度が入る。この式はRange("d1") = Range("b1")と同じ意味なのだけれど、Rangeの式だと後で、セルの場所をプログラムで変えていく時に対応しにくかったので、RangeではなくCellsというコマンドを使っており、それと合わせるためにCellsにしている。 Cells(1, 3) = st セルC1に初期時系列の値を入れている For i = st + 1 To vend ここからnext i迄をiという変数がst+1からvendまで繰り返す Cells(i - st + 1, 3) = i C列のi - st + 1行に、時系列の数字を入れる If i < 0 Then 上の文は条件文といい、if以下が正しければThen以下を実行し、正しくないなら、Else以下に飛ぶ。ここではiという変数がマイナスである場合に式は正しくなる。 Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b3") - Cells(i - st, 4)) * Range("b15") / Range("b19") セルB3は室温、B15は放熱係数、B19は熱容量である。この式は、D列のi - st + 1番目の温度は一つ上のi - st番目の温度に室温と一つ上の炉の温度の差に放熱係数を掛けた放熱量を熱容量で割った分だけ変化するので、それを加算した温度になるという式になっている。 Else 上のifからElseまでで、時系列の値がマイナスの間は、ヒーターをOFFにして、初期温度と周囲の温度の差のみでホットステージの温度が変化するプロセスを記述している。 これ以降は、時系列がプラスになり、ヒーターに温度がかかるようになりうる状況の場合である。 If Cells(i - st - Range("b21"), 4) < Range("b2") Then B21は遅れ係数を入れるセルで、この式は、遅れ係数も勘案した、前のセルの温度が目標温度よりも低い場合に、正しい文となり、次の文が実行される。 Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b17") + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15")) / Range("b19") この文にはヒーターパワーのB17が入っており、先ほどの放熱のみの式と違って、発熱部分も入っている。つまり、目標温度より低かったら、ヒーターをONにすることになっている。 Else Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15") / Range("b19") 目標温度より高い場合にはヒーターは焚かずに放熱にまかせる指定になる。 End If End If Next i プログラムは以上である。(実は、もうすこしややこしくなったプログラムをテキスト上で書き戻しているので、ミスが含まれているかもしれない。)なお、実際には、上のプログラムは Sub ONOF() End Sub という部分に挟まれている。 このプログラムを動かすと、当たり前であるけれども、パラメータが同じなら。エクセルシートの計算式を書き込んだ場合と同じ結果が得られる。違いは、ファイルサイズで、エクセルシートに式を書き込むのに比べて遙かに小さなサイズになる。
by zam20f2
| 2010-05-15 21:17
| 科学系
|
Comments(0)
|
リンク
お気に入りブログ
カテゴリ
タグ
SCI(841)
道具(405) 組織写真(314) プロジェクトT(216) 顕微鏡(180) Ch(130) 散歩(119) 製図(99) N相(70) キラル(65) のほのほ(57) Sm相(48) 表面・界面(42) プロジェクトLC(40) B/W(30) Iso相(30) 新興織物撰集(21) SmA相(20) 結晶相(12) 転傾(11) 最新のコメント
記事ランキング
以前の記事
2024年 03月
2024年 02月 2024年 01月 2023年 12月 2023年 11月 2023年 10月 2023年 09月 2023年 08月 2023年 07月 2023年 06月 2023年 05月 2023年 04月 2023年 03月 2023年 02月 2023年 01月 2022年 12月 2022年 11月 2022年 10月 2022年 09月 2022年 08月 2022年 07月 2022年 06月 2022年 05月 2022年 04月 2022年 03月 2022年 02月 2022年 01月 2021年 12月 2021年 11月 2021年 10月 2021年 09月 2021年 08月 2021年 07月 2021年 06月 2021年 05月 2021年 04月 2021年 03月 2021年 02月 2021年 01月 2020年 12月 2020年 11月 2020年 10月 2020年 09月 2020年 08月 2020年 07月 2020年 06月 2020年 05月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 12月 2019年 11月 2019年 10月 2019年 09月 2019年 08月 2019年 07月 2019年 06月 2019年 05月 2019年 04月 2019年 03月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 09月 2018年 08月 2018年 07月 2018年 06月 2018年 05月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 11月 2017年 10月 2017年 09月 2017年 08月 2017年 07月 2017年 06月 2017年 05月 2017年 04月 2017年 03月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 09月 2016年 08月 2016年 07月 2016年 06月 2016年 05月 2016年 04月 2016年 03月 2016年 02月 2016年 01月 2015年 12月 2015年 11月 2015年 10月 2015年 09月 2015年 08月 2015年 07月 2015年 06月 2015年 05月 2015年 04月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 09月 2014年 08月 2014年 07月 2014年 06月 2014年 05月 2014年 04月 2014年 03月 2014年 02月 2014年 01月 2013年 12月 2013年 11月 2013年 10月 2013年 09月 2013年 08月 2013年 07月 2013年 06月 2013年 05月 2013年 04月 2013年 03月 2013年 02月 2013年 01月 2012年 12月 2012年 11月 2012年 10月 2012年 09月 2012年 08月 2012年 07月 2012年 06月 2012年 05月 2012年 04月 2012年 03月 2012年 02月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 11月 2009年 10月 2009年 09月 2009年 08月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 |
ファン申請 |
||