Excel VBAで業務を自動化するとき、セルの値をそのまま処理するだけでなく、一度変数に格納してから使う場面は非常に多くあります。
例えば、商品コード、氏名、金額、日付、在庫数などをセルから取得し、条件判定や転記、集計、メッセージ表示などに使う場合です。
セルの値を直接何度も参照することもできますが、実務では変数に格納した方が、処理の意味が分かりやすくなり、後から修正しやすいコードになります。
特にループ処理では、1行ずつセルの値を取得し、変数に格納しながら処理する書き方が基本になります。
この記事では、VBAでセルの値を変数に格納する基本から、ループ処理で複数行のデータを扱う方法、実務で壊れにくいコード設計までを解説します。
目次
- ✅ VBAでセルの値を変数に格納する基本
- ・セル1つの値を変数に格納する基本コード
- ・変数に格納することで処理の意味が見えやすくなる
- ✅ VBAでセルの値を格納するときの変数型の考え方
- ・よく使う変数型の例
- ・セルの値を扱うときにVariantが便利な場面
- ✅ VBAでループ処理を使ってセルの値を変数に格納する方法
- ・A列の値を1行ずつ変数に格納する基本コード
- ・この書き方が実務で扱いやすい理由
- ✅ VBAで複数のセルの値を複数の変数に格納する方法
- ・商品管理表の値を変数に格納するコード
- ・意味の分かる変数名を使うメリット
- ✅ VBAでセルの値を変数に格納するときの空白・異常値対策
- ・数値かどうかを確認してから変数に格納するコード
- ・なぜ一度Variantで受け取るのか
- ✅ VBAで変数に格納した値を条件判定に使う方法
- ・在庫数を変数に格納して発注対象を判定するコード
- ・定数を使って条件を分かりやすくしている理由
- ✅ VBAで変数に格納した値を別シートへ貼り付ける考え方
- ・条件に合うデータだけを別シートへ出力するコード
- ・貼り付け先の行を別変数で管理する理由
- ✅ VBAでセルの値を変数に格納するときに直接参照より安全な理由
- ・セルを直接参照する書き方
- ・変数に格納してから判定する書き方
- ・実務では変数経由の方が変更に強い
- ✅ VBAでセルの値を変数に格納する完成形コード
- ・実務で使いやすい変数格納とループ処理のコード
- ・この完成形コードで意識している実務設計
- ✅ VBAでセル値の格納処理を再利用しやすくする考え方
- ・数値として安全に変換する関数
- ・関数化が向いている処理
- ✅ まとめ:VBAでセルの値を変数に格納するならループ処理と設計が重要
✅ VBAでセルの値を変数に格納する基本
VBAでセルの値を変数に格納する処理は、非常に基本的な内容です。
しかし、ここを曖昧にしたままコードを書き始めると、後から処理の意味が分かりにくくなります。
特に実務では、「どのセルの値を何として扱っているのか」が分からないコードは、修正や引き継ぎで大きな負担になります。
また、セルを直接何度も参照すると、処理が長くなったときに可読性が下がります。
変数に一度格納しておけば、値の意味を名前で表現できるため、コード全体の見通しが良くなります。
まずは、セルの値を変数に入れる基本形を確認しておきましょう。
・セル1つの値を変数に格納する基本コード
Sub StoreSingleCellValue()
Dim customerName As String
'A2セルの値を顧客名として変数に格納する
customerName = Worksheets("Sheet1").Range("A2").Value
MsgBox customerName
End Sub
このコードでは、Sheet1のA2セルの値を customerName という変数に格納しています。
Range("A2").Value を直接 MsgBox に書くこともできますが、変数に入れることで「この値は顧客名として使う」という意味が明確になります。
・変数に格納することで処理の意味が見えやすくなる
例えば、次のような書き方も動きます。
MsgBox Worksheets("Sheet1").Range("A2").Value
しかし、この書き方だけでは、そのセルの値が何を表しているのか分かりません。
一方で、次のように変数へ格納すると、コードを読む人に意図が伝わりやすくなります。
customerName = Worksheets("Sheet1").Range("A2").Value
MsgBox customerName
実務では、数か月後の自分や別の担当者がコードを見る可能性があります。
そのため、少しコードが長くなっても、値の意味が分かる変数名を使うことが重要です。
✅ VBAでセルの値を格納するときの変数型の考え方
セルの値を変数に格納するとき、意外と重要なのが変数の型です。
文字列なのか、数値なのか、日付なのかによって、適切な型は変わります。
ここを適当に決めてしまうと、実務データに空白や想定外の文字が入ったときにエラーになることがあります。
特にExcelのセルには、見た目は数値でも実際には文字列として入っているケースがあります。
また、日付も表示形式によって見え方が変わるため、扱いを誤ると判定ミスにつながります。
変数型は、処理の安定性と保守性に直結するため、最初にしっかり考えておきましょう。
・よく使う変数型の例
Dim customerName As String
Dim salesAmount As Double
Dim orderDate As Date
Dim stockQuantity As Long
Dim cellValue As Variant
実務では、次のように考えると分かりやすいです。
- 名前やコード:
String - 件数や行番号:
Long - 金額や小数を含む数値:
Double - 日付:
Date - 空白やエラー値の可能性があるセル:
Variant
・セルの値を扱うときにVariantが便利な場面
セルには、空白、文字列、数値、日付、エラー値など、さまざまな値が入る可能性があります。
そのため、最初にセルの値を受け取る段階では Variant を使うと安全な場合があります。
Sub StoreCellValueAsVariant()
Dim cellValue As Variant
cellValue = Worksheets("Sheet1").Range("A2").Value
Debug.Print cellValue
End Sub
ただし、すべてを Variant にすればよいわけではありません。
例えば、在庫数として計算に使う値であれば、数値かどうかを確認したうえで Long に変換する方が安全です。
✅ VBAでループ処理を使ってセルの値を変数に格納する方法
実務では、1つのセルだけでなく、一覧表の複数行を順番に処理することが多くあります。
このとき、各行の値を変数に格納しながら処理すると、コードの意味が非常に分かりやすくなります。
ただし、ループ内で変数を使う場合は、「今どの行の値を扱っているのか」を意識することが重要です。
変数名が曖昧だったり、セル参照を直接何度も書いたりすると、処理が複雑になったときに読みづらくなります。
ループ処理では、行番号、取得する値、処理対象シートを明確に分けて書くことが大切です。
ここでは、一覧表を1行ずつ処理する基本形を確認していきます。
・A列の値を1行ずつ変数に格納する基本コード
Sub StoreValuesInLoop()
Dim targetWorksheet As Worksheet
Dim currentRow As Long
Dim lastDataRow As Long
Dim customerName As String
'処理対象のシートを明示する
Set targetWorksheet = Worksheets("Sheet1")
'A列を基準に最終行を取得する
lastDataRow = targetWorksheet.Cells(targetWorksheet.Rows.Count, "A").End(xlUp).Row
'2行目から最終行まで、セルの値を変数に格納する
For currentRow = 2 To lastDataRow
customerName = targetWorksheet.Cells(currentRow, "A").Value
Debug.Print customerName
Next currentRow
End Sub
このコードでは、A列の値を1行ずつ customerName に格納しています。
・この書き方が実務で扱いやすい理由
このコードでは、次の役割を変数で分けています。
targetWorksheet:処理対象のシートcurrentRow:現在処理中の行lastDataRow:データの最終行customerName:セルから取得した値
このように役割を分けておくと、後から処理を追加するときに迷いにくくなります。
例えば、顧客名が空白ならスキップする、別シートへ転記する、条件に応じてメッセージを出す、といった処理を追加しやすくなります。
ループ処理で1行ずつ値を変数に格納する方法は、VBAの基本として非常に重要です。
次のステップとしては、複数のセルの値をまとめて「配列」として取得することで、処理速度を大きく改善できる場面も増えてきます。
【VBA】セルの値を変数配列に取得:ループ処理を実務で使いこなす方法の記事では、セルの値を変数配列に取得する方法を、実務での活用例とあわせて詳しく解説しています。
✅ VBAで複数のセルの値を複数の変数に格納する方法
実務の表では、1列だけを処理することは少なく、複数列の値をまとめて扱うことが多くあります。
例えば、商品コード、商品名、在庫数、単価などを同じ行から取得し、それぞれの意味に合わせて変数へ格納します。
このとき、変数名を適当に付けてしまうと、どの値を扱っているのか分からなくなります。
また、列番号を直接何度も書くと、列構成が変わったときに修正漏れが起きやすくなります。
複数のセル値を扱う場合は、変数名と列指定の整理がとても重要です。
ここでは、商品管理表を例に、複数列の値を変数に格納する方法を解説します。
・商品管理表の値を変数に格納するコード
Sub StoreMultipleCellValues()
Dim targetWorksheet As Worksheet
Dim currentRow As Long
Dim lastDataRow As Long
Dim productCode As String
Dim productName As String
Dim stockQuantity As Long
Dim unitPrice As Double
Set targetWorksheet = Worksheets("Sheet1")
lastDataRow = targetWorksheet.Cells(targetWorksheet.Rows.Count, "A").End(xlUp).Row
For currentRow = 2 To lastDataRow
productCode = targetWorksheet.Cells(currentRow, "A").Value
productName = targetWorksheet.Cells(currentRow, "B").Value
stockQuantity = targetWorksheet.Cells(currentRow, "C").Value
unitPrice = targetWorksheet.Cells(currentRow, "D").Value
Debug.Print productCode & " / " & productName & " / " & stockQuantity & " / " & unitPrice
Next currentRow
End Sub
・意味の分かる変数名を使うメリット
このコードでは、value1 や data1 のような変数名は使っていません。
理由は、実務では「何の値なのか」が非常に重要だからです。
例えば、次のような変数名では、後から見たときに意味が分かりません。
Dim a As String
Dim b As String
Dim c As Long
一方で、次のように書けば、値の意味がすぐに分かります。
Dim productCode As String
Dim productName As String
Dim stockQuantity As Long
VBAではコードの短さよりも、修正しやすさと読みやすさを優先した方が、実務では失敗しにくくなります。
✅ VBAでセルの値を変数に格納するときの空白・異常値対策
セルの値を変数に格納するとき、実務で最も注意すべきなのが空白や異常値です。
表の中には、未入力セル、入力途中の行、文字として入力された数値、数式エラーなどが混ざることがあります。
これらを想定せずに数値型や日付型へ直接格納すると、型不一致エラーが発生することがあります。
特に複数人で更新するファイルでは、データが常にきれいとは限りません。
そのため、変数に格納する前に「本当にその型として扱えるか」を確認する設計が重要です。
ここでは、実務で使いやすい安全な格納方法を紹介します。
・数値かどうかを確認してから変数に格納するコード
Sub StoreNumericValueSafely()
Dim targetWorksheet As Worksheet
Dim currentRow As Long
Dim lastDataRow As Long
Dim stockCellValue As Variant
Dim stockQuantity As Long
Set targetWorksheet = Worksheets("Sheet1")
lastDataRow = targetWorksheet.Cells(targetWorksheet.Rows.Count, "A").End(xlUp).Row
For currentRow = 2 To lastDataRow
stockCellValue = targetWorksheet.Cells(currentRow, "C").Value
'数値として扱える場合のみLong型に変換する
If IsNumeric(stockCellValue) Then
stockQuantity = CLng(stockCellValue)
Else
stockQuantity = 0
End If
Debug.Print stockQuantity
Next currentRow
End Sub
・なぜ一度Variantで受け取るのか
このコードでは、いきなり stockQuantity にセルの値を入れていません。
まず stockCellValue という Variant 型の変数で受け取り、その後で数値かどうかを確認しています。
これは、セルに空白や文字列が入っていた場合でも、マクロが止まりにくくするためです。
実務では、データの入力ミスが完全になくなることはありません。
そのため、「正しい値だけが入っている前提」ではなく、「想定外の値が入る可能性がある前提」でコードを書くことが大切です。
空白や異常値を検知できても、そのままでは見落とされてしまうことがあります。
実務では、問題のあるデータを「すぐに気づける状態」にしておくことが重要です。
【Excel】エラーや異常値を色で目立たせる実務テクニックの記事では、エラーや異常値を色で目立たせる方法を、条件付き書式を使った実務向けの手順として詳しく解説しています。
✅ VBAで変数に格納した値を条件判定に使う方法
セルの値を変数に格納する目的は、値を表示することだけではありません。
実務では、変数に格納した値を使って条件判定を行うことが非常に多くあります。
例えば、在庫数が一定以下なら発注対象にする、売上金額が基準以上ならランクを付ける、ステータスが未対応なら処理対象にする、といった使い方です。
このとき、セルを直接参照するよりも、変数に格納してから判定した方が、処理の意味が明確になります。
また、同じ値を複数回使う場合にも、変数を使うことでコードが読みやすくなります。
ここでは、在庫数を変数に格納して判定する例を紹介します。
・在庫数を変数に格納して発注対象を判定するコード
Sub CheckStockByStoredVariable()
Const REORDER_THRESHOLD As Long = 10
Dim targetWorksheet As Worksheet
Dim currentRow As Long
Dim lastDataRow As Long
Dim productCode As String
Dim productName As String
Dim stockCellValue As Variant
Dim stockQuantity As Long
Set targetWorksheet = Worksheets("Sheet1")
lastDataRow = targetWorksheet.Cells(targetWorksheet.Rows.Count, "A").End(xlUp).Row
For currentRow = 2 To lastDataRow
productCode = Trim(targetWorksheet.Cells(currentRow, "A").Value)
productName = Trim(targetWorksheet.Cells(currentRow, "B").Value)
stockCellValue = targetWorksheet.Cells(currentRow, "C").Value
If IsNumeric(stockCellValue) Then
stockQuantity = CLng(stockCellValue)
Else
stockQuantity = 0
End If
'在庫数が基準以下なら発注対象として出力する
If productCode <> "" And stockQuantity <= REORDER_THRESHOLD Then
Debug.Print productCode & " / " & productName & " / 発注対象"
End If
Next currentRow
End Sub
・定数を使って条件を分かりやすくしている理由
このコードでは、発注基準を REORDER_THRESHOLD という定数にしています。
次のように直接数値を書くこともできます。
If stockQuantity <= 10 Then
しかし、この書き方だと「10」が何を意味しているのか分かりにくくなります。
一方で、REORDER_THRESHOLD として定義しておけば、コードを見たときに「発注判断の基準値」だと分かります。
また、将来的に基準値が10から5に変わった場合でも、定数の値だけを変更すれば済みます。
このように、実務では数値そのものよりも、その数値が何を意味しているかをコードで表現することが重要です。
変数に格納した値を使った条件判定は、VBAで業務処理を自動化するうえで非常に重要な基本になります。
実務では、1つの条件だけでなく、複数の条件を組み合わせて判定する場面も多くあります。
【VBA】比較演算子を用いた複数条件の使用方法|実務で迷わない条件分岐の設計の記事では、比較演算子を用いた複数条件の指定方法を、実務で迷わない条件分岐の設計とあわせて詳しく解説しています。
✅ VBAで変数に格納した値を別シートへ貼り付ける考え方
セルの値を変数に格納した後、別シートへ貼り付ける処理は実務で非常によく使われます。
例えば、元データから必要な項目だけを抜き出して一覧を作る、条件に合うデータだけを別シートに出力する、といった処理です。
このとき、セルからセルへ直接コピーする方法もありますが、変数を経由することで、処理内容を整理しやすくなります。
また、値を加工してから貼り付ける場合にも、変数を使った方が柔軟に対応できます。
ただし、貼り付け先の行番号を適切に管理しないと、上書きや空行の原因になります。
ここでは、変数に格納した値を別シートへ出力する基本例を紹介します。
・条件に合うデータだけを別シートへ出力するコード
Sub OutputStoredValuesToAnotherSheet()
Const REORDER_THRESHOLD As Long = 10
Dim sourceWorksheet As Worksheet
Dim outputWorksheet As Worksheet
Dim lastDataRow As Long
Dim currentRow As Long
Dim outputRow As Long
Dim productCode As String
Dim productName As String
Dim stockCellValue As Variant
Dim stockQuantity As Long
Set sourceWorksheet = Worksheets("Sheet1")
Set outputWorksheet = Worksheets("発注対象")
lastDataRow = sourceWorksheet.Cells(sourceWorksheet.Rows.Count, "A").End(xlUp).Row
outputRow = 2
For currentRow = 2 To lastDataRow
productCode = Trim(sourceWorksheet.Cells(currentRow, "A").Value)
productName = Trim(sourceWorksheet.Cells(currentRow, "B").Value)
stockCellValue = sourceWorksheet.Cells(currentRow, "C").Value
If IsNumeric(stockCellValue) Then
stockQuantity = CLng(stockCellValue)
Else
stockQuantity = 0
End If
If productCode <> "" And stockQuantity <= REORDER_THRESHOLD Then
outputWorksheet.Cells(outputRow, "A").Value = productCode
outputWorksheet.Cells(outputRow, "B").Value = productName
outputWorksheet.Cells(outputRow, "C").Value = stockQuantity
outputRow = outputRow + 1
End If
Next currentRow
MsgBox "発注対象データの出力が完了しました。"
End Sub
・貼り付け先の行を別変数で管理する理由
このコードでは、元データの行番号 currentRow と、貼り付け先の行番号 outputRow を分けています。
これは非常に重要です。
元データでは10行目、20行目、35行目だけが条件に一致するかもしれません。
その場合、貼り付け先でも10行目、20行目、35行目に出力してしまうと、間に空白行ができてしまいます。
そこで、貼り付け先は outputRow で管理し、出力するたびに1行ずつ増やしています。
このように、元データの行番号と出力先の行番号を分けることで、きれいな一覧表を作成できます。
✅ VBAでセルの値を変数に格納するときに直接参照より安全な理由
VBAでは、セルの値を直接参照して処理を書くこともできます。
しかし、実務では変数に格納してから処理した方が安全で分かりやすい場面が多くあります。
特に、同じセルの値を複数回使う場合や、条件判定・加工・出力を組み合わせる場合には、変数の方が処理の流れを追いやすくなります。
また、セル参照がコード内に何度も出てくると、列が変わったときの修正漏れが起きやすくなります。
変数を使うことで、値の意味をコード上で表現でき、保守性も高まります。
ここでは、直接参照と変数利用の違いを整理します。
・セルを直接参照する書き方
If Worksheets("Sheet1").Cells(2, "C").Value <= 10 Then
MsgBox "発注対象です。"
End If
この書き方でも動きます。
ただし、処理が増えてくると、どの値を判定しているのか分かりにくくなります。
・変数に格納してから判定する書き方
Dim stockQuantity As Long
stockQuantity = Worksheets("Sheet1").Cells(2, "C").Value
If stockQuantity <= 10 Then
MsgBox "発注対象です。"
End If
こちらの方が、「在庫数を判定している」という意図が分かりやすくなります。
・実務では変数経由の方が変更に強い
セル参照を直接何度も書いていると、列がC列からD列に変わったときに、すべての参照箇所を修正する必要があります。
一方で、変数に格納する箇所を整理しておけば、修正箇所を限定できます。
特に、処理が長くなるほど、この差は大きくなります。
✅ VBAでセルの値を変数に格納する完成形コード
ここまでの内容を踏まえると、実務では「対象シートを明示する」「最終行を取得する」「セル値を意味のある変数に格納する」「空白や異常値を確認する」「条件に応じて処理する」という流れが重要になります。
単にセルの値を読み取るだけなら短いコードでも書けますが、実務で長く使うマクロでは、後から修正しやすい構成にしておくことが大切です。
特に、列や開始行、判定基準をコード内に直接散らばらせると、仕様変更時に修正漏れが発生しやすくなります。
完成形では、変更されやすい値を定数としてまとめ、処理対象を明確にしています。
これにより、読みやすさと保守性を両立できます。
ここでは、商品管理表を想定した実務向けの完成形コードを紹介します。
・実務で使いやすい変数格納とループ処理のコード
Option Explicit
Sub StoreCellValuesWithLoop()
Const START_ROW As Long = 2
Const PRODUCT_CODE_COLUMN As String = "A"
Const PRODUCT_NAME_COLUMN As String = "B"
Const STOCK_QUANTITY_COLUMN As String = "C"
Const REORDER_THRESHOLD As Long = 10
Dim sourceWorksheet As Worksheet
Dim lastDataRow As Long
Dim currentRow As Long
Dim productCode As String
Dim productName As String
Dim stockCellValue As Variant
Dim stockQuantity As Long
'処理対象のシートを明示する
Set sourceWorksheet = Worksheets("Sheet1")
'商品コード列を基準に最終行を取得する
lastDataRow = sourceWorksheet.Cells(sourceWorksheet.Rows.Count, PRODUCT_CODE_COLUMN).End(xlUp).Row
'データ行が存在しない場合は処理を終了する
If lastDataRow < START_ROW Then
MsgBox "処理対象のデータがありません。"
Exit Sub
End If
'各行のセル値を変数に格納しながら処理する
For currentRow = START_ROW To lastDataRow
productCode = Trim(sourceWorksheet.Cells(currentRow, PRODUCT_CODE_COLUMN).Value)
productName = Trim(sourceWorksheet.Cells(currentRow, PRODUCT_NAME_COLUMN).Value)
stockCellValue = sourceWorksheet.Cells(currentRow, STOCK_QUANTITY_COLUMN).Value
'商品コードが空白の行は処理しない
If productCode <> "" Then
'在庫数として扱える値だけをLong型に変換する
If IsNumeric(stockCellValue) Then
stockQuantity = CLng(stockCellValue)
Else
stockQuantity = 0
End If
'在庫数が基準以下の場合だけ確認用に出力する
If stockQuantity <= REORDER_THRESHOLD Then
Debug.Print productCode & " / " & productName & " / 在庫数:" & stockQuantity
End If
End If
Next currentRow
MsgBox "セルの値を変数に格納して処理しました。"
End Sub
・この完成形コードで意識している実務設計
このコードでは、まず処理対象のシートを sourceWorksheet として明示しています。
これにより、アクティブシートに依存せず、意図したシートだけを処理できます。
また、列や開始行、発注基準を定数としてまとめています。
これは、後から列構成や基準値が変わった場合でも、修正箇所を見つけやすくするためです。
さらに、在庫数は一度 stockCellValue という Variant 型で受け取り、数値かどうかを確認してから stockQuantity に格納しています。
この流れにすることで、空白や文字列が混ざっていてもマクロが止まりにくくなります。
実務では、完璧なデータだけを前提にしないことが大切です。
多少の入力ミスや空白があっても、処理が大きく崩れない設計にしておくことで、長く使いやすいマクロになります。
✅ VBAでセル値の格納処理を再利用しやすくする考え方
同じようなセル値の取得処理を何度も書いている場合は、処理の一部を関数化することも検討できます。
ただし、最初から何でも関数化すると、かえって分かりにくくなることがあります。
大切なのは、繰り返し使う処理や、意味のまとまりがある処理を切り出すことです。
例えば、最終行を取得する処理や、数値として安全に変換する処理は、複数のマクロで使い回しやすい部分です。
このような処理を関数化しておくと、コードの重複を減らし、修正漏れを防ぎやすくなります。
ここでは、数値変換を関数化する考え方を紹介します。
・数値として安全に変換する関数
Function ConvertToLongOrDefault(ByVal targetValue As Variant, ByVal defaultValue As Long) As Long
'数値として扱える場合はLong型に変換し、それ以外は初期値を返す
If IsNumeric(targetValue) Then
ConvertToLongOrDefault = CLng(targetValue)
Else
ConvertToLongOrDefault = defaultValue
End If
End Function
この関数を使うと、メイン処理では次のように書けます。
stockQuantity = ConvertToLongOrDefault(stockCellValue, 0)
・関数化が向いている処理
関数化が向いているのは、次のような処理です。
- 最終行を取得する処理
- 数値変換の処理
- 日付変換の処理
- 空白判定の処理
- 文字列の整形処理
一方で、そのマクロで一度しか使わない処理まで無理に関数化する必要はありません。
まずは読みやすく書き、同じ処理が何度も出てきたら関数化する、という順番で考えると実務では扱いやすくなります。
✅ まとめ:VBAでセルの値を変数に格納するならループ処理と設計が重要
- セルの値は
Range.ValueやCells.Valueで取得できる - 取得した値を変数に格納すると処理の意味が分かりやすくなる
- ループ処理では1行ずつ値を変数に入れて処理する
- 変数名は値の意味が伝わる名前にする
- 空白や異常値を想定してから型変換する
- 条件判定や転記処理では変数を使うと保守しやすい
- 列や基準値は定数化すると仕様変更に強くなる
- よく使う処理は関数化すると再利用しやすい
VBAでセルの値を変数に格納する処理は、転記、集計、判定、チェック、自動化の土台になります。
ただ値を取得するだけでなく、その値を何として扱うのかを変数名で表現することで、コードは一気に読みやすくなります。
特に実務では、後から列構成が変わったり、入力データに空白や異常値が混ざったりすることがあります。
そのため、最初から保守性と安全性を意識した書き方にしておくことが大切です。
まずは、身近な管理表や一覧表を使って、セルの値を変数に格納しながらループ処理する流れを練習してみてください。