Patは、ワークシートに新しいデータを追加するたびに自動的に並べ替える方法があるかどうか疑問に思います。 Patは、たとえば、名前のリストに新しい名前を追加すると、名前が常に順番に並べ替えられるのは素晴らしいことだと考えています。

これを行う唯一の方法は、ワークシートに新しいものが入力されるたびにトリガーされるマクロを使用することです。たとえば、ワークシート内の何かが変更されたときにトリガーされるワークシートのコードにマクロを追加できます。 (ワークシートタブを右クリックし、表示されるコンテキストメニューから[コードの表示]を選択すると、コードウィンドウを表示できます。)以下は、そのような単純なマクロの例です。

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     Range("A1").Sort Key1:=Range("A2"), _       Order1:=xlAscending, Header:=xlYes, _       OrderCustom:=1, MatchCase:=False, _       Orientation:=xlTopToBottom End Sub

このマクロは、列Aのデータを並べ替える必要があり、セルA1にヘッダーがあることを前提としています。名前が別の列にある場合は、セルA2参照をB2、C2などの別の列に変更するだけです。

もちろん、変更が加えられたときにいつでも並べ替えるのは面倒です。

データの特定の部分に変更が加えられたときにのみ表示されるように、並べ替えが実行されるタイミングを制限することをお勧めします。次のバージョンのマクロは、列Aに変更が加えられた場合にのみデータをソートします。

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     If Not Intersect(Target, Range("A:A")) Is Nothing Then         Range("A1").Sort Key1:=Range("A2"), _           Order1:=xlAscending, Header:=xlYes, _           OrderCustom:=1, MatchCase:=False, _           Orientation:=xlTopToBottom     End If End Sub

マクロを使用してデータを自動的に並べ替えることには、いくつかの欠点があります。まず、マクロを使用して並べ替えているため、操作は基本的に「最終」です。つまり、並べ替え後、Ctrl + Zを使用して操作を元に戻すことはできません。

2番目の欠点は、データ入力が少し当惑する可能性があることです。

たとえば、上記のマクロのいずれかを使用し、ワークシートに名前を入力し始めると、列Aの内容が終了するとすぐに並べ替えられます。データが5列を使用し、行15でエントリを開始した場合、列Aへの名前の入力が完了するとすぐに(列BからEにデータを入力する前に)、データは適切な順序で並べ替えられます。つまり、並べ替えのどこに移動したかを見つけ、列Bで適切なセルを選択してから、レコードの残りのデータを入力する必要があります。もちろん、これを回避する方法は、不自然な順序でデータを追加することです。単に、列Aの名前がレコードに入力する最後のものであることを確認してください。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9005)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。