| 
    
     |  | ▼愛子 さん: 
 こんにちは
 
 >1.z = .Rows.Count---の意味は、月を表す行を計算するという事で
 > z = .Rows.Count End Withの手前にコードを入れておられるのですね。
 
 z = .Rows.Count がくくられている With は With .Range("A3", .Range("A" & .Rows.Count).End(xlUp))
 つまり、A3から始まって、名前が存在するA列の最後のセルまでの領域です。
 ですから、その .Rows.Count は、その領域のセル数、つまり人数ということで、これを取得するために
 End With の前に実行しています。
 (End With が実行されてしまうと、このくくり情報がなくなってしまうので)
 
 >では、 .Range("B2:N2").FormulaR1C1 = "=SUM(r[1]c:r[" & z & "]c)"
 >End Withの手前に書かず次に書かれいるのはどういう理由なのでしょうか?
 
 End With の前に書くと、A3:A● の領域を相手にしますね。
 で、ここでは、その領域ではなく B2:N2 という 横の行領域(書く列の行形式領域)を相手にしたいわけです。
 
 End With で、A3:A● に対する With がリセットされますと、今度は、その上の With で、まだ End With が
 記述されていないもの、つまり、With Sheets("一致") が有効になります。
 (With/End With のネストといいますか、二重になっています。)
 
 ですから、.Range("B2:N2") は Sheets("一致").Range("B2:N2") ということになり、式をセットすべき
 正しい領域を際示しているわけです。
 
 >2. "=SUM(r[1]c:r[" & z & "]c)"の意味、相対指定ですね、
 
 そうですね。式は、ご存知だと思いますが =SUM(C3:C10) のように記述する 【A1形式】というものと
 R 行の値 C 列の値 といったものを使って記述する 【R1C1形式】というものがあります。
 今回、A1形式でも書くこともでき、また、そのほうが見た目、わかりやすかったかもしれませんが
 ついつい、R1C1形式を使ってしまいました。
 
 R1C1形式では
 
 R10 これは 絶対指定で 10行目 ということになります。また C5 これは 5列目という絶対指定になります。
 一方 R[1] と書きますと、その式がセットされるセルから1つ下にいったセルという意味になります。
 C[10] と書きますと、式のセルから右に10セル移動したセルということになります。
 
 で、単に R とか C とだけ記述しますと、その式のセルと同じ行 とか、その式のセルと同じ列 というように
 みなしてくれます。
 
 
 |  |