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

VBA VBA
この記事は約3分で読めます。

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

広告

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

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

・移動前の状態

列を移動させる前の状態

・移動後の状態

列を移動させた後の状態

以下のマクロで移動させることができます。
今回は列として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をコピーしました