結果の切り出し機能 必要範囲をコピーし別シートに張付け

vbanarabikekkacuteyecatch

エクセルVBAでの並び替えで、結果の必要部分を切り出す機能です。
1ボタンで必要範囲をコピーし別シートに張付けることが出来ます。
切り出す部分の行数指定も可能です。

こんにちは じゅんぱ店長 (@junpa33) です。

VBAを使って、エクセルのセルデータの並び替えを行うツールを作成しています。

今回は、並び替え後の結果をコピーして、別のシートに張り付けする、並び替え結果の切り出しの機能について説明します。

エクセルの標準の並び替えツールでは装備されていない、有ったらいいな的な機能についてです。

並び替えマクロ 記事階層

この記事の番号は11番です。

結果の切り出し機能とは

書類作成あるあるの話ですが、・・・

例えば、作成中書類の資料として「あるデータの並び替えの結果」の一部分を利用したいということが普通に有ると思います。

ほかにも、一つのデータシートで、幾つかの異なった基準で並び替えを実行する場合など、加工データの比較参照のために、その並び替え結果をコピーして別の場所に保存することも多いでしょう。

そして、「その部分を安全なシートにコピペして・・・」ではないでしょうか。

「結果を切り出し別シートにコピーする切り出し機能」は、このような、ちょっと面倒臭い作業を、簡単に1クリックで実行出来るようにする機能です。

切り出し範囲は、並び替え範囲全部から1行分まで、先頭行からの切り出し行数を自由に指定できます。

切り出した結果の修正装飾作業は、ペーストされた安全な別シートで行うことが出来ます。

簡単な機能ですが、非常に便利な機能です。

切り出し機能のプロシージャー

切り出しを行う範囲は、直近に並び替えを行なったエリアになります。

VBA
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を独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です


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

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。