intRow=Range("B3") .End(xlDown) .Row intRow=31
intP=intRow −2 29=31ー2
K=intP \ 8 3=29 \ 8
整数商=3 となり
M=intP Mod 8 5=29 Mod 8
剰余=5 となる。
For Next で、行の位置や列の位置を割り出しに使用する、共通した計算式が上の表である。
Range("B" & 3+8 * ( i −1) & " : " & "B"
& 2+( 8 * i )) .Select
Range("B" & 3+8 * ( i −1) & " : " ' 1回目の選択範囲の上先端の行番号は、3行目であるが、
' 2回目の先頭は11行目なので、1回目は 3+(8×0)で
' 3行目が選択され、2回目は 3+(8×1) で11行目になる。
' i を係数として使用することができることが分かる。
"B" & 2+(8 * i)) .Select ' 1回目の選択範囲の下端行番号は10行目で、2回目は18行目
' なので、1回目は 2+(8×0) で、2回目は 2+(8×1) になる。
' i を係数として使用することができることが分かる。
intRow=Range("B3") .End(xlDown) .Row ' B3列のデータの端末行番の検知
intP=intRow −2 ' 実際のデータ行数の算出(2は上部の空白行数)
K=intP \ 8 ' 整数商 実際のデータ数を8で割って何個あるのか、
M=intP Mod 8 ' Mod=剰余 その余りの行数
B列のようなデータがあるのを、行数を分割して
表に転記しようとする場合。
データ行を表の行数で割って、何列になるのか、
余りは何行かを計算しなくてはならない。
計算とデータの転記を同時に行うには、プログラムの構造を先に考える必要がある。
1.簡単に行うために、データのコピーと値だけの
貼り付けを使用する。
2.表の行数が8だから、何回かコピーと貼り付けを
繰り返す必要がある。
3.For Next を使用する。
4.計算は、コピーする先端の行番号と、コピーする
端末の行番号が必要である。
5.データは8行分割で何個あるのかを、整数商を使用
する。
6.データを8分割した余りは何行かを、剰余を使用す
る。
基本的なマクロの習得
整数商と剰余の計算
実際に使っているシステムの内容で解説
EXCEL VBA 講座