エクセルシートの修正方法 [システムトレード]
エクセルのワークシートを修正するに当って、計算式が膨大であればあるほど、その修正は困難を極めます。
そうならないためにも、最初からできるだけ修正しやすい計算式にしておく必要があります。
私は複雑な計算式を作成する場合、最近は主に次のことを念頭に置くようにしています。
1.できるだけネスト構造を用いない。
2.条件はANDやORで指定する。
1については、今までにも何度か述べてきました。エクセル上でトレーディングシステムを作成する上で、IF関数は避けて通ることが出来ません。
しかし、条件を入れ子構造(ネスト)にしてしまうと、後からの修正が極めて困難になります。
そこで、IF関数を一つずつで完結させ、それらを"&"や"+"で連結することによって、ネスト構造を避けることができます。
また、エクセル2003以前では、ネスト構造は7重までしか出来ませんでしたが、上記の方法を用いれば、この制限は事実上撤廃できます。
私の場合、長い計算式を修正する際に、それをまずメモ帳にコピーします。ここでは、IF関数の1次結合で計算式が構成されているものとします。
すなわち、例えば次式のような構文です。
=IF(A,x,0)+IF(B,y,0)+IF(C,z,0)+・・・
もちろん、実際にはもっと複雑ですが、基本的には条件A~C~・・・、真の場合の出力x~z~・・・、偽の場合の出力0、という構造です。
条件をうまく設定することにより、ある一つのIF関数のみが真となり、それ以外は全て偽、すなわち0にすることができます。
それらを足し合わせるわけですから、その1次結合は条件に合致した結果のみが出力されることになります。
このような構造であれば、修正も比較的容易になります。
修正に当って、まず計算式をメモ帳にコピーするわけですが、その際、それぞれのIF関数の終わりで改行を入れます。
そうすることで、各要素が判別しやすくなるわけです。
続いて、条件の見直しを行ないます。その際に有効なのが、2の方法です。すなわち、条件を各列(セル)毎に分解し、それらをANDやORで結合してやるわけです。
そうすることで、条件の漏れや重複がないかを確認しやすくなります。
修正が一通り終わりましたら、改行を削除して1行の計算式に戻し、それを元のセルにコピーします。続いて、それを全ての行にコピーし、動作を確認するわけです。
もしも不具合があるようでしたら、同様の作業を繰り返します。
不具合で多いのは、条件の重複ですが、これを見つけやすくするためにも、IF関数の1次結合は有効です。
各IF関数の結合部分を、"+"から"&"に変更してやることで、各IF関数の結果を文字列の集合として表すことができます。
すると、例えば"000400"などというように表示がなされます。IF関数の数が5つだったとしたら、これは4番目のIF関数のみが真で40となり、それ以外は偽で0であることが分かります。
これが例えば"0050400"などと表示されるようですと、条件が重複している可能性があるわけです。
それらをおかしな結果が出るセルに対して行っていくことで、効率的な修正作業を行なうことができることになります。
このようにすれば、複雑な計算式でも要素を分解して確実に修正することが可能です。
もちろん、これは私流の方法ですが、このようなやり方に変えたおかげで、システムの改定作業も比較的スムーズに進めることができるようになりました。
複雑なワークシートに頭を悩ませていらっしゃる方は、一度お試しになってみてはいかがでしょうか。
そうならないためにも、最初からできるだけ修正しやすい計算式にしておく必要があります。
私は複雑な計算式を作成する場合、最近は主に次のことを念頭に置くようにしています。
1.できるだけネスト構造を用いない。
2.条件はANDやORで指定する。
1については、今までにも何度か述べてきました。エクセル上でトレーディングシステムを作成する上で、IF関数は避けて通ることが出来ません。
しかし、条件を入れ子構造(ネスト)にしてしまうと、後からの修正が極めて困難になります。
そこで、IF関数を一つずつで完結させ、それらを"&"や"+"で連結することによって、ネスト構造を避けることができます。
また、エクセル2003以前では、ネスト構造は7重までしか出来ませんでしたが、上記の方法を用いれば、この制限は事実上撤廃できます。
私の場合、長い計算式を修正する際に、それをまずメモ帳にコピーします。ここでは、IF関数の1次結合で計算式が構成されているものとします。
すなわち、例えば次式のような構文です。
=IF(A,x,0)+IF(B,y,0)+IF(C,z,0)+・・・
もちろん、実際にはもっと複雑ですが、基本的には条件A~C~・・・、真の場合の出力x~z~・・・、偽の場合の出力0、という構造です。
条件をうまく設定することにより、ある一つのIF関数のみが真となり、それ以外は全て偽、すなわち0にすることができます。
それらを足し合わせるわけですから、その1次結合は条件に合致した結果のみが出力されることになります。
このような構造であれば、修正も比較的容易になります。
修正に当って、まず計算式をメモ帳にコピーするわけですが、その際、それぞれのIF関数の終わりで改行を入れます。
そうすることで、各要素が判別しやすくなるわけです。
続いて、条件の見直しを行ないます。その際に有効なのが、2の方法です。すなわち、条件を各列(セル)毎に分解し、それらをANDやORで結合してやるわけです。
そうすることで、条件の漏れや重複がないかを確認しやすくなります。
修正が一通り終わりましたら、改行を削除して1行の計算式に戻し、それを元のセルにコピーします。続いて、それを全ての行にコピーし、動作を確認するわけです。
もしも不具合があるようでしたら、同様の作業を繰り返します。
不具合で多いのは、条件の重複ですが、これを見つけやすくするためにも、IF関数の1次結合は有効です。
各IF関数の結合部分を、"+"から"&"に変更してやることで、各IF関数の結果を文字列の集合として表すことができます。
すると、例えば"000400"などというように表示がなされます。IF関数の数が5つだったとしたら、これは4番目のIF関数のみが真で40となり、それ以外は偽で0であることが分かります。
これが例えば"0050400"などと表示されるようですと、条件が重複している可能性があるわけです。
それらをおかしな結果が出るセルに対して行っていくことで、効率的な修正作業を行なうことができることになります。
このようにすれば、複雑な計算式でも要素を分解して確実に修正することが可能です。
もちろん、これは私流の方法ですが、このようなやり方に変えたおかげで、システムの改定作業も比較的スムーズに進めることができるようになりました。
複雑なワークシートに頭を悩ませていらっしゃる方は、一度お試しになってみてはいかがでしょうか。
2009-07-22 20:33
nice!(0)
コメント(0)
トラックバック(0)
コメント 0