|
▼愛子 さん:
こんにちは
>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 とだけ記述しますと、その式のセルと同じ行 とか、その式のセルと同じ列 というように
みなしてくれます。
|
|