最近自分の仕事に「エクセルで表を作った方がいいよ」と言われたのもあって表を作り出した
最初は全部手打ちの誰でも作れる超簡素なものだった
しかし・・・
俺は3年間(ゲーム)プログラムをやってたので直接手打ちとかそんなめんどくさいのはどうなの?って思いだした
つまり、最初にぽーんと値を入れたら後は勝手に全部計算して表を自動的に作成できないかな?ということだ
それが始まりだった
適当に関数入れてちょちょいのちょいと簡単にできるやろーと思ってたが
エクセルっていうのはプログラムを組むのがそもそもの使い方ではない
なので、あるにはあるが複雑なプログラムに対して利便性がない
例えばプログラムでよくありがちな
※ここからプログラムに抵抗がある人は頭痛が始まるので注意、なので無理に見なくてもいいです(笑)※
if( type.Attribute == _Single )
{
Attribute_Single( rRBL, rGNTCAN_List, prev_color );
}
else if( type.Attribute == _Mix)
{
Attribute_Mix( gcan_list, rGNTCAN_List, prev_color, check_tc );
}
(ちなみにこれは俺の過去の遺産です(笑)
こういう感じのif文を見やすく作れない、何より一番つらいのが関数のなかで改行できないのだ
上のプログラム文を改行しないと
if( type.Attribute == _Single )Attribute_Single( rRBL, rGNTCAN_List, prev_color );else if( type.Attribute == _Mix) Attribute_Mix( gcan_list, rGNTCAN_List, prev_color, check_tc );
とかいうわけの分からない死ぬほどみづらい1行が完成する
はっきりいってプロのプログラマーでも1行でこれを見させられると理解するのに20秒はかかる
でも上の改行ありなら2秒でわかる、それぐらい違う
プログラムを複数人で組んでいくには他人への見易さの重要度がめちゃくちゃ高い
こんな程度のプログラムの解析に20秒もかかってたら時代の進化はとてつもなく遅くなるというレベル
話が脱線してしまったが、それでエクセルで俺の思うように動いてくれる関数でプログラムを組んだら
=IF(A5>C5;IF(A13=C5;"";IF(A13="";"";A13-B5));IF(A13=C5;"";IF(A13="";"";A13+B5)))
とかいう余りにも余りにすぎるIF文が完成してしまった・・・
作る時に改行できないもんだから頭の中でこれを考えてたら脳が爆発したので
ノートにまず書く(ちなみに俺はC++がメインだったのでC++言語です)
if(A5 > C5){
if(A12 < C5){
return "";
}else{
if(A12=="") return ""; else return A12-B5;
}
}else{
if(A12 > C5){
return "";
}else{
if(A12=="") return ""; else return A12+B5;
}
}
間違ってるかもしれないし、もっと楽なやり方もあるかもしれないけどもう現役じゃないのでご勘弁を><
それでこれをエクセルの関数に置き換えるとさっきの
=IF(A5>C5;IF(A13=C5;"";IF(A13="";"";A13-B5));IF(A13=C5;"";IF(A13="";"";A13+B5)))
というこれまたプロが見ても20秒、下手したらもっとかかるかもしれない(excelのが分かりづらいから多分かかる)関数が完成したわけだ
ちなみにこのexcelの方程式を導き出すのに1時間以上かかりました・・・あはははは・・・わらえねー
C++の方は結構直ぐに作れたけど、excelのは慣れてないし1行だからみづらいのなんのって
そしてこのブログを書くのに40分かかってた・・・