【Excel VBA】選択範囲のセルを一つの列にまとめるマクロ

ウェブサイトの表のデータを使おうとおもって、Excelにコピペしてきたのですが、大量のデータが複数の列にまたがっていたので、1列にまとめるためのマクロを作りました。選択範囲のセルのデータを1列にまとめることができます。

マクロのコード

コードはこんな感じです。Selectionに対してループをかけ、セルの内容が空白でなければ配列に格納します。セルを選択できるダイアログを呼び出し、選択したセルから配列のデータを1列に展開していきます。


Option Explicit

Sub SelectionToOneColumn()

    Dim i As Long
    Dim eachCell As Range
    Dim valueExistCells() As String
    Dim valueExistCell
    Dim selectResultRange As Range
      
    i = 0
    For Each eachCell In Selection 
        If eachCell.Value <> "" Then  
            ReDim Preserve valueExistCells(i)          
            valueExistCells(i) = eachCell.Value        
            i = i + 1       
        End If 
    Next
    
    Set selectResultRange = Application.InputBox("出力するセルを選択してください。", "入力", Type:=8)
    
    If Err() <> 0 Then
        MsgBox "セルの選択が正しくありません" & vbCrLf & Err(), vbCritical      
    Else
        i = 0
        For Each valueExistCell In valueExistCells
            selectResultRange.Parent.Cells(i + selectResultRange.Row, selectResultRange.Column).Value = valueExistCells(i)
            i = i + 1     
        Next  
    End If
    
End Sub

実際に動かすとこんな感じ

Excelの標準機能に(データの項目とか)ありそうなんですけどね・・・、、調べると関数使ったり同じようにマクロの情報とか出てくるのでたぶんないんだと思います。空白のデータは飛ばすようにしているので、もし空白も入れるとしたら、If eachCell.Value <> “” ThenのところのIf文を外してください。

いいねとおもったらシェア!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です