Microsoft Excel VBA で並べ替えられたデータの並べ替えを解除する

Bilal Shahid 2023年6月21日
  1. VBA で並べ替えられたデータの並べ替えを解除する方法
  2. 方法 1: 数値が増加する一時的な列を保持する
  3. 方法 2: MS Excel ツールを使用する
  4. 方法 3: データのバックアップを保持する
  5. まとめ
Microsoft Excel VBA で並べ替えられたデータの並べ替えを解除する

VBA は、さまざまな機能をユーザーに提供する Microsoft Excel アプリケーション用のプログラミング言語です。 この記事では、VBA でデータの並べ替えを解除する方法について説明します。

VBA で並べ替えられたデータの並べ替えを解除する方法

並べ替えは、MS Excel で作業する場合の非常に一般的な方法です。 データを昇順または降順に並べ替えて、いくつかの値の最高値または最低値を計算したり、データを整理したりしたい場合があります。

Excel での並べ替えは、次のいずれかで実行できます。

  1. MS Excel のソートおよびフィルタリング オプションの使用
  2. VBA Range.Sort メソッドの使用

ただし、これらのアクションを実行した後で、データを元の形式に戻す必要があることに気付く場合があります。 標準の Ctrl+Z 元に戻すオプションが利用可能ですが、これが機能しない場合があります。

例えば:

  1. Excel ファイルを保存して再度開いた場合。
  2. いくつかの追加の変更を行ったが、それらを元に戻したくなく、並べ替えのみを削除したい場合。
  3. VBA コードを使用して並べ替えを行った場合。

したがって、この制限を回避し、Excel シートの元のデータ構成に戻す適切な方法が必要です。 それらの方法を1つずつ見ていきましょう。

方法 1: 数値が増加する一時的な列を保持する

このメソッドを使用すると、データの元の順序への参照を維持することで、データの並べ替えを解除できます。 例を使ってこれを理解しましょう。

シートに次のデータがあるとします。

サンプルデータ

ここで、データの元の順序を維持するために、それを追跡する一時的な列を挿入できます。 これは、シリアル番号の値を列に保存することを意味します。

これは、次の 2つの簡単な手順に従って実行できます。

  1. 最初の空の列で、最初の 2つのセルに値 1 と 2 を入力します。

    ステップ 1

  2. これら 2つのセルを選択し、プラス記号が表示される右下隅から下にドラッグします。 これにより、列全体が増分数値で埋められます。

    ステップ 2

または、VBA で次のコードを使用して、この一時的な列を作成することもできます。

Sub CreateColumn()

For m = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(m, "A").Value <> "" Then
Cells(m, "C").Value = m - 1
End If
Next m

End Sub

注: シートのデータに従って、m の値と列名を変更する必要があります。

一時的な列ができたので、必要に応じてデータを並べ替えることができ、いつでもこの状態に戻すことができます。 たとえば、次のマクロを実行して、給与に従ってデータを並べ替えます。

Sub Sort()

Set sortRange = Range("A1:C6")
Set keyCell = Range("B1")
sortRange.Sort Key1:=keyCell, Order1:=xlAscending, Header:=xlYes

End Sub

データは次のようにソートされます。

ソート済みデータ

データの並べ替えを解除したい場合は、並べ替えコードを再度実行するだけですが、今回は Key1 を一時的な列として保持するため、値はそれに従って並べ替えられます。 これは次のように行います。

Sub Sort()

Set sortRange = Range("A1:C6")
Set keyCell = Range("C1")
sortRange.Sort Key1:=keyCell, Order1:=xlAscending, Header:=xlYes

End Sub

データは元のようにソートされていません。

ソートされていないデータ

注: 上記の例では、VBA コードの代わりに、[ホーム] メニューの [並べ替えとフィルター] オプションを使用して並べ替えることもできます。

方法 2: MS Excel ツールを使用する

MS Excel には、さまざまなオプションを備えたソートおよびフィルタリング ツールがいくつか用意されています。 並べ替える列と順序を指定できます。

たとえば、給与に従って元のデータを並べ替えたい場合は、Custom Sort 並べ替えオプションで次のように選択できます。

カスタムソート

MS Excel のほとんどのバージョンには、並べ替えとフィルタリングをすべてクリアするオプションがあります。 このオプションは、HOME > EDITING > SORT & FILTER > CLEAR から利用できます。

方法 3: データのバックアップを保持する

データの並べ替えを解除する 1つの方法は、Excel ファイルのバックアップ コピーを保持することです。 これは、偶発的な誤用の場合に非常に役立ちます。

ソートを解除したい場合は、バックアップファイルを参照して、そこに保存されている生データを元の順序で使用できます。 バックアップ ファイルを作成するいくつかの方法を次に示します。

  1. データをコピーしてワークブックの別のシートに貼り付けます。
  2. Excel ファイル全体のコピーを作成します。
  3. 毎日特定の時刻にコピーを作成する VBA タイムスタンプ マクロを使用して、バックアップの作成プロセスを自動化します。 こうすれば、バックアップを時々手動で作成するだけで済みます。
  4. VBA を使用して、元のファイルと同じ場所にバックアップ コピーを作成します。
  5. VBA を使用して別の場所にバックアップ コピーを作成します。 別の場所に保存すると、データを誤って削除したり消去したりするのに役立ちます。

注: Save および SaveAs メソッドを適宜使用して、VBA を使用してバックアップ コピーを作成できます。

まとめ

これは、Microsoft Office ユーザーの貴重な時間を節約する便利なプログラミング言語である VBA でデータの並べ替えを解除するさまざまな方法に関する私たちの議論を要約したものです。 説明した方法は次のとおりです。

  1. 数値が増加する一時的な列を保持する
  2. MS Excel ツールの使用
  3. データのバックアップを保持する
著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub