データ加工(Offset × For Each 基本テンプレ集)
ここでは Offset × For Each を組み合わせて「各行のデータを加工して隣列や下段に書き込む」パターンを整理します。
文字列整形・数値処理・日付分解・カテゴリ分類など、実務でよく使う加工処理をまとめました。
51. 各行の文字列を整形し右隣へ
For Each cell In Range("A2:A20")
cell.Offset(0, 1).Value = UCase(Trim(cell.Value))
Next cell
VB👉 A列の文字列を「Trim+大文字化」して右隣に出力。
52. 数値を丸めて補助列へ
For Each cell In Range("B2:B20")
If IsNumeric(cell.Value) Then
cell.Offset(0, 1).Value = Round(cell.Value, 0)
End If
Next cell
VB👉 B列の数値を四捨五入して右隣に出力。
53. 文字列結合して右列へ
For Each cell In Range("C2:C20")
cell.Offset(0, 1).Value = cell.Value & "_suffix"
Next cell
VB👉 C列の文字列に「_suffix」を付けて右隣に出力。
54. 分割して左右へ 2 列書込
Dim parts As Variant
For Each cell In Range("D2:D20")
parts = Split(cell.Value, "-")
If UBound(parts) >= 1 Then
cell.Offset(0, 1).Value = parts(0)
cell.Offset(0, 2).Value = parts(1)
End If
Next cell
VB👉 D列の文字列を「-」で分割し、右隣2列に書き込み。
55. 日付 → 年/月/日を 3 列へ分解
For Each cell In Range("E2:E20")
If IsDate(cell.Value) Then
cell.Offset(0, 1).Value = Year(cell.Value)
cell.Offset(0, 2).Value = Month(cell.Value)
cell.Offset(0, 3).Value = Day(cell.Value)
End If
Next cell
VB👉 E列の日付を「年・月・日」に分解して右隣3列へ。
56. 金額 → 税込金額を右列へ
Const TAX As Double = 0.1
For Each cell In Range("F2:F20")
If IsNumeric(cell.Value) Then
cell.Offset(0, 1).Value = cell.Value * (1 + TAX)
End If
Next cell
VB👉 F列の金額に消費税10%を加算して右隣に出力。
57. 前回値との差分を自動計算
Dim cell As Range
For Each cell In Range("G3:G20") ' 3行目から
cell.Offset(0, 1).Value = cell.Value - cell.Offset(-1, 0).Value
Next cell
VB👉 G列の値と前行との差分を右隣に出力。
58. カテゴリ分類を右列へ
For Each cell In Range("H2:H20")
If cell.Value >= 80 Then
cell.Offset(0, 1).Value = "優"
ElseIf cell.Value >= 60 Then
cell.Offset(0, 1).Value = "良"
Else
cell.Offset(0, 1).Value = "可"
End If
Next cell
VB👉 H列の点数を「優・良・可」に分類して右隣に出力。
59. エラーのある値に印を付ける
For Each cell In Range("I2:I20")
If Not IsNumeric(cell.Value) Then
cell.Offset(0, 1).Value = "ERR"
End If
Next cell
VB👉 I列に数値以外があれば右隣に「ERR」を記録。
60. 変換ログを下段に追記
Dim cell As Range, logRow As Long
logRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each cell In Range("J2:J20")
Cells(logRow, 1).Value = "変換済: " & cell.Value
logRow = logRow + 1
Next cell
VB👉 J列の値を「変換済ログ」としてシート下段に追記。
✅ まとめ
- Offset → 加工結果を隣列や上下行へ出力
- For Each → 行ごとに繰り返し処理
- 文字列・数値・日付・カテゴリ分類 → 実務で頻出の加工処理を網羅
💡 この「データ加工10パターン」をベースに、さらに Resize を組み合わせれば「複数列まとめて加工」や「ブロック単位の変換」に発展できます。


