エクセルVBAでの並び替えで、結果の必要部分を切り出す機能です。
1ボタンで必要範囲をコピーし別シートに張付けることが出来ます。
切り出す部分の行数指定も可能です。
こんにちは じゅんぱ店長 (@junpa33) です。
VBAを使って、エクセルのセルデータの並び替えを行うツールを作成しています。
今回は、並び替え後の結果をコピーして、別のシートに張り付けする、並び替え結果の切り出しの機能について説明します。
エクセルの標準の並び替えツールでは装備されていない、有ったらいいな的な機能についてです。
並び替えマクロ 記事階層
- マクロツール使い方と無料ダウンロード
- マクロツール作成手順
- 並び替えマクロを作成するVBAコードの概要
- 条件設定ボタンとボックスを配置するユーザーフォームのデザイン
- UserFormに設置したコントロールのイベントコードを記述する
- 別シートにまたぐのは可能?並び替えのコード設計
- 条件入力用のユーザーフォーム 表示・非表示と値の保存
- セル範囲内の空白行や結合にも対応したSortオブジェクトVBA
- 複数列に自由にキーを設定するVBA。Sort条件設定のコード
- 複数の背景色キーを指定できるVBAコードの組み立て
- 種類の違うKeyの同時指定はどちらが優先?VBAでは記述順
- 共有できない問題も解決!ユーザー設定リストの外部ファイル導入法
- 複数条件をまとめるプロシージャーを作成する
- 結果の切り出し機能 必要範囲をコピーし別シートに張付け
- 簡単に並びを解除するリスタート機能。再実行も即可能になる
- 並び替えマクロツール作成の全コード集
- 並び替えマクロを作成するVBAコードの概要
- 実際に使ってみる
この記事の番号は11番です。
コンテンツ
結果の切り出し機能とは

書類作成あるあるの話ですが、・・・
例えば、作成中書類の資料として「あるデータの並び替えの結果」の一部分を利用したいということが普通に有ると思います。
ほかにも、一つのデータシートで、幾つかの異なった基準で並び替えを実行する場合など、加工データの比較参照のために、その並び替え結果をコピーして別の場所に保存することも多いでしょう。
そして、「その部分を安全なシートにコピペして・・・」ではないでしょうか。
「結果を切り出し別シートにコピーする切り出し機能」は、このような、ちょっと面倒臭い作業を、簡単に1クリックで実行出来るようにする機能です。
切り出し範囲は、並び替え範囲全部から1行分まで、先頭行からの切り出し行数を自由に指定できます。
切り出した結果の修正装飾作業は、ペーストされた安全な別シートで行うことが出来ます。
簡単な機能ですが、非常に便利な機能です。
切り出し機能のプロシージャー

切り出しを行う範囲は、直近に並び替えを行なったエリアになります。
Sub 並び替えデータ切り出し()
Dim DCArea, DCAreaS As Range
Dim KArow As Long
On Error Resume Next
Set DCArea = Range(Cells(DCutr, DCutc), Cells(DCutEr, DCutEc))
If DCArea Is Nothing Then
MsgBox "切り出すものがありません。"
Exit Sub
End If
If Val(DCYr) <= 0 Then
MsgBox "切り出し行数をもう一度チェックしてください。", _
vbOKOnly + vbExclamation
ソートナビゲーター.切り出し希望行数.Value = ""
Exit Sub
End If
If DCutEr - (Val(DCYr) + DCutr - 1) >= 0 Then
Set DCAreaS = Range(Cells(DCutr, DCutc), Cells(Val(DCYr) _
+ DCutr - 1, DCutEc))
Else
Cells(DCutEr, DCutEc).EntireRow.Select
MsgBox "切り出し行数をもう一度チェックしてください。", _
vbOKOnly + vbExclamation
ソートナビゲーター.切り出し希望行数.Value = ""
Exit Sub
End If
Dim Flag As Boolean
Dim wsheet As Worksheet
For Each wsheet In ThisWorkbook.Worksheets
If wsheet.Name = "切り出し" Then
Flag = True
Exit For
Else
Flag = False
End If
Next
If Flag = False Then
ThisWorkbook.Worksheets.Add(after:=Worksheets(1)) _
.Name = "切り出し"
End If
Worksheets("切り出し").Select
KArow = Cells(Rows.Count, 2).End(xlUp).Row + 2
DCAreaS.Copy Worksheets("切り出し").Cells(KArow, 2)
Worksheets(DataSN).Select
On Error GoTo 0
End Sub
直近に並び替えを行なった範囲の、先頭セルの行番号(DCutr)、列番号(DCutc)と
終端セルの行番号(DcutEr)、列番号(DCutEc)を「並び替え作業」プロシージャーで取得しておきます。
この「並び替えデータ切り出し」で、再度、切り出し範囲としてRangeオブジェクトの変数「DCArea」にセットします。
一方、利用者の切り出し行数の指定を受けて、
切り出し実行範囲としてRangeオブジェクトの変数「DCAreaS」を作成します。
この切り出し実行範囲のDCAreaSが適切に作成された場合に、
BOOK内に新しいSheetとして「切り出し」シートを作成し、そのシートに切り出した範囲のデータを張り付けします。
シートへの貼り付けについては、A列を残しB列スタートで貼り付けを行います。
結果の切り出し機能のまとめ

並び替え結果の切り出し機能は、非常にシンプルな機能ですが、エクセルマクロだから出来る非常にユーティリティな機能です。(まさに繰り返し作業の自動化そのもの)
こういった作業が、チョコッと便利になるというのはほんとに嬉しいものではないでしょうか。
全く難しいVBAコードではないので、是非真似をしてみてください。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。