データを1行ずつループして処理する方法を解説します。
For~Nextステートメントを使用します。
基本構文
For カウンタ変数 = 初期値 To 最終値 ' ここにループしたい処理 Next
サンプルコード
Dim ws処理シート As Worksheet Set ws処理シート = ThisWorkbook.Worksheets("○○") Dim 最終行 As Long 最終行 = ws処理シート.Cells(ws処理シート.Rows.Count, 1).End(xlUp).Row ' すべての行をループ Dim R As Long For R = 2 To 最終行 ' 処理例:C列=A列×B列 ws処理シート.Cells(R, 3) = ws処理シート.Cells(R, 1) * ws処理シート.Cells(R, 2) Next
解説
データを1行ずつループするには、
For~Nextステートメントを使用します。
使用した変数を1ずつ加算してループする機能ですので、
上記のコードはRが2,3,4,…,最終行までループします。
このループを使う場合はワークシートをちゃんと変数に入れておきましょう。
ThisWorkbook.Worksheets("○○")をいちいち書くのは冗長ですし、
かと言ってWorksheets("○○")と書いてしまうと、
なにかの拍子にアクティブブックが変わると不具合になります。
また、Forループに使用するカウンタ変数の名前も重要で、
よく見かける「i」は避けた方が良いです。
この「i」はカウンタを意味するイテレーターの頭文字なのですが、
なんでもiを使っているとWorksheets(i)など他のカウンタと被ってしまいます。
For i = 1 To Worksheets.Count For i = 2 To 最終行 Worksheets(i).Cells(i, 1) = 1 ' ← こうは書けない Next Next
結果Cells(j, 1)などj、kを単に登場順に当て始めてしまうと、
どの変数が何のためのものかわからず訳が分からなくなります。
変数名を付ける際は、
Dim R as long ws処理シート.Cells(R, 1)
Dim 行 as long ws処理シート.Cells(行, 1)
など、見るだけでなんの変数かわかるように名付けましょう。
これだけでコードが読みやすくなり、変数の取り違えを防げます。
「カウンタ変数は何のカウンタかわかるように命名する」
というルールでコーディングしていきましょう。
よろしければこちらもどうぞ。
www.limecode.jp