人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセル VBAに関する質問です。あるRange を指定して、その最大値、最小値を得る関数はなんでしょうか? ワークシート関数を使えばできるのですが、ブック、シートの移動があるので、避けたいです。

●質問者: kaiketsu
●カテゴリ:コンピュータ
✍キーワード:VBA エクセル 関数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント

直接最大最小を求める関数は無いので、ループで求めることになるけど、

ワークシート関数をVBAから使えばご期待のことができると思いますよ。


Sub test2()
 Dim r As Range
 Set r = Range("A1:E3")
  '最大
 Debug.Print Application.WorksheetFunction.Max(r)
  '最小
 Debug.Print Application.WorksheetFunction.Min(r)
End Sub

http://q.hatena.ne.jp/

◎質問者からの返答

この場合は、ブック、シートの移動は必要だと思うのですが、どうなんでしょうか? また、range の指定は、workbooks("aaa").sheet("bbb").range("C1:C300") みたいには書けないのでしょうか?


2 ● p332
●35ポイント

Rangeオブジェクトを取得する方法は、下記の通り何通りかあります。

1.番地で指定する

Set Rng = Range(Sheets(1).Cells(1,1), Sheets(1).Cells(1,1))

Set Rng = Sheets(1).Range("A1:A2")

2.名前で指定する(名前の定義は、Ctrl+F3からできます)

Set Rng = Sheets(1).Range("セル範囲の名前")

3.マウス等で選択している範囲

Set Rng = Selection

4.その他のさまざまなプロパティ、メソッド

Set Rng = Cells(1, 1).Find(・・・)

また、セルの親オブジェクトであるシートオブジェクトを指定しない場合は、アクティブなシートを指定したとみなされます。

VBAが実行される状況がよくわからないですが、3の方法で、VBAを実行する前に選択すれば問題なくセル範囲が習得できると思います。

セルの選択をしない場合は、セル範囲に名前を定義しておくと、シートを別のブックに移した時や、同一ブック内の別のシートに移した時でも、

同じ名前で異動先のセルを参照できます。

セルを取得した後は、結局ワークシート関数(Application.Function)を使うことになると思います。

名前の定義について:

http://home.att.ne.jp/zeta/gen/excel/c03p05.htm

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ