○第139回目 列・行の操作、若干の余興も含む(その1)
列・行の操作とは何でしょうか。
列・行という言葉の中には、表の中での列・行という意味も含んでいます。違いは、シートの中の列・行と表の中の列・行ということになります。
列・行の操作ですから、まずは削除・追加ということが思い浮かびます。
さらに、このテーマでは、列・行の逆転及び並べ替えということを扱います。
列・行の逆転って…
左右の列・上下の行を入れ替えるということです。
並べ替えって…
指定する順番に列・行を入れ替えてしまうことです。
=⇒とすると、逆転はこれに含まれるのではないでしょうか。
・そのとおりです。操作のスムーズさの点で分けべきかどうかを考えてください。
=⇒ちょっと待った。逆転でも並べ替えでもいいのですが、計算式はどうなるのですか。
・ニーズとしては、逆転でも並べ替えでも、元にあった数値がそのままの値で移動するということが第一ではないでしょうか。ですから、計算式もまったく変わらずに移動します。
=⇒既存のコマンドではそういうのはないのですか。
・調べてみましが、ありませんでした。調べ方が足らないかもしれません。
=⇒通常の操作との差は。メリットはいかに。
・列・行の削除・追加は、もしかしたら通常の操作のほうがいいかもしれません。しかし、全体的に指示して一気に変えるとなるとメリットが出てくると思います。つまり、この列(または行)は削除、ここに3列追加するとか、複数にわたって指定をしてから、一気に処理する場合ということです。表の中の列・行を削除・追加するという時は、よりメリットが出てくるでしょう。
逆転・並べ替えは、その事例があるとしたら、その効果のほどは知れません。
=⇒"この列(または行)は削除、ここに3列追加するとか、複数にわたって指定をしてから"ってどういう意味ですか。
・表の外側に余分な行と列を一つ作ります。そこに、削除は99、追加は10*追加したい数を入れていき、その部分を含めて表全体を指定して、一気に処理をするというものです。イメージはつきましたでしょうか。
=⇒"若干の余興"とはどういう意味ですか。
・純粋な列・行の削除・追加は通常の操作が早いと思うこと、また、今回の処理が出てくる頻度がまれかもしれないことを、考えて、そのような言葉にしました。
=⇒わかりました。では、進めてください。
列・行の削除・追加について
表の左と上に大体は空白の部分があるのでそれを利用します。ない場合は、通常の操作で追加してください。
その部分に、削除したい場合は99、その部分の前に追加したい場合は、追加したい数かける10(10の倍数)を入れてください。また、一番左端の一番上には、本当の列・行単位での処理か、表における列・行単位の処理(セル単位の処理)かの区分の入れてください。前者はなにもなし、後者は999を入れます(これはニーズによって逆でもいいです)。
処理情報を含めた表の範囲を指定した後実行します。
1.一列目、一行目の情報を取得します。
2.情報を一つ一つ見ていきながら削除・追加をします。本当の列・行の場合と表における列・行の場合で、削除・追加処理の場所情報のパラメータが変わります。
3.処理は、削除・追加で列番号等が変わってしまうので、後ろからしていきます。
今回の基本的な機能は、列・行の削除・追加です。どう書くのでしょうか。
【セル単位の場合】
行関係の削除
Range(Cells(gyo1+i,retu1), Cells(gyo1+i,retu9)).Delete Shift:=xlShiftUp
行関係の追加
Range(Cells(gyo1 + i, retu1), Cells(gyo1 + i, retu9)).Insert Shift:=xlDown
列関係の削除
Range(Cells(gyo1,retu1+i), Cells(gyo9,retu1+i)).Delete Shift:=xlShiftToLeft
列関係の追加
Range(Cells(gyo1,retu1 + i), Cells(gyo9, retu1 + i)).Insert Shift:=xlToRight
【列・行単位の場合】
行の削除
Rows(gyo1 + i).Delete
行関係の追加
Rows(gyo1 + i).EntireRow.Insert
列関係の削除
Columns(retu1 + i).Delete
列関係の追加
Columns(retu1 + i).EntireColumn.Insert
注意点は2つあります。
処理の順番としては、削除を行なって、それから追加をします。すると、追加のときに、処理対象となる列数(または行数)が変わってしまうことです。これが一つです。
これは削除した列数(または行数)をカウントして、追加処理の際に、列数(または行数)及び終わりの列(または行)を更新しておきます。
もう一つは、追加の場合の判断と追加する数の判断です。
ここでは、10の倍数を入れるとしていますので、10で割り切れるということを、追加と判断します。追加する数は、10で割った商となります。30であれば、3列(または行)追加と判断します。
セル単位か本来の列・行単位化で、ロジックは二つできますが、順番にくみ上げていけばそれほどの大変さはありません。しかし、注意事項の1に十分気をつけてください。
2010年3月27日土曜日
登録:
コメントの投稿 (Atom)

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