| 
    
     |  | ▼江々 さん: >   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 などなど。
 
 |  |