エクセル実践塾 > エクセル実践塾2016

選択したセル範囲のデータを、一列にまとめたい

 

10行程度のマクロでも行えます

選択したセル範囲のデータを一列にまとめる機能は、Excelに用意されていませんが、 次のような10行程度のマクロで行うことは可能です。

このマクロを実行すると、選択中のセル範囲のデータを、A2セルを基点として1列にまとめます。

出力先のセルをそのまま使う場合には、結合用の列としてA列を空けておく必要があります。


Sub FlattenColumns()

 Dim rng As Range

 Dim cell As Range

 Dim flattenRange As Range

 Dim destCell As Range

 

 ' 選択された範囲を取得

 Set rng = Selection

 

 ' 出力先のセルを指定

 Set destCell = Range("A2")

 

 ' 出力先のセル範囲を初期化

 Set flattenRange = destCell

 

 ' 選択範囲内の列を1列に並べる

 For Each cell In rng.Columns

  flattenRange.Resize(cell.Rows.Count, 1).value = cell.value

  Set flattenRange = flattenRange.Offset(cell.Rows.Count, 0)

 Next cell

End Sub

 

@「開発」タブの「マクロの記録」を使って、マクロの作成を始められます

 

A「マクロ名」と「マクロの保存先」、「説明」を指定します

 

 

Bすぐに「記録終了」をクリックして、「Visual Basic」を実行します

 

C「マクロの記録」で作成したマクロは、保存先の末尾モジュールに自動的に登録されます

それを開いて、左図のようなコードを挿入します。

 Dim rng As Range

 Dim cell As Range

 Dim flattenRange As Range

 Dim destCell As Range

変数の宣言を行っています。

rng As Range

選択された範囲を格納するための Range オブジェクトです。

cell As Range

ループ内で使用される Range オブジェクトです。

flattenRange As Range

出力先のセルを指定する Range オブジェクトです。

destCell As Range

出力先のセルを格納する Range オブジェクトです。

 ' 選択された範囲を取得

 Set rng = Selection

選択されているセル範囲を rng 変数に代入します。

 ' 出力先のセルを指定

 Set destCell = Range("A2")

出力先のセルを A2 セルに設定します。

このセル番地を変更すれば、出力先を変えることができます。

 ' 出力先のセル範囲を初期化

 Set flattenRange = destCell

flattenRange変数をdestCellで初期化します。

これにより、出力先のセルを管理するための変数が設定されます。

 ' 選択範囲内の列を1列に並べる

 For Each cell In rng.Columns

選択された範囲内の各列に対して処理を行います。

For Each ... In ...

指定されたコレクション内の各要素に対して反復処理を行います。

rng.Columns

選択された範囲内の各列を表す Range オブジェクトのコレクションです。

  flattenRange.Resize(cell.Rows.Count, 1).value = cell.value

各列の値を出力先のセル範囲に配置します。

flattenRange.Resize(cell.Rows.Count, 1)

出力先のセル範囲を cell の行数と1列にリサイズします。

.Value = cell.Value

cell の値を出力先のセル範囲に代入します。

  Set flattenRange = flattenRange.Offset(cell.Rows.Count, 0)

flattenRange を次の列の開始位置に移動します。

flattenRange.Offset(cell.Rows.Count, 0)

flattenRange を cell の行数だけ下方向に移動します。

 Next cell

選択された範囲内の列すべての処理が終わるまで、For Eachからの処理を繰り返します。

D一列にまとめたいデータを選択してから、マクロを実行します

EA2セルを基点にして、選択でデータが一列にまとめられます

   
   
   
   
   
   
   
   
   
   
   
   
 

 

●選択中のセル範囲のデータを、1列にまとめるマクロを作る動画です

Dyson(ダイソン)オンラインストア

関連する他のページ

一意の値を抽出したい
「重複の削除」を利用できます

重複登録をチェックしたい
条件付き書式でチェックしてから、 重複の削除を行いましょう

受注番号の重複する行を取り除きたい
Excel 2010/2007では、[重複の削除]機能で、 重複データを含む行の削除が可能です

ウィキペディアの都道府県データをExcelで使いたい
コピー&貼付けしてから「区切り位置」を使います

ピリオド(.)で区切られている文字列を、2つの列に分けたい
[データ]タブの[区切り位置]を使うと、指定した文字でのデータの分割を行えます

出退の時刻を簡単に記録したい
簡単なマクロを作れば、 「出社」や「退社」をクリック(タップ)するだけで現在日時を入力できる タイムカードを用意できます

セル範囲を対象とするユーザー定義関数を作りたい
For Each...Next ステートメントを使って、選択範囲に含まれるセルを順番に処理します

オリジナルの関数(ユーザー定義関数)を作りたい
Functionプロシージャとして、Visual Basicで作成できます

マクロを作りたい
「開発」タブを表示しておけば、 そこから「Visual Basic」を実行してマクロを作ることができます

“セキュリティの警告”が表示されるんだけど・・・
マクロを含むブックを開くときには、注意を促すべく、「セキュリティの警告」が表示されます

マクロ有効ファイルって何?
マクロを含むブックは、 マクロ有効ファイル(マクロ有効ブック)として保存しなければ、マクロが失われてしまいます

『セル範囲を検索して、 該当セルの右隣の値を取り出す』ユーザー定義関数を利用して、 文字列全体を置換したい
同じモジュールにあるユーザー定義関数は、 別のユーザー定義関数から利用することができます

セル範囲を検索して、 該当セルの右隣の値を取り出したい
10行程度のユーザー定義関数で可能です

指定色で塗りつぶされているセルの個数を求められる、 ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

一意の項目に該当する、 同一行内のデータを取り出したい
INDEXとMATCHの関数を組み合わせると、 検索列の左側であっても、 該当するデータを取り出すことができます

一意の項目を抽出して集計したい
「データ」タブの「統合」を使うと、 一意の項目を抽出すると同時に、 該当値の集計を行えます

数式で、一意の値を抽出したい
配列数式で抽出することもできます

一意の値を抽出したい
「重複の削除」を利用できます

 

 

 

 

 

出前館

アウトドア&フィッシング ナチュラム