○第140回目 列・行の操作、若干の余興も含む(その2)
比較的簡単な、列・行の逆転をやります。
記述が面倒になりますので、用語として、"列・行"を"列"で代表させます。
このマクロは範囲を指定してからはじめます。その範囲とは、逆転したい範囲です。つまり、2列N行となります。一列だけ指定して、その右隣の列を逆転させるという指示の仕方もありますが、自分の意思で逆転したい範囲を明示したほうがいいと思います。
2列2行の場合は、ダミー行を挿入して3行にするなど、工夫してください。
流れです。どちらが2であるかで方向を判断します。
1.指定範囲の座標情報を取得する。逆転の方向は指定範囲の数が2のほうをとる。
2.最初の1列目から、計算式情報(ない場合は数値情報)を配列変数に格納します。
3.2列目の計算式情報を1列目に移します。
4.格納してある配列変数の内容を、2列目に移します。
眼目は計算式情報を取得して移植するところにあります。
2.の部分ですが、次の記述で、計算式がない場合は値が取り込まれます。
ww(i) = Cells(gyo1 + i * yoko, retu1 + i * tate).Formula
列の逆転という前提ですので、yokoとtateには、それぞれ1と0が入っています。
3.の部分です。
Cells(gyo1 + i * yoko, retu1 + i * tate) = Cells(gyo1 + i * yoko + tate, retu1 + i * tate + yoko).Formula
入れ先は計算式の指定をしなくても大丈夫でした。
ここでの"+ tate"と"+ yoko"の使い方は邪道でしょうね。
4.の部分です。
Cells(gyo1 + i * yoko + tate, retu1 + i * tate + yoko) = ww(i)
なお、iは0から始まっています。
=⇒これを使う事例はどのくらいあるのでしょうか。
・エクセルで表を作り、一通りできた後で、よくよく考えてみれば、この部分を逆にしておいたほうが体裁がいいな、とか、体系が崩れているのここを逆にしたいな、ということはあります。問題の頻度は…、それなりにあるかもしれない、といった程度でしょうか。
複雑な計算式が絡まない場合であれば、通常の操作で気にしないでやっているのではないでしょうか。複雑な計算式が絡むとそうはいきません。多分、あきらめてしまう場合もあるのではないでしょうか。それゆえ記憶に残らないという場合もあると思います。
実は、列の逆転は、既存のマクロで可能なのです。すなわち、計算式を文字化してコピーするという機能を使うのです。でもこのマクロのほうがはるかにすっきりいきます。
一時的にどこかに計算式を移植しておいて、該当する箇所に計算式を移植していけば、よいのです。

0 件のコメント:
コメントを投稿