ループ
日記
エクセルVBA触る人は遭遇した事があると思います。
ループは正常だけど、
比較の仕方を考えると、
頭の中がループする。
例えば、
A 10
A 20
B 30
って並んでたときに、
左の項目ごとの集計を取れ 的な処理。
私の場合、こういうときはレコードが無くなるまで
ひたすらループかけて、その中で前後の行と比較して、
必要ならば処理を動かす。
というやり方で進めることが多いです。
Do while not cells(x,1)=""
If cells(x,1) = cells(x + 1,1) then
call 処理A
End if
x = x + 1
Loop
みたいな?
で、そのIF文なんですが、
次行と比較すべきか、前行と比較すべきか。
ってとこで毎回悩む。
いや、やり方次第で、どっちと比較しても
大抵は問題ないんですけどね。
何度も同じようなロジックは作ってるんですが、
それによってループが行き過ぎないか?
とか、比較の条件あってるか? とか、
あれ、でも条件かえるとループおかしくなるよな?
etc...
実際、ループ自体の条件式は
高確率で問題無いんです。
一番の問題なのは、中のIF文の
条件式を考える時に、
脳みそが無限ループするんです。
まぁ所詮VBAなんで、
とりあえず実験すりゃいっかー
的な感じで確認して進めちゃうんですが、
このデバッグモードに頼りすぎると、
CoBoLとかやる時が怖い。
コンパイルエラーで止まるならまだ良いとして、
コンパイルは通ったのに、いざ実行したら無限ループとかが
とにかく怖い。
環境によっては、自分で処理中断できず、
ホスト管理者に
無限ループしちゃった
って伝えないと止まらず、
その止まるまでの間、ホストにバカみたいな負荷を
かけてしまう可能性があるから怖い。
実際、テスト機でとはいえ、
そんな事をしてた人を知ってるだけに、余計怖い。
臆病なくらいがちょうどいいのよねっ
とは良く言ったもんです。
でもガンキャノンはそんな好きじゃないです。
タンクが良いです。
ループは正常だけど、
比較の仕方を考えると、
頭の中がループする。
例えば、
A 10
A 20
B 30
って並んでたときに、
左の項目ごとの集計を取れ 的な処理。
私の場合、こういうときはレコードが無くなるまで
ひたすらループかけて、その中で前後の行と比較して、
必要ならば処理を動かす。
というやり方で進めることが多いです。
Do while not cells(x,1)=""
If cells(x,1) = cells(x + 1,1) then
call 処理A
End if
x = x + 1
Loop
みたいな?
で、そのIF文なんですが、
次行と比較すべきか、前行と比較すべきか。
ってとこで毎回悩む。
いや、やり方次第で、どっちと比較しても
大抵は問題ないんですけどね。
何度も同じようなロジックは作ってるんですが、
それによってループが行き過ぎないか?
とか、比較の条件あってるか? とか、
あれ、でも条件かえるとループおかしくなるよな?
etc...
実際、ループ自体の条件式は
高確率で問題無いんです。
一番の問題なのは、中のIF文の
条件式を考える時に、
脳みそが無限ループするんです。
まぁ所詮VBAなんで、
とりあえず実験すりゃいっかー
的な感じで確認して進めちゃうんですが、
このデバッグモードに頼りすぎると、
CoBoLとかやる時が怖い。
コンパイルエラーで止まるならまだ良いとして、
コンパイルは通ったのに、いざ実行したら無限ループとかが
とにかく怖い。
環境によっては、自分で処理中断できず、
ホスト管理者に
無限ループしちゃった

って伝えないと止まらず、
その止まるまでの間、ホストにバカみたいな負荷を
かけてしまう可能性があるから怖い。
実際、テスト機でとはいえ、
そんな事をしてた人を知ってるだけに、余計怖い。
臆病なくらいがちょうどいいのよねっ
とは良く言ったもんです。
でもガンキャノンはそんな好きじゃないです。
タンクが良いです。