|
▼江々 さん:
> MsgBox "最大値は" & WorksheetFunction.Subtotal(4, Intersect(.Cells, .Offset(1, 1)))
>のintersectのところは範囲を示していると思いますが、どのような意味なのでしょうか?
Intersect メソッドは、ある範囲とある範囲の重なる範囲を
求めるときに使います。
今 ある範囲rを
Set r = Range("A1").CurrentRegion
として指定したとき r.Address[A1:D8]が得られたとしますと、
A B C D
1 □□□□
2 □□□□
3 □□□□
4 □□□□
5 □□□□
6 □□□□
7 □□□□
8 □□□□
元の範囲とその範囲を
下へ一行シフトした範囲が重なるセル範囲は
A B C D
1 □□□□
2 ■■■■
3 ■■■■
4 ■■■■
5 ■■■■
6 ■■■■
7 ■■■■
8 ■■■■
9 □□□□
Intersect(r, r.Offset(1))
で求めることができ、具体的には[A2:D8]がその範囲です。
元の範囲とその範囲を右へ1列シフトした範囲とが重なるセル範囲は
A B C D E
1 □■■■□
2 □■■■□
3 □■■■□
4 □■■■□
5 □■■■□
6 □■■■□
7 □■■■□
8 □■■■□
Intersect(r, r.Offset(,1))
で求めることができ、具体的にはその範囲は[B1:D8]です。
いずれのばあいも、求まるセルの最終セルは元のセル範囲の
最終セル[D8]であることにご留意ください。
さて、今回は1行目と1列目の両方を除外した範囲をSubTotalの対象と
したいのですから、これまでの例を応用して、
Set r = Range("A1").CurrentRegion のとき
求めたい範囲(最大値を検索する範囲)は
Intersect(r, r.Offset(1, 1)))
とすればよいことになります。
A B C D E
1 □□□□□
2 □■■■□
3 □■■■□
4 □■■■□
5 □■■■□
6 □■■■□
7 □■■■□
8 □■■■□
9 □□□□□
[B2:D8]が求まります。
このばあいも最終セルは[D8]です。
SubTotal関数は[B2:D8]セル範囲の可視セルだけを対象に
第1引数に応じた統計処理結果を返してくれます。
1:AVG 2:COUNT 3:CountA 4:MAX 5:MIN 9:SUM などなど。
|
|