ウェブサイトの表のデータを使おうとおもって、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文を外してください。