○第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 件のコメント:
コメントを投稿