2007年10月27日土曜日

第54回目 ちょっとした小物、その他編

○第54回目 ちょっとした小物、その他編

 小物その他編です。

 1.セルの結合
 2.セルの結合の解除
 3.文字を中央(横)にセット
 4.文字を中央(縦)にセット
 5.連番入力
 6.エクセルで使用できるユーザー関数

 1から4については、操作マクロ記録でマクロをとってください。1の場合は合わせて文字中央(横及び縦)を入れてください。通常はそのように使うはずです。

 基本的なコマンドとまとめておきます
 基本的なコマンド(範囲を指定した後に実行)
・セルの結合
  Selection.Merge
・セルの結合を解除
  Selection.UnMerge
・字を横中央に
  Selection.HorizontalAlignment = xlCenter
・文字を縦中央に
  Selection.VerticalAlignment = xlCenter

 5.連番入力
 これは指定範囲に連番を入れるマクロです。
 付加機能としては、
 (1)縦だけでなく横も出来る
 (2)スタートの値が決められる(通常は最初のセルに入っている値を元にする)
 (3)1だけでなく、任意の飛び数が決められる

 詳しく説明すると
 (1)指定範囲の座標によります。最初と最後で行が変わっていれば縦、列が変わっていれば横と判断します。指定範囲の座標取得、gyo1とgyo9が等しいか否かです。
 (2)input関数による指定
   InputBox("最初の数値を入れてください。そのままは、0", , 0)
 (3)input関数による指定
   InputBox("偏差を入れてください。通常は、1 ", , 1)
 となります。

 具体的に番号をセルにいれるのは、縦横で別処理になります。
 一例として、
  If flag1 = 1 Then  '横方向のコピー
   For i = 1 To retu_cnt
    Cells(gyo11, retu11 + i) = Cells(gyo11, retu11) + i * no1
   Next i
  End If

 6.エクセルで使用できるユーザー関数
 自分で定義した関数をエクセル本体で使うということです。
 関数の入力は、Alt+I+Fで呼び出します。その中で"関数の定義"の中で"ユーザー定義"を選択すると、ユーザー関数として定義したものが使用できます。

 Function 加重按分01(ByVal nn1, nn0, mm, keta As Double) As Double
'nn1は個別値,nn0は合計値,mmは按分したいもの,ketaは四捨五入した時の桁
  加重按分01 = Round(mm * (nn1 / nn0), keta)
 End Function
 というように、モジュールに書き込みます。

 subからFunctionを呼び出す時は、
 xx = 加重按分01(SS1,SS2,SS3,SS4)
 ( )内に変数を記述ということが通常のマクロとは違うところです。
 四つの変数には、呼び出す前に計算の元となる数値を入れておいてください。

 エクセルの中での使用の仕方は、Alt+I+Fで該当する関数を選ぶと選択形式になって簡単に記述できます。
 直接、計算式を作る場合は、"=加重按分01(D21,D8,D11,D6)"とセルに書き込めばいいのです。

 よく使う計算式をマクロで作って本体のエクセルで使う、という芸当が出来るようになります。オーダーメイドでかっこいい、という感じでしょうか。

 筆者の場合は、列番号を列記号に変換する関数をユーザー定義関数として使っています。
 しかし、エクセルの機能があまりに広いので、特別にほかに作る必要性がなかなか見つからないと思いますが、ニーズをかぎ分ける嗅覚を敏感にすると出てくるかもしれません(この方式があること自体考えたことがないというのが正直なところなのでないでしょうか。有効活用を本気になって考えてみれば宝の山…、かも知れません)。

0 件のコメント: