2010年2月6日土曜日

第135回目 計算式を複雑形式へコピー

○第135回目 計算式を複雑形式へコピー

 複雑形式といっても、単純なコピーではないといった軽い意味です。
 一群の計算式を作りました。これを文字化してコピー(移植)します。
 しかし、貼付け先が、単純ではありません。既存の式の間にコピーしなければなりません。例えば、一つ飛びにとか二つ飛びにとかです(間のセルには何の影響を与えられません)。

 このような場合に対応するマクロです。さらに、コピー元も単につながっていると限りませんので、こちらも飛びを考慮することにします。
 コピー元全体(例えば、一行複数列)を指定し、そのコピー元の中でコピーしたい計算式はいくつ飛びにあるかを指定します(通常は連続ですね)。
 範囲全体の情報と飛び数を元に計算式の移植回数がわかります。

 次に、貼付け先にいき、最初に貼付けるセルと次に貼り付けるセルを指定します。これで飛び数を把握します。(用途はないと思いますが、次のセルとして行列とも違う場所を指定すると、斜めに計算式が移植されます)
 
 そして、文字化した計算式を文字化を解いて貼付けします。(実際は、計算式という内容のデータを、違うセルに代入するという操作です)。
 このマクロは、今までのものを加工することによってたやすくできます。
 文字化した計算式のコピーあたりが参考になります。
 (第51回目 ちょっとした小物、計算式を文字化してコピー編)

 流れです。
 1.指定範囲の情報をとる(例 1行9列を指定)
 2.コピーもとの最初のセルにカーソルを移す
 3.コピーもとの次のセルを指定(例 先頭から1列空けたセルを指定。移植回数は5回となります。(9-1)/2+1=5)
 4.計算式を文字化して変数に格納する(頭に***をつけます)
 5.(ブック及びシートを変えることが可能)貼付け先を指定
 6.次ぎの貼付け先を指定(列の飛び数と行の飛び数が求まります)
 7.計算式を移植する(コピーより移植という感覚)。文字化を解除したものを計算式として代入する(配列変数の添え字で貼付け場所を結びつける)

 これが利用できる事例に出会ったら、感激のあまり目から涙が出ますよ。

 もう少し改善して、もとの計算式が複数のセット(複数行複数列)になっている場合もできるようにするといいでしょう。

 
Q.飛び飛びコピーに似ていますね。
A.そうでもないんですよ。コピーの場合は計算式の式の中の座標の関係がそのまま維持されます。それではダメなケースがあります。今回のマクロは、コピーではなく移植となっていますので、計算式がそっくりそのまま貼付けられます。
Q.例としてはどんなものがありますか。
A.単純な例では、通常のコピーをしてしまうと、コピー先が2列先であるために列が2列ずれてしまいます。しかし、求めたいのは、1列だけ動かした計算式であるというケースはどうでしょうか。間に何もなければ単純なコピーで可能なのですが、すでに間にも計算式を作ってしまっているので、それはそのままにしておきたい。
Q.それは困りますね。どうやるのですか。
A.別なところに計算式を作ります。この例の場合は、一つの計算式を作っておいて、次の列にその計算式をコピーすればいいのですから、単純ですね。そこでこのマクロで、元の計算式は連続ですが、貼付け先はひとつ飛びにするという指示にすれば、計算式が移植されます。ここで、コピーではなく移植ということが大きな意味をもってくるのです。
 おわかりでしょうか。
Q.わかりました。自分にもそんな事例が出てくるといいですね。
 
 

0 件のコメント: