Excelマクロで複数列の出荷データから箱数を自動計算して配列する方法

Visual Basic

Excelで製品ごとの出荷数量から箱数を計算し、複数列のデータをまとめて配列するには、VBAマクロを利用するのが効率的です。特に、色で塗られたセルを1箱としてカウントする場合、条件付きの処理を組み合わせることで自動化できます。

前提条件の整理

今回のケースでは、以下の条件があります。

  • 製品はA~Gまであり、出荷数量はD~J列に記載
  • 黄色や青色など同じ色で塗られたセルは1箱としてカウント
  • 最終的にM~O列のように配列して出力したい

マクロによる解決方法

1. VBAエディタを開き、新しいモジュールを作成

2. 色によるカウント処理を組み込む

Function CountByColor(rng As Range, clr As Long) As Long
    Dim cell As Range
    Dim cnt As Long
    cnt = 0
    For Each cell In rng
        If cell.Interior.Color = clr Then cnt = cnt + 1
    Next cell
    CountByColor = cnt
End Function

3. 複数列の箱数をまとめてM~O列に出力

Sub CalculateBoxes()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
    Dim i As Long
    For i = 2 To lastRow
        ws.Cells(i, "M").Value = CountByColor(ws.Range("D" & i & ":J" & i), RGB(255, 255, 0)) '黄色の箱数
        ws.Cells(i, "N").Value = CountByColor(ws.Range("D" & i & ":J" & i), RGB(0, 0, 255)) '青色の箱数
        ws.Cells(i, "O").Value = ws.Cells(i, "M").Value + ws.Cells(i, "N").Value '合計箱数
    Next i
End Sub

フォーマット変更の検討

色でカウントする方法は便利ですが、セルに値としてカテゴリを入れる形式に変更すると、CountIf関数やSUMPRODUCT関数で計算可能になります。こうすることでVBAなしでも集計が可能です。

まとめ

Excelマクロを使用すれば、複数列の出荷データを色ごとに箱数としてカウントし、M~O列に自動で配列することが可能です。さらにデータ形式を見直せば、VBAなしでも計算可能になり、柔軟性が向上します。

コメント

タイトルとURLをコピーしました