【VBA】特定の値が入っている列を最終列に移動させてみた

VBA VBA

エクセルのマクロを利用して、特定の値が入っている列を最終列に移動させてみました。

広告

特定の値が入っている列を最終列に移動させる

やりたいことは以下の画像のように、特定の列を値が入っている列の次の列に移動させる、というものです。

・移動前の状態

列を移動させる前の状態

・移動後の状態

列を移動させた後の状態

以下のマクロで移動させることができます。
今回は列としてA列を指定しており、 [aaa] を特定の値としています。

Sub MoveColumnWithValue()
    Dim ws As Worksheet
    Dim lastColumn As Long
    Dim searchValue As Variant
    Dim i As Long
    Dim found As Boolean
    Dim firstNonEmptyCell As Range
    Dim CellsRow As Range

    ' 対象のシートを指定(必要に応じて変更してください)
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' A列で最初の値が入っているセルを検索
    Set firstNonEmptyCell = ws.Columns("A").Find(What:="*", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)

    ' 最終列の列番号を取得
    lastColumn = ws.Cells(firstNonEmptyCell.Row, ws.Columns.Count).End(xlToLeft).Column

    ' 移動する値を指定
    searchValue = "aaa"

    ' 対象の値が入っている列を探す
    For i = 1 To lastColumn
        If WorksheetFunction.CountIf(ws.Columns(i), searchValue) > 0 Then
            ' 対象の列を最終列に移動
            ws.Columns(i).Cut Destination:=ws.Columns(lastColumn + 1)
            found = True
            Exit For
        End If
    Next i

    If Not found Then
        MsgBox "指定された値が見つかりませんでした。"
    End If
End Sub
タイトルとURLをコピーしました