2007年7月8日日曜日

第18回目 凝った計算式の作り方1

第18回目 凝った計算式の作り方1

 たまに、単純にコピーしたのでは複写できない計算式があります。

 例えば、横に展開されている合計を、縦にするというようなものです。

 コピーの縦横変換で出来るにはできるのですが、操作が入ってしまい、自動化が出来ればと思うものです。

 このような用途はたまに出てきます。



 その1 縦のものを横にする。

 BA5から縦に合計が40個並んでいます。これをB列の50行目から、横に展開します。

 式は簡単なのです。B50に"=BA5"というように計算式を入れていけばいいのです。

 このような場合工夫はないものでしょうか。

 BA5の5のところを+1していけばいいのです。

 B51に文字として、xxx=BA といれます。

 B52に5といれます。

 B52から横に+1していきます。C52は6になり、D52は7になります。

 B53にこれらの文字を結合します。=$B$51 & B52 とし、これを横にコピーします。

 すると、計算結果は、xxx=BA5、xxx=BA6、xxx=BA7…というようになります。

 50行目にコピーします。値のみです。

 ここで頭の"xxx"をとれば、求める数式になるのです。

 これは、置き換えで出来ます。(うまく数式にならないことがあります。原因はよくわかりません。操作を戻して、"50行目にコピーします。値のみです"の後に、同じ場所に、更に文字を"罫線の除くすべて"を指定してコピーしてからするとうまくいきます)



 この考え方は、変数的な要素を入れて文字列を結合し、文字列を数式に戻すということです。





 その2 横のものを縦にする。

 50行目に合計が横にB列から40個並んでいます。これをBA列の5行目から、縦に展開します。

 今度は数字ではなく、文字記号を変数にする必要があります。B,C,D,E…と変化させていき、文字列を結合すればいいのです。

 では、どのように列記号の文字を作っていけばいいのでしょうか。

 簡単です。配列変数にA(1列)からIV(256列)までを入れていき、配列の番号と列記号を対応させておけばいいんです。

 IVは、"I" & "V" ですので、工夫すればすぐ出来ます。力技でもそれなりの時間で出来ます。

 他にもいろいろな工夫があると思います。

 

0 件のコメント: