Excelのソート: テキスト、日付、数値、または色でデータを並べ替え
Excelでデータを並べ替えることは、非常に一般的で簡単な作業であり、選択した並べ替えの種類に基づいてデータを再整理するのに役立ちます。通常、組み込みの並べ替え機能を使用すると、1つまたは複数の列にある数字、テキスト文字列、日付や時刻を並べ替えることができます。また、自分で作成したカスタムリストや、セルの書式(フォントの色、背景色、アイコンなど)に基づいてデータを迅速かつ簡単に並べ替えることも可能です。
これらの簡単な並べ替えに加えて、日常業務で必要になる可能性がある、さらに有用で複雑な並べ替えが多数存在します。このチュートリアルでは、Excelでの問題解決に役立つさまざまな種類の並べ替えを紹介します。
Excelでの並べ替えオプションへのアクセス
Excel は、並べ替え機能とそのオプションにアクセスするための複数の方法を提供しています。
1.1 リボン内のソートボタン
並べ替え機能を適用する最速の方法は、リボンの並べ替えボタンを使用することです。
値を並べ替える列の任意のセルをクリックし、次に [データ] タブをクリックします。[並べ替えとフィルター] セクションで、[A から Z で並べ替え] または [Z から A で並べ替え] ボタンをクリックして、データを昇順または降順のアルファベット順に並べ替えます。スクリーンショットをご覧ください:
注: データ範囲に空白行がある場合、これらのボタンを適用した後、選択したセルの上または下にある空白行以外のデータ範囲のみが正常に並べ替えられます。
1.2 ソートダイアログボックス
並べ替えとフィルターグループの データタブには、もう一つの並べ替えボタンがあります。スクリーンショットをご覧ください:
この「ソート」ボタンをクリックすると、下のスクリーンショットに示すように、「ソート」ダイアログボックスが表示されます。
次に、[ソート] ダイアログ ボックスで、必要に応じてデータをソートするための対応するルールを選択できます。
ヒント: ショートカットキーを使用してこの「並べ替え」ダイアログボックスを開くこともできます。キーボードで Alt + A + S + S キーを順に押してください。
1.3 フィルターメニュー内のソートオプション
データ範囲にフィルターを適用している場合、フィルターオプションと一緒に並べ替えオプションも見つけることができます。任意の列のフィルターアイコンをクリックすると、下のスクリーンショットに示すように、展開されたリストに並べ替えオプションが表示されます。
注: これらの並べ替えオプションは、列内のデータに基づいて変更されます。列にテキストがある場合、「AからZへ」、「ZからAへ」が表示されます。列に数字がある場合、「最小から最大へ」、「最大から最小へ」が表示されます。列に日付がある場合、「古い順から新しい順」、「新しい順から古い順」が表示されます。
1.4 右クリックによるソートオプション
Excelでは、右クリックによる並べ替えオプションを使用してデータを迅速かつ簡単に並べ替えることができます。並べ替えたい値が含まれる列の任意のセルを右クリックすると、コンテキストメニューに6つの並べ替えオプションが表示されます。必要なオプションを選択してください。スクリーンショットをご覧ください:
ソートの基本的な使用方法
このExcelの並べ替え機能は、数値、テキスト文字列、日付を昇順または降順で並べ替えたり、フォントや背景色に基づいてセルを並べ替えるなど、簡単な並べ替えを行うのに役立ちます。このセクションでは、この並べ替え機能の基本的な使用方法について説明します。
2.1 テキスト、数字、または日付でデータを並べ替える
テキスト、数字、または日付に基づいてデータ範囲を昇順または降順で並べ替えるには、次の手順に従ってください:
1. ソートしたいデータ範囲を選択し、次に [データ] > [ソート] をクリックします。スクリーンショットをご覧ください:
2. [ソート] ダイアログ ボックスで、次の操作を行います:
- 列セクションで、基準として並べ替えたい列名を選択してください。
- 「ソート基準」セクションで、「セルの値」オプションを選択します。
- 「順序」セクションで、並べ替えの順序を指定します。(テキスト文字列を並べ替える場合は、A から Z または Z から A を選択してください。数値リストを並べ替える場合は、最小から最大 または 最大から最小 を選択してください。日付セルを並べ替える場合は、古いものから新しいもの または 新しいものから古いもの を選択してください。)
- ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、このオプションのチェックを外してください。
3. 次に、[OK] ボタンをクリックすると、選択したデータが指定した列に基づいて一度に並べ替えられます。
2.2 セルの色、フォントの色、セルのアイコンでデータを並べ替え
セルの色、フォントの色、または条件付き書式アイコンに基づいてデータ範囲を並べ替えたい場合、[ソート] 機能を使用するとこのタスクを迅速に解決できます。
セルの色で書式設定されたデータ範囲があるとします(下のスクリーンショットを参照)。このデータをセルの色に基づいて並べ替える必要がある場合、例えば、薄い赤の行を上に、続いて薄い黄色や薄い青の行を配置したい場合、行をセルの色で並べ替えるには、次の手順を実行してください。
1. セルの色に基づいて並べ替えたいデータ範囲を選択し、次に [データ] > [並べ替え] をクリックして [並べ替え] ダイアログボックスを開きます。
2. [ソート] ダイアログ ボックスで、次の操作を指定します:
2.1) 最初のセルの色を次のように上部に設定します:
- 「列」セクションで、色付きのセルがある「名前」や他の列を選択します。この例では、すべての列に色付きのセルがありますので、どの列名でも選択できます。
- 「ソート基準」セクションで、「セルの色」オプションを選択してください。
- 「順序」セクションで、上または下に配置したいセルの色を1つ選択します。
2.2) 次に、[追加] ボタンをクリックして、2 番目およびその他のルールレベルを追加し、上記の手順を繰り返して 2 番目およびその他のセルの色を設定します。
- ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 設定が完了したら、[OK] ボタンをクリックすると、指定したセルの色でデータ範囲が並べ替えられます。スクリーンショットをご覧ください:
ヒント:上記の手順に従って、フォントの色やセルのアイコンに基づいてデータを並べ替えることもできます。そのためには、 フォントの色 または 条件付き書式のアイコン 「並べ替え」ダイアログボックスで。
2.3 複数の列でデータを並べ替える
以下スクリーンショットに示すような大規模なデータセットがあり、データをより明確に読むために多段階のデータ並べ替えを行いたいとします。例えば、まず「地域」列で並べ替え、次に「州」列、最後に「売上」列で並べ替える場合です。この並べ替えをExcelでどのように行うことができますか?
複数の列でデータを並べ替えるには、以下の手順に従ってください:
1. 並べ替えたいデータの範囲を選択し、次に「データ」>「並べ替え」をクリックして、「並べ替え」ダイアログボックスを開きます。
2. [ソート] ダイアログ ボックスで、[レベルの追加] ボタンを 3 列分使用したいので 2 回クリックします。これで、リスト ボックスに 2 つの [次に] ルール レベルが追加されます。
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 「並べ替えの基準」および「次に並べ替え」ドロップダウンリストから、並べ替えを基にする列名を選択し、選択した各列に対して「 並べ替え対象」セクションから「セルの値」を選択して、最後に必要な並べ替え順序を選びます。
4. 次に、「OK」をクリックすると、以下のスクリーンショットのように並べ替え結果が表示されます。
2.4 カスタムリストに基づいてデータを並べ替える
アルファベット順や数値順にデータを並べ替える代わりに、このソート機能ではカスタムリストによる並べ替えも提供されています。例えば、ステータス(未開始、進行中、完了)に基づいて以下のようなデータ範囲を並べ替えたい場合、あなたが定義した条件で行うことができます。ここで、このタイプの並べ替えをどのように実行するかをご紹介します。
1. ソートしたいデータ範囲を選択し、次に [データ] > [ソート] をクリックして [ソート] ダイアログボックスを開きます。
2. [ソート] ダイアログ ボックスで、[列] セクションから並べ替えたい列を選択し、[ソート基準] セクションで [セルの値] を選択します。[順序] セクションで、[カスタムリスト] オプションをクリックしてください。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーが含まれている] オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. そして、カスタムリストのボックスがポップアップ表示されます。次の操作を行ってください:
- 「カスタムリスト」ボックスで「新しいリスト」をクリックします。
- リストエントリボックスに、並べ替えたい順序でテキスト文字列を入力してください。(テキストを入力する際は、Enterキーを押してエントリを区切ってください。)
- 最後に、「追加」ボタンをクリックすると、新しいリストが「カスタムリスト」ボックスにすぐに追加されます。
4. 次に、「OK」ボタンをクリックして「並べ替え」ダイアログボックスに戻ります。新しいカスタムリストの項目が теперь表示されます。「順序」ドロップダウンリストに表示されます。
5. そして、[OK] ボタンをクリックしてダイアログボックスを閉じます。その結果、データ範囲が定義したカスタムリストで並べ替えられます。スクリーンショットをご覧ください:
2.5 データを左から右に並べ替える(水平ソート)
通常、データテーブルは上から下に垂直に並べ替えますが、場合によっては、行の値に基づいてデータを並べ替えたい(左から右に並べ替え)ことがあります。例えば、以下のデータ範囲では、Name行の値に基づいて並べ替えたいと思います。
この場合、ソート機能には左から右へのソートを可能にする組み込みの機能があります。以下の手順で行ってください:
1. 並べ替えたいデータ範囲(ヘッダーを除く)を選択し、次に「データ」>「並べ替え」をクリックして、「並べ替え」ダイアログボックスを開きます。
2. 表示された「並べ替え」ダイアログボックスで、「オプション」ボタンをクリックします。次に、「並べ替えオプション」ダイアログボックスで、「左から右へ並べ替え」オプションを選択してください。スクリーンショットをご覧ください:
3. [OK] をクリックして [並べ替え] ダイアログに戻ります。ここで、[行] セクションでデータを並べ替える基準となる行番号を指定し、[並べ替え対象] セクションで [セルの値] を選択し、最後に [順序] セクションで必要な並べ替え順を選択します。スクリーンショットをご覧ください:
4. 次に、「OK」をクリックすると、データは以下のスクリーンショットのように並べ替えられます。
2.6 大文字と小文字を区別してデータを並べ替える
一般的に、データの並べ替えは、以下の最初のスクリーンショットに示すように、大文字と小文字を区別する順序では行われません。しかし、以下の2番目のスクリーンショットのように、並べ替えを大文字と小文字を区別する形式で行いたい場合、Excelでこのタスクをどのように解決すればよいでしょうか?
Excelで大文字と小文字を区別するソートを実行するには、次の手順に従ってください:
1. 並べ替えたいデータ範囲を選択し、次に「データ」>「並べ替え」をクリックして、「並べ替え」ダイアログボックスを開きます。
2. [ソート] ダイアログ ボックスで、[列] セクションに並べ替えたいデータの列名を指定し、[ソート対象] セクションで [セルの値] を選択してから、[順序] セクションで必要な並べ替え順を選択します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーがあります] オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. このダイアログボックスで「オプション」ボタンをクリックし続け、ソートオプションのプロンプトボックスで「大文字と小文字を区別する」オプションをチェックしてください。スクリーンショットをご覧ください:
4. [OK] をクリックし、続いてもう一度 [OK] をクリックしてダイアログを閉じます。同じテキストの場合、データは小文字が先に、その後大文字が続く形で大文字と小文字を区別して並べ替えられます。スクリーンショットをご覧ください:
高度な並べ替えの使用方法
日々の業務において、より複雑で実用的かつ特定の並べ替え問題に直面することがあるかもしれません。このセクションでは、Excelでのさまざまな種類の並べ替えタスクについて説明します。
3.1 データを頻度に基づいて並べ替え
列にデータのリストがあると仮定し、その列をデータの出現頻度の降順で並べ替えたいとします(下のスクリーンショットを参照)。ここでは、このタスクを解決するための2つの方法を紹介します。
ヘルパーカラムを使用して頻度に基づいてデータを並べ替える
Excelでは、出現回数に基づいてデータを直接並べ替える方法はありません。ここで、各テキストの出現頻度を取得するための補助式を作成し、補助列で並べ替えて必要な並べ替え結果を得ることができます。
1. 以下の数式を、元のデータの隣にある空白セル(例えばB2)に入力し、その後、この数式を適用するためにフィルハンドルを下にドラッグして他のセルに適用します。スクリーンショットをご覧ください:
=COUNTIF($A$2:$A$16,A2)
注: 上記の数式において、A2:A16 は頻度で並べ替えたいデータのリストであり、A2 はこのリストの最初のデータです。
2. 次に、数式セルの選択を維持し、必要に応じて [データ] をクリックしてから、[A から Z へ並べ替え] または [Z から A へ並べ替え] を選択します。表示される [並べ替えの警告] プロンプトボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. そして、[ソート] ボタンをクリックすると、元の列が次のスクリーンショットに示すように頻度順に並べ替えられます。
1. 結果を得た後、必要に応じてヘルパーカラムを削除できます。
2. 同じ回数出現するテキスト文字列がある場合、同じテキストが一緒に並べ替えられないことがあります。この場合、次の手順に進む必要があります。 ソート ダイアログボックスで、まずヘルパー列で並べ替え、次に以下のスクリーンショットのようにテキストで並べ替えます。
頻度に基づいてデータを並べ替える便利な機能
Kutools for Excel をお持ちの場合、その高度なソート機能を使用して、ヘルパー列を用いることなくデータを出現頻度に基づいて迅速かつ簡単に並べ替えることができます。
1. 並べ替えたいデータリストを選択し、次に [Kutools Plus] > [ 並べ替え] > [高度な並べ替え] をクリックします。スクリーンショットをご覧ください:
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、続いて「 ソート基準」のドロップダウンリストから「出現頻度」を選択します。最後に、「順序」セクションでソートの順番を指定してください。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーが含まれている」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、「OK」ボタンをクリックすると、データリストが出現回数に基づいて一度にソートされます。スクリーンショットをご覧ください:
3.2 文字の長さに基づいてデータを並べ替える
異なる長さのテキスト文字列を含むデータリストがあり、そのデータを文字数で並べ替えて列を整然とさせたい場合があります。このセクションでは、文字数に基づいてデータを並べ替える方法について説明します。
ヘルパー列を使用して文字の長さに基づいてデータを並べ替える
列を文字の長さで並べ替えるには、LEN関数を使用して各セルの文字数を計算し、その後、Sort関数を使用してデータリストを並べ替えます。以下の手順で行ってください:
1. たとえば、元のデータの隣にある空白セル(B2など)にこの数式 =LEN(A2) を入力し、その数式を適用するためにフィルハンドルを下にドラッグしていきます。スクリーンショットをご覧ください:
2. 次に、数式セルの選択を維持したまま、「データ」>「A から Z へ並べ替え」または「Z から A へ並べ替え」(必要に応じて)をクリックします。表示される「並べ替えの警告」ダイアログボックスで、「選択範囲を拡張する」を選択してください。スクリーンショットをご覧ください:
3. 次に、「並べ替え」ボタンをクリックすると、文字の長さに基づいて文字列が並べ替えられます。必要に応じて、ヘルパー列Bを削除できます。スクリーンショットをご覧ください:
文字の長さに基づいてデータを簡単なオプションで並べ替え
データを文字数で迅速かつ簡単に並べ替えるために、ここでは便利なツールである Kutools for Excelをおすすめします。Advanced Sort機能を使用すれば、このタスクを簡単に行うことができます。
1. ソートしたいデータリストを選択し、次に Kutools Plus > ソート > 高度なソート をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「 ソート基準」のドロップダウンリストから「テキストの長さ」を選んで、最後に「順序」セクションで必要なソート順を指定します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーがある] がチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、[ OK] ボタンをクリックすると、リスト内のテキスト文字列が文字数で並べ替えられ、以下のスクリーンショットのように表示されます。
3.3 名前を姓で並べ替える
フルネームのリストを並べ替えるとき、Excelは名前の最初の文字を使用して並べ替えを行いますが、姓でデータを並べ替えたい場合はどうすればよいでしょうか?ここでは、Excelでフルネームを簡単に姓で並べ替えるためのいくつかの方法をご紹介します。
ヘルパー列を使用してフルネームを姓で並べ替える
フルネームを姓に基づいて並べ替える場合、まず姓を新しい列に抽出し、その後「並べ替え」機能を使用して姓のアルファベット順にフルネームを整理する必要があります。次の手順で行ってください:
1. 以下の数式を、元のデータの隣にある空白セル(例えばB2)に入力またはコピーし、その後、この数式を適用するためにフィルハンドルを下にドラッグして、他のセルにも適用します。スクリーンショットをご覧ください:
=RIGHT(A2,LEN(A2)-FIND("@",SUBSTITUTE(A2," ","@",LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))
2. 引き続き数式セルを選択し、必要に応じて [データ] をクリックしてから [ A から Z へ並べ替え] または [Z から A へ並べ替え] を選択します。表示される [並べ替えの警告] プロンプトボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. 次に、「並べ替え」ボタンをクリックすると、姓に基づいてフルネームが並べ替えられます。完了後、必要に応じてヘルパーカラムを削除できます。スクリーンショットをご覧ください:
簡単な方法でフルネームを姓で並べ替える
数式に詳しくない場合でも、フルネームを苗字で並べ替える際に数式を使わずに済む方法があります。Kutools for Excelの高度なソート機能(Advanced Sort)がそのお手伝いをします。
1. 並べ替えたいフルネームのセルを選択し、Kutools Plus > 並べ替え > 高度な並べ替え をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「ソート基準」のドロップダウンリストから「 姓」を選んでください。最後に、「順序」セクションで必要なソート順を指定します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーがある] オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、[OK] ボタンをクリックすると、フルネームの列がすぐに姓でソートされます。
3.4 メールアドレスをドメイン別に並べ替える
メールアドレスのリストがあり、それを単にアドレスの最初の文字ではなくドメインごとに並べ替えたい場合、Excelでこれをどのように実現すればよいでしょうか?このセクションでは、メールアドレスをドメインごとに並べ替えるためのいくつかの簡単な方法について説明します。
ヘルパーカラムを使用してメールアドレスをドメイン別に並べ替える
ここでは、メールドメインを別の列に抽出する数式を作成し、新しいドメイン列に基づいて元のメールアドレスを並べ替えることができます。
1. メールアドレスの隣にある空白セルに次の数式を入力します。この例では、セルC2にこの数式を入力し、塗りつぶしハンドルをドラッグして数式を適用したい範囲を選択します。これにより、すべてのメールドメインがアドレスから抽出されます。スクリーンショットをご覧ください:
=RIGHT(B2,LEN(B2)-FIND("@",B2))
2. 数式が含まれるセルを選択したまま、[データ] → 必要に応じて [A から Z へ並べ替え] または [Z から A へ並べ替え] をクリックします。[並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] をチェックしてください。スクリーンショットをご覧ください:
3. そして、指定した昇順または降順でデータをメールドメイン別に並べ替えるために [Sort] ボタンをクリックします。
4. ソート後、必要に応じてヘルパーカラムを削除できます。
数回のクリックでドメイン別にメールアドレスを並べ替え
Kutools for Excel をお持ちの場合、その Advanced Sort 機能を使用すると、メールアドレスをドメイン名でアルファベット順に数回のクリックだけで並べ替えることができます。
1. ソートしたいデータ範囲全体を選択し、次に [Kutools Plus] → [ソート] → [高度なソート] をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「ソート基準」のドロップダウンリストから「メールドメイン」を選択します。最後に、「順序」セクションで必要なソート順を指定します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーがある] オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 「OK」をクリックすると、データ範囲がメールドメイン別にソートされ、以下のスクリーンショットのように表示されます。
3.5 ある列を別の列に合わせてソートする
2つの列にまったく同じまたはほぼ同じデータがあり、順序が異なる場合、これらの列を並べ替えて、同じ値が2つの列で同じ行に揃うようにする必要があるかもしれません。このセクションでは、この種の並べ替えに関する2つのケースを紹介します。
同じ項目を持つ2つの列を一致させるために並べ替えます
例えば、同じ項目を含むが順序が異なる2つの列があり、ここで、次のスクリーンショットに示すように、2番目の列を1番目の列に一致するように並べ替えたいとします。
1. 元のデータの隣にある空白セルに以下の数式を入力し、塗りつぶしハンドルをドラッグしてこの数式をリスト内のすべてのセルに適用します。これにより、列Bの各値が列Aに対してどの位置にあるかが返されます。スクリーンショットをご覧ください:
=MATCH(B2,$A$2:$A$10,0)
2. 次に、列Bと新しいヘルパーカラムを選択し、[データ] > [並べ替え] をクリックして [並べ替え] ダイアログボックスを開きます。[並べ替え] ダイアログボックスで、次の操作を行います:
- データの並べ替えを基にするヘルパーカラムを「列」セクションから選択します。
- 次に、[ソート基準] セクションで [ セルの値] を選択します。
- 最後に、「順序」セクションで「最小から最大へ」オプションを選択します。
3. そして、[OK] ボタンをクリックします。これで、下のスクリーンショットのように2つの列が完全に一致します。必要に応じて、数式の列を削除できます。
完全に同じ項目ではない2つの列を一致させるために並べ替えます
時々、2つの列の項目が完全に同じではない場合があります。例えば、2列目のデータを1列目と一致するように並べ替えたいのですが、これにより同じ値が同じ行に揃うようにしたいのです(以下のスクリーンショット参照)。
1. 2列の間に新しい空白列を挿入します。
2. 以下の数式をセル B2 に入力し、その後、フィルハンドルをドラッグしてこの数式を必要なセルに適用します。これで、列 C のデータが列 A のデータと一致するように並べ替えられたことが確認できます。
=IF(ISNA(MATCH(A2,$C$2:$C$8,0)),"",INDEX($C$2:$C$8,MATCH(A2,$C$2:$C$8,0)))
3.6 データリストから一意の値をソートして抽出
重複を含む値のリストがあり、その中から一意の値を抽出してアルファベット順に並べ替えたい場合(下のスクリーンショットを参照)、ここではそのような並べ替えを行うためのいくつかの数式を紹介します。
1. 次の数式を空白のセル(C2)に入力し、Ctrl + Shift + Enterキーを押して最初の結果を得てください。スクリーンショットをご覧ください:
=IFERROR(INDEX($A$2:$A$12,MATCH(0,COUNTIF($A$2:$A$12,"<"&$A$2:$A$12)-SUM(COUNTIF($A$2:$A$12,"="&C$1:C1)),0)),"")
注: 式の中で、A2:A12は一意の値を抽出したいデータリストであり、C1は配置した式の上のセルです。必要に応じてこれらを変更してください。
2. 次に、空白セルが表示されるまでフィルハンドルをドラッグして値を抽出すると、すべての一意の値が昇順で抽出され並べ替えられます。スクリーンショットをご覧ください:
1. 抽出した一意の値を降順で並べ替えたい場合は、以下の数式を適用してください。(Ctrl + Shift + Enter キーを押すことを忘れないでください)
=IFERROR(INDEX($A$2:$A$12,MATCH(0,COUNTIF($A$2:$A$12,">"&$A$2:$A$12)-SUM(COUNTIF($A$2:$A$12,"="&C$1:C1)),0)),"")
2. データリストに空白セルや数値が含まれている場合、上記の数式は機能しません。この場合、次の数式を使用する必要があります。(Ctrl + Shift + Enterキーを押すことを忘れないでください)
=IFERROR(SMALL(IF((COUNTIF($C$1:C1,$A$2:$A$12)=0)*ISNUMBER($A$2:$A$12),$A$2:$A$12,"A"),1),INDEX($A$2:$A$12,MATCH(SMALL(IF(ISTEXT($A$2:$A$12)*(COUNTIF(C1:$C$1,$A$2:$A$12)=0),COUNTIF($A$2:$A$12,"<"&$A$2:$A$12),""),1),IF(ISTEXT($A$2:$A$12),COUNTIF($A$2:$A$12,"<"&$A$2:$A$12),""),0)))
3.7 複数の行または列を一度に独立して並べ替え
1行または1列に基づいてデータの範囲を並べ替えるのは簡単ですが、時には範囲内の各行または列を独立してアルファベット順に並べ替えたい場合があります。Excelでこのタスクを実現するにはどうすればよいでしょうか?
複数の行を個別に並べ替える
各行のデータをアルファベット順に並べ替える必要がある場合、以下のスクリーンショットのような状況を想定してください。この問題を解決するために、ここでは2つの簡単な方法をご紹介します。
数式を使用して複数の行を一度に独立して並べ替える
1. 並べ替えた結果を取得したい別の場所に行ラベルをコピーします。
2. そして、次の数式を空白のセル(H2)にコピーまたは入力し、Ctrl + Shift + Enterキーを同時に押して最初の結果を得ます。スクリーンショットをご覧ください:
=INDEX($B2:$E2, MATCH(COLUMNS($B2:B2), COUNTIF($B2:$E2, "<="&$B2:$E2), 0))
3. 次に、数式セル H2 を選択し、フィルハンドルを右方向にドラッグして数式を最初の行の他のセルにコピーします。この例では、セル K2 までドラッグします。スクリーンショットをご覧ください:
4. 最初の行(H2:K2)にある数式セルを選択し続け、フィルハンドルを下にドラッグして他の行に数式をコピーします。これで、各行の値が個別に昇順で並べ替えられたことが確認できます。
VBAコードを使用して複数の行を一度に独立して並べ替える
次のVBAコードも、各行のデータをアルファベット順に簡単に並べ替えるのに役立ちます。以下の手順で行ってください:
1. 各行で並べ替えたいデータを選択します。
2. ALT + F11 キーを押しながら押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
3. 次に、 [挿入] > [モジュール] をクリックし、次のコードをモジュールウィンドウに貼り付けます。
VBAコード:複数の行を一度に独立して並べ替える
Sub SortIndividualR()
'Updateby Extendoffice
Dim xRg As Range, yRg As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Set xRg = Selection
If xRg.Count = 1 Then
MsgBox "Select multiple cells!", vbExclamation, "Kutools for Excel"
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Application.ScreenUpdating = False
For Each yRg In xRg.Rows
yRg.Sort Key1:=yRg.Cells(1, 1), _
Order1:=xlAscending, _
Header:=xlNo, _
Orientation:=xlSortRows
Next yRg
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
Application.ScreenUpdating = True
End Sub
4. 次に、 F5キーを押してこのコードを実行すると、各列のデータがすぐに昇順で並べ替えられます。スクリーンショットをご覧ください:
複数列を個別に並べ替え
各列のデータを個別に並べ替えるには、次の2つの方法が役立ちます。
数式を使用して複数の列を一度に独立して並べ替える
1. 並べ替えた結果を取得したい別の場所に列ラベルをコピーします。
2. 次に、空白のセル(F3)に以下の数式を入力し、Ctrl + Shift + Enterキーを同時に押して最初の結果を得ます。その後、フィルハンドルを下にドラッグしてこの数式を他の行にコピーしてください。スクリーンショットをご覧ください:
=INDEX(A$3:A$6,MATCH(ROWS(A$3:A3),COUNTIF(A$3:A$6,"<="&A$3:A$6),0))
3. 最初の行(F3:F6)にある数式セルを選択したまま、フィルハンドルを右方向にドラッグして他の列に数式をコピーします。これで、各列の値が個別に昇順で並べ替えられます(下のスクリーンショット参照)。
VBAコードを使用して複数の列を一度に独立して並べ替える
複数の列のデータを個別に並べ替えるには、次のVBAコードも役立ちます。以下のように操作してください:
1. ALT + F11 キーを押しながら押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
2. 次に、[挿入] > [ モジュール] をクリックし、次のコードをモジュールウィンドウに貼り付けます。
VBAコード:複数列を一度に独立して並べ替え
Sub SortIndividualJR()
'Updateby Extendoffice
Dim xRg As Range
Dim yRg As Range
Dim ws As Worksheet
Set ws = ActiveSheet
On Error Resume Next
Set xRg = Application.InputBox(Prompt:="Range Selection:", _
Title:="Kutools for excel", Type:=8)
Application.ScreenUpdating = False
For Each yRg In xRg
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=yRg, Order:=xlAscending
.SetRange ws.Range(yRg, yRg.End(xlDown))
.Header = xlNo
.MatchCase = False
.Apply
End With
Next yRg
Application.ScreenUpdating = True
End Sub
3. 次に、このコードを実行するために [F5] キーを押すと、プロンプトボックスが表示されます。ソートしたいデータ範囲を選択してください。スクリーンショットをご覧ください:
4. そして、「OK」をクリックすると、各列が個別に迅速に並べ替えられます。
3.8 Excelでデータをランダムに並べ替える
データを昇順または降順でアルファベット順に並べ替えるのは一般的ですが、選択した範囲内のデータをランダムに並べ替えたことはありますか?このセクションでは、セルの範囲をランダムな順序でシャッフルする方法について説明します。
ヘルパー列を使用してデータの列をランダムに並べ替える
通常、RAND関数を使用して乱数を取得し、その乱数リストに基づいてデータを並べ替えることができます。以下のように操作してください:
1. データの隣にある空白セルにこの数式「=RAND()」を入力し、下にフィルハンドルをドラッグして次のスクリーンショットのようにランダムな数字のリストを作成します。
2. 引き続き数式セルを選択し、必要に応じて [データ] をクリックして [A から Z へ並べ替え] または [Z から A へ並べ替え] を選択します。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. そして、[ソート] ボタンをクリックすると、データリストがすぐにシャッフルされます。スクリーンショットをご覧ください:
驚きの機能でセル、行、または列をランダムに並べ替え
Kutools for Excel は、強力な機能である「範囲をランダムに並び替え」をサポートしています。この機能を使用すると、セルの範囲内のデータをランダム化したり、選択範囲の各列や行ごとにデータをランダム化したり、さらに一度にすべての行または列全体をランダム化することができます。
1. ランダムに並べ替えたいデータ範囲を選択し、次に [Kutools Plus] → [ソート] → [範囲をランダムに並べ替え] をクリックします。スクリーンショットをご覧ください:
2. 「並び替え、選択、またはランダムに」ダイアログボックスの「ソート」タブで、必要な次のオプションのいずれかを選択してください:
- すべての行:選択範囲内のすべての行をランダムにシャッフルします。
- すべての列: 選択範囲内のすべての列をランダムにシャッフルします。
- 各行のセル:各行のセルを個別にシャッフルします。
- 各列のセル:各列のセルを個別にシャッフルします。
- 選択範囲内のすべてのセル:選択した範囲内のすべてのセルをランダム化します。
3. 次に、「 OK」ボタンをクリックすると、データが即座にランダム化されます。
3.9 月、日、または月と日に基づいて日付のリストをソートする
Excelで日付を並べ替える場合、[並べ替え] 機能はデフォルトで日付のリストを年、月、日の順に並べ替えますが、特定の状況では、年を無視して日付を月または日、あるいは月と日で並べ替えたい場合があります。この問題をExcelでどのように解決すればよいでしょうか?
ヘルパー列を使用して日付のリストを月または日でソートする
日付を月または日に基づいてソートするには、日付から月または日の番号を抽出し、抽出した月または日の番号の列に基づいて日付をソートします。
1. ご使用のデータの隣にある空白セルに以下の数式を入力し、塗りつぶしハンドルを下にドラッグしてこの数式を他のセルにコピーしてください。スクリーンショットをご覧ください:
=MONTH(B2) (月番号を抽出)
=DAY(B2) (日数を抽出)
2. 月または日の番号が返された後、引き続き数式セルを選択し、必要に応じて [データ] > [A から Z へ並べ替え] または [ Z から A へ並べ替え] をクリックします。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. 次に、「並べ替え」ボタンをクリックすると、年と日を無視して日付が月別に並べ替えられます。スクリーンショットをご覧ください:
数回のクリックで日付のリストを月または日で並べ替える
Kutools for Excel をお持ちの場合、その Advanced Sort 機能を使用すると、数回のクリックで日付のリストを月または日のみで並べ替えることができます。
Kutools for Excel - Excel向けの300以上の必須ツールを搭載。永久に無料のAI機能をお楽しみください!今すぐダウンロード!
1. ソートしたいデータ範囲を選択し、次に Kutools Plus > ソート > 高度なソート をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「ソート基準」のドロップダウンリストから「月」または「 日」を選択します。最後に、「順序」セクションで必要なソート順を指定します。
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」のオプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、[ OK] ボタンをクリックすると、年を無視して指定した月または日に基づいてデータが並べ替えられます。スクリーンショットをご覧ください:
ヘルパー列を使用して日付のリストを月と日で並べ替える
これで、年を除いて日付のリストを月と日だけで並べ替える必要がある場合、TEXT関数を使用して日付を指定された形式のテキスト文字列に変換し、その後、必要なように並べ替え機能を適用できます。
1. データの隣にある空白セルに以下の数式を入力し、その数式をデータの最後までコピーすると、月と日が下のスクリーンショットに示すようにテキスト文字列として抽出されます。
=TEXT(B2,"MMDD")
2. 数式が含まれるセルを選択したまま、[ データ] → 必要に応じて [AからZへ並べ替え] または [ZからAへ並べ替え] をクリックします。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. 次に、「ソート」ボタンをクリックすると、データが月と日だけでソートされます。
3.10 曜日に基づいて日付のリストを並べ替える
曜日に基づいて日付のリストを並べ替えるとは、月曜日から日曜日、または日曜日から土曜日の順に日付をソートすることを意味します。このセクションでは、Excelでこのタスクを完了するための2つの方法を紹介します。
ヘルパー列を使用して日付のリストを曜日で並べ替える
曜日ごとに日付を並べ替える場合、曜日に応じた番号を返すための補助列が必要です。その後、その補助列を使って日付を並べ替えます。
1. 以下の数式を空白のセルに入力またはコピーし、塗りつぶしハンドルを下にドラッグしてこの数式を他のセルにコピーしてください。スクリーンショットをご覧ください:
=WEEKDAY(B2)(日曜日(1)から土曜日(7)まで)
=WEEKDAY(B2,2) (月曜日(1)から日曜日(7)まで)
2. 数式が含まれるセルを選択したまま、[データ] → 必要に応じて [A から Z へ並べ替え] または [Z から A へ並べ替え] をクリックします。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. そして、必要な並べ替え結果を得るために [Sort] ボタンをクリックします。スクリーンショットをご覧ください:
簡単なオプションで曜日順に日付リストを並べ替える
Kutools for ExcelのAdvanced Sort機能を使用すると、ヘルパー数式を一切使用せずに、この問題をできるだけ迅速に解決できます。
1. ソートするデータ範囲を選択し、次に [Kutools Plus] → [ ソート] → [高度なソート] をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「ソート基準」のドロップダウンリストから「曜日」を選んで、最後に「順序」セクションで必要なソート順を指定します。
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、[OK] ボタンをクリックすると、データは必要に応じて曜日順に並べ替えられます。スクリーンショットをご覧ください:
3.11 四半期に基づいて日付のリストを並べ替える
このセクションでは、年を無視して日付のリストを四半期ごとに並べ替える方法について説明します。2つのテクニックをご紹介します。
補助列を使用して日付のリストを四半期順に並べ替える
上記の解決策と同様に、指定された日付から四半期の番号を抽出するための関数ヘルパーカラムを作成し、その後、この新しいヘルパーカラムに基づいて日付をソートする必要があります。
1. 以下の数式を空白のセルに入力またはコピーし、塗りつぶしハンドルを下にドラッグして他のセルにこの数式をコピーしてください。スクリーンショットをご覧ください:
=ROUNDUP(月(B2)/3,0)
2. 引き続き数式セルを選択し、必要に応じて [データ] → [A から Z へ並べ替え] または [Z から A へ並べ替え] をクリックします。表示される [並べ替えの警告] プロンプトボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. そして、 ソート ボタンをクリックすると、データ範囲が四半期別にソートされます(以下のスクリーンショット参照):
便利な機能を使用して日付のリストを四半期ごとに並べ替える
Kutools for Excelがインストールされている場合、高度なソート機能を使用すると、このタスクを数回のクリックで解決できます。
1. ソートしたいデータ範囲を選択し、次に [Kutools Plus] → [ソート] → [高度なソート] をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションから選択し、「ソート基準」のドロップダウンリストから「四半期」を選択します。最後に、「順序」セクションで必要なソート順を指定します。
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがある」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 最後に、[OK] ボタンをクリックすると、選択した範囲が四半期ごとに必要な順序で並べ替えられます。
3.12 月名または曜日名に基づいてデータを並べ替える
月名がテキストとしてリスト化されている場合、それらを並べ替えると、1月から12月までの月順ではなく、アルファベット順に整理されます。月名を1月から12月の順に並べ替える必要がある場合、並べ替え機能内のカスタムソートを利用すると便利です。
1. 月名に基づいて並べ替えたいデータ範囲を選択し、次に [データ] > [並べ替え] をクリックして [並べ替え] ダイアログボックスを開きます。
2. [ソート] ダイアログ ボックスで、[列] セクションで月名を含む列名を選択し、[ソート基準] セクションで [セルの値] を選択し、最後に [順序] セクションで [カスタムリスト] を選択します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合、[データにヘッダーがある] オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、表示された「カスタムリスト」ダイアログボックスで、ワークシート内の月の表示形式に基づき、完全な月名(1月、2月、3月、…)または略称(1月、2月、3月…)を選択してください。スクリーンショットをご覧ください:
4. そして、[OK] > [OK] をクリックしてダイアログを閉じます。これで、データが月名の時系列順に並べ替えられました。下のスクリーンショットのように表示されます。
ヒント: 曜日名で並べ替えるには、必要に応じて「カスタムリスト」ダイアログボックスで完全な名前(日曜日、月曜日、火曜日、…)または短縮名(日、月、火…)を選択してください。
3.13 奇数または偶数に基づいてデータを並べ替える
Excelで数字を昇順または降順に並べ替えるのは簡単かもしれませんが、リスト内の数字を奇数から偶数、または偶数から奇数に並べ替えたことはありますか?このセクションでは、そのような操作を行うためのいくつかの方法を紹介します。
ヘルパー列を使用して奇数または偶数でデータを並べ替える
数字のリストを奇数または偶数で並べ替えるには、奇数または偶数を識別するための数式を作成し、その後でソート機能を適用する必要があります。
1. 数字のリストの隣に、空白のセルにこの数式 =ISODD(A2) を入力し、他のセルに数式をコピーするためにドラッグしてください。これで TRUE と FALSE が表示されます。TRUE は奇数を、FALSE は偶数を示します。
2. 引き続き数式セルを選択し、必要に応じて [データ] をクリックして [昇順] または [降順] を選択します。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. そして [Sort] ボタンをクリックすると、すべての偶数が一緒に 並べ替えられ、その後に奇数が続くか、またはその逆になります。スクリーンショットをご覧ください:
奇数または偶数でデータを並べ替える便利な機能
Kutools for ExcelのAdvanced Sort機能を使用すると、奇数から偶数、またはその逆の順に数字を迅速に並べ替えることができます。
1. 並べ替えたいデータ範囲を選択し、次に [Kutools Plus] → [並べ替え] → [高度な並べ替え] をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションからクリックし、「ソート基準」セクションで「偶数と奇数」を選択します。その後、ソート順を指定します(A から Z は偶数から奇数へのソート、Z から A は奇数から偶数へのソート)。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがあります」オプションがチェックされていることを確認してください。データにヘッダーがない場合は、チェックを外してください。
3. そして、[OK] ボタンをクリックすると、次の結果が得られます。
3.14 絶対値に基づいてデータを並べ替える
列に正の数と負の数が共に存在する場合、Excelではデフォルトで昇順または降順に数字が並べられます。しかし、特定の場合、データをソートする際に負の符号を無視したい場合があります。つまり、絶対値で数字をソートするということです。このタスクをExcelでどのように実現すればよいでしょうか?
ヘルパー列を使用して絶対値でデータを並べ替える
数値を絶対値で並べ替えるには、通常、まずすべての値を絶対値に変換する数式を作成し、その後で並べ替え機能を使用して数値を並べ替える必要があります。
1. 隣接する空白セル(例:B2)に、この数式 =ABS(A2) を入力し、塗りつぶしハンドルをドラッグしてこの数式を他のセルにコピーします。これで、すべての値が絶対値に変換されたことが確認できます。
2. 数式が含まれるセルを選択したまま、[データ] → 必要に応じて [ A から Z へ並べ替え] または [Z から A へ並べ替え] をクリックします。表示される [並べ替えの警告] ダイアログボックスで、[選択範囲を拡張する] を選択してください。スクリーンショットをご覧ください:
3. 次に「並べ替え」ボタンをクリックすると、すべての数値が以下のスクリーンショットのように絶対値で並べ替えられます。
便利なオプションを使用して絶対値でデータを並べ替え
ヘルパ列の作成に疲れた場合、ここではKutools for Excelをお勧めします。高度なソート機能を使用すると、数値を絶対値で直接かつ簡単に並べ替えることができます。
Kutools for Excel - Excel向けの300以上の必須ツールを搭載。永久に無料のAI機能をお楽しみください!今すぐダウンロード!
1. 並べ替えたいデータ範囲を選択し、次に [Kutools Plus] → [並べ替え] → [高度な並べ替え] をクリックします。
2. 「高度なソート」ダイアログボックスで、ソートしたい列を「列」セクションからクリックし、「ソート基準」セクションで「絶対値」を選択して、ソート順を指定します。スクリーンショットをご覧ください:
ヒント: データにヘッダーが含まれている場合は、「データにヘッダーがある」にチェックを入れてください。データにヘッダーがない場合は、チェックを外してください。
3. 次に、[OK] をクリックすると、負の符号を無視して、すべての数字が最小から最大、または最大から最小の値で並べ替えられます。
データを入力または変更するときに自動的にデータを並べ替える
Excelの並べ替え機能は動的ではないため、データが変更されるたびや新しいデータが追加されるたびに再び並べ替える必要があります。このセクションでは、データ範囲に新しい値が追加されるたびにデータを自動的に並べ替える方法について説明します。
4.1 数式を使用して列内の数値を自動的に並べ替える
数値のリストを昇順または降順で自動的に並べ替えるには、LARGE関数、SMALL関数、およびROW関数に基づいた数式を使用できます。
1. ご使用の元データの隣にある空白セルに以下の数式を入力またはコピーし、その後、この数式を適用したいセルまでフィルハンドルを下にドラッグすると、数字が最小値から最大値の順に並べ替えられます。スクリーンショットをご覧ください:
=IFERROR(SMALL($A$2:$A$100,ROWS(B$2:B2)),"")
注: この数式では、A2:A100 は自動的に並べ替えたい数値のリストで、新しい入力用にいくつかの空白セルを含んでいます。B2 は数式を入力するセルです。
2. これで、ソースデータを変更したり新しいデータを入力すると、以下に示すデモのように並べ替えられたリストが自動的に更新されます。
ヒント: 数値を降順で自動的に並べ替えるには、以下の数式を適用してください。
=IFERROR(LARGE($A$2:$A$100,ROWS(B$2:B2)),"")
4.2 数式を使用して列内のテキスト値を自動的に並べ替える
列内のテキスト値を自動的に並べ替えたい場合、上記の数式は機能しません。ここで、別の数式が役立つかもしれません。次の手順で行ってください:
1. データ列の隣にある空白セルに以下の数式を入力またはコピーし、最初のテキストを取得するために Ctrl + Shift + Enter キーを同時に押します。その後、数式セルを選択し、並べ替えたいセルまでフィルハンドルをドラッグしてください。スクリーンショットをご覧ください:
=IFERROR(INDEX($A$2:$A$100,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$100,">="&$A$2:$A$100),0)),"")
2. 今後、列Aに値を入力したり元のデータを変更すると、列Bの文字列は自動的に昇順で並べ替えられます。以下のデモをご覧ください:
ヒント: テキスト文字列を降順で自動的に並べ替えるには、以下の数式を適用してください(Ctrl + Shift + Enterキーを押すことを忘れないでください):
=IFERROR(INDEX($A$2:$A$100,MATCH(ROWS($A$2:A2),COUNTIF($A$2:$A$100,">="&$A$2:$A$100),0)),"")
4.3 VBAコードを使用して列内の数値とテキスト値の混合を自動的に並べ替える
列に数値とテキストの両方がある場合、データの一覧を自動的に並べ替えるには、以下のVBAコードが役立つかもしれません。
1. 自動的にデータをソートしたいシートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。開かれたMicrosoft Visual Basic for Applicationsウィンドウで、次のコードをコピーして空の「モジュール」ウィンドウに貼り付けてください。スクリーンショットをご覧ください:
VBAコード: データが入力または変更された際に昇順で自動的に並べ替える:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
On Error Resume Next
If Application.Intersect(Target, Application.Columns(1)) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
注: 上記のコードでは、入力されたデータが列Aで自動的に並べ替えられます。A1はヘッダー、A2はデータリストの最初のセルです。
2. その後、コードウィンドウを保存して閉じます。これで、列Aに新しいデータを入力したり、元のデータを変更したりすると、データは自動的に昇順で並べ替えられます。以下のデモをご覧ください:
ヒント: データのリストを降順で並べ替えたい場合は、次のコードを適用してください。
VBAコード: データが入力または変更された際に降順で自動的に並べ替える:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
On Error Resume Next
If Application.Intersect(Target, Application.Columns(1)) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Range("A1").Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
その他の並べ替えケース
日々の業務では、さまざまな並べ替えの需要に直面するかもしれません。このセクションでは、セル内のデータの並べ替え、列または行のデータを逆順に並べ替えるなど、その他の並べ替え方法をいくつか紹介します。
5.1 セル内のデータを並べ替える
単一のセル内のテキスト文字列をアルファベット順に並べ替える場合、例えば「HDAW」というテキストを「ADHW」に並べ替える場合や、カンマで区切られた複数の単語をセル内で並べ替える場合(例: 「word, outlook, excel, access」を「access, excel, outlook, word」に並べ替える)があります。このセクションでは、Excelでこのようなタイプの並べ替えを解決する方法について説明します。
セル内の文字列値をアルファベット順に並べ替える
セル内の文字列値をアルファベット順に並べ替えるには、ユーザー定義関数を作成する必要があります。以下の手順で行ってください。
1. ALT + F11 キーを押しながら押して、 Microsoft Visual Basic for Applications ウィンドウを開きます。
2. [挿入] をクリックし、[モジュール] を選択して、次のコードをモジュールウィンドウに貼り付けます。
VBAコード: セル内のテキスト値をソートする
Function SortCellContents(xRange As Range)
'Updateby Extendoffice
Dim xArr
Dim xF1, xF2 As Integer
Dim xStrValue As String
Dim xStrT As String
If xRange.Count <> 1 Then
Exit Function
End If
xStrValue = xRange.Value
ReDim xArr(1 To Len(xStrValue))
For xF1 = 1 To UBound(xArr)
xArr(xF1) = Mid(xStrValue, xF1, 1)
Next
For xF1 = 1 To UBound(xArr)
For xF2 = xF1 To UBound(xArr)
If Asc(xArr(xF2)) < Asc(xArr(xF1)) Then
xStrT = xArr(xF2)
xArr(xF2) = xArr(xF1)
xArr(xF1) = xStrT
End If
Next xF2
Next xF1
SortCellContents = Join(xArr, "")
End Function
3. その後、このコードを保存して閉じ、ワークシートに戻ります。そして、結果を返すための空白セルにこの数式 =SortCellContents(A2) を入力し、フィルハンドルを下にドラッグして数式を他のセルにコピーすると、セル内のすべてのテキスト値がアルファベット順に並べ替えられます。スクリーンショットをご覧ください:
セル内の区切り文字で分かれたテキスト文字列をアルファベット順に並べ替えます
セル内に特定の区切り文字で分かれた複数の単語がある場合、それらをセル内でアルファベット順に並べ替えるには、以下のユーザー定義関数が役立ちます。
1. ALT + F11 キーを押しながら押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
2. 挿入 をクリックし、モジュール を選択して、次のコードをモジュールウィンドウに貼り付けます。
VBAコード: セル内のコンマで区切られたテキスト文字列をソート
Function SortCellWithSeparator(CellAddress As Range, DelimiterChar As String, IncludeSpaces As Boolean) As String
'Updateby Extendoffice
Dim xRg As Range
Dim xString As String
Dim xF1, xF2 As Integer
Dim xSArr
Dim xStrT As String
Dim xStrValue As String
Set xRg = CellAddress
xStrValue = WorksheetFunction.Substitute(xRg.Value, " ", "")
xSArr = Split(xStrValue, DelimiterChar)
For xF1 = 0 To UBound(xSArr)
For xF2 = xF1 + 1 To UBound(xSArr)
If xSArr(xF2) < xSArr(xF1) Then
xStrT = xSArr(xF2)
xSArr(xF2) = xSArr(xF1)
xSArr(xF1) = xStrT
End If
Next xF2
Next xF1
xStrValue = ""
For xF1 = 0 To UBound(xSArr)
xStrValue = xStrValue & xSArr(xF1) & DelimiterChar
Next xF1
SortCellWithSeparator = xStrValue
SortCellWithSeparator = Left(SortCellWithSeparator, Len(SortCellWithSeparator) - 1)
If IncludeSpaces = True Then SortCellWithSeparator = WorksheetFunction.Substitute(SortCellWithSeparator, ",", ", ")
End Function
3. その後、このコードを保存して閉じ、ワークシートに戻ります。結果を返す空白のセルにこの数式 =SortCellWithSeparator(A2,",",TRUE) を入力し、塗りつぶしハンドルを下にドラッグして数式を他のセルにコピーすると、セル内のすべての文字列がアルファベット順に並べ替えられます。スクリーンショットをご覧ください:
注: テキスト文字列が他の区切り文字で分かれている場合、この数式のカンマを自分の区切り文字に変更するだけで済みます。
5.2 列または行のデータの順序を逆にする/反転する
場合によっては、垂直方向のデータ範囲ではデータを上下逆に、水平方向のデータ範囲では左から右に並べ替える必要があるかもしれません。このセクションでは、Excelでこのタスクを解決するための3つの方法をご紹介します。
数式を使用して列または行のデータの順序を逆にしたり反転させたりする
次の数式を使用すると、列または行のデータの順序を反転できます。以下のように操作してください:
列内のデータの順序を反転する
結果を表示したい空白のセルに次の数式を入力またはコピーし、塗りつぶしハンドルを下にドラッグして、セルの値を逆順で返してください。スクリーンショットをご覧ください:
=OFFSET($A$10,-(ROW(A1)-1),0)
注: 上記の数式では、A1は最初のセルで、A10は列の最後のセルです。
行内のデータの順序を反転する
次の数式を適用して、行内のデータの順序を水平方向に反転します:
=OFFSET($A$1,,COUNTA(1:1)-COLUMN(A1),)
注: 上記の数式では、A1は行の最初のセルであり、1:1はデータが存在する行番号です。データが10行目にある場合は、それを10:10に変更する必要があります。
次に、すべての値が抽出されるまでフィルハンドルを右にドラッグすると、すべてのデータが水平方向に反転されます。スクリーンショットをご覧ください:
VBAコードを使用して複数の列または行のデータ順序を逆転/反転させる
上記の数式は、単一の列または行に対してのみ適切に機能します。複数の列や行に逆順にするデータがある場合、次のVBAコードが役立ちます。
セルの範囲内のデータを垂直方向に順序を反転する
1. まず、元のデータをバックアップし、次に ALT + F11 キーを押して Microsoft Visual Basic for Applications ウィンドウを開きます。
2. 挿入 をクリックし、モジュール を選択して、次のコードをモジュールウィンドウに貼り付けます。
VBAコード: 範囲内のセルを垂直方向に逆順で反転
Sub Flipvertically()
'updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
Dim i As Integer, j As Integer, k As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Arr = WorkRng.Formula
For j = 1 To UBound(Arr, 2)
k = UBound(Arr, 1)
For i = 1 To UBound(Arr, 1) / 2
xTemp = Arr(i, j)
Arr(i, j) = Arr(k, j)
Arr(k, j) = xTemp
k = k - 1
Next
Next
WorkRng.Formula = Arr
End Sub
3. 次に、F5キーを押してこのコードを実行すると、垂直方向に反転したいデータ範囲を選択するよう求めるプロンプトボックスが表示されます。スクリーンショットをご覧ください:
4. 次に、[OK] ボタンをクリックすると、データ範囲が以下のように垂直方向に反転します。
セル範囲内のデータの順序を水平方向に反転する
データ範囲を水平方向に反転するには、以下のVBAコードを適用してください:
VBAコード: 範囲内のセルを垂直方向に逆順で反転
Sub Fliphorizontally()
'updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
Dim i As Integer, j As Integer, k As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Arr = WorkRng.Formula
For i = 1 To UBound(Arr, 1)
k = UBound(Arr, 2)
For j = 1 To UBound(Arr, 2) / 2
xTemp = Arr(i, j)
Arr(i, j) = Arr(i, k)
Arr(i, k) = xTemp
k = k - 1
Next
Next
WorkRng.Formula = Arr
End Sub
このコードを実行すると、行のデータが水平方向に反転されます。スクリーンショットをご覧ください:
たった1回のクリックで列または行のデータ順序を逆にしたり反転させたりします。
Kutools for Excel をお持ちの場合、その Flip Vertical Range と Flip Horizontal Range 機能を使用すると、セルの範囲を上下または左右にワンクリックで反転できます。
セルの範囲内のデータを垂直方向に順序を反転する
1. 反転したいデータ範囲を選択し、次に [Kutools] → [ 範囲] → [範囲を垂直に反転] → [すべて / コンテンツのみを反転] をクリックします。スクリーンショットをご覧ください:
ヒント: 「すべて」オプションを選択すると、すべてのセルの書式が同時に反転されます。「コンテンツのみを反転」を選択すると、セルの値のみが反転されます。
2. その後、データ範囲は一度に垂直方向に反転されます。
セル範囲内のデータの順序を水平方向に反転する
1. データ範囲を選択し、次に Kutools > 範囲 > 範囲を水平に反転 > すべて / コンテンツのみを反転 をクリックします。スクリーンショットをご覧ください:
ヒント: 「すべて」オプションを選択すると、すべてのセルの書式が同時に反転します。「コンテンツのみを反転」を選択すると、セルの値のみが反転します。
2. その後、選択範囲内のすべてのセルの値が、以下のスクリーンショットに示すように、即座に水平方向に反転されます。
5.3 Excelでワークシートタブをアルファベット順またはタブの色で並べ替える
仮に、ワークブック内に多数のワークシートが存在し、それらのシートタブをアルファベット順に並べ替えたり、タブの色に基づいて並べ替えたい場合、通常の方法(ドラッグ&ドロップ)では多くの時間を浪費することになります。このセクションでは、シートタブを昇順または降順で整理するためのいくつかの便利な方法について説明します。
VBAコードを使用してワークシートタブをアルファベット順に並べ替える
次のVBAコードを使用すると、シートタブを昇順または降順でアルファベット順に並べ替えることができます。以下のように操作してください:
1. ALT + F11 キーを押しながら押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
2. 挿入 をクリックし、モジュール を選択してから、次のマクロをモジュールウィンドウに貼り付けます。
VBA: すべてのシートをアルファベット順に並べ替える
Sub SortWorkBook()
'Updateby Extendoffice
Dim xResult As VbMsgBoxResult
xTitleId = "KutoolsforExcel"
xResult = MsgBox("Click Yes to sort sheets in ascending order;" & Chr(10) & "Click No will sort in descending order", vbYesNoCancel + vbQuestion + vbDefaultButton1, xTitleId)
For i = 1 To Application.Sheets.Count
For j = 1 To Application.Sheets.Count - 1
If xResult = vbYes Then
If UCase$(Application.Sheets(j).Name) > UCase$(Application.Sheets(j + 1).Name) Then
Sheets(j).Move after:=Sheets(j + 1)
End If
ElseIf xResult = vbNo Then
If UCase$(Application.Sheets(j).Name) < UCase$(Application.Sheets(j + 1).Name) Then
Application.Sheets(j).Move after:=Application.Sheets(j + 1)
End If
End If
Next
Next
End Sub
3. 次に、このマクロを実行するために F5 キーを押します。表示される次のプロンプトボックスで、[はい] をクリックすると、すべてのワークシートが昇順のアルファベット順に並べ替えられます。[ いいえ] をクリックすると、必要に応じてすべてのワークシートが降順のアルファベット順に並べ替えられます。
強力な機能を使用してワークシートタブをアルファベット順/英数字順に並べ替え
Kutools for Excelは、強力な機能である「シートの並べ替え」を提供します。この機能を使用すると、ワークシートをアルファベット順または英数字順に並べ替えたり、タブの色に基づいてシートを並べ替えたり、必要に応じてシートタブを逆順に並べ替えることができます。
Kutools for Excel - Excel向けの300以上の必須ツールを搭載。永久に無料のAI機能をお楽しみください!今すぐダウンロード!
1. シートタブを並べ替えたいワークブックを開き、次に Kutools Plus > ワークシート > すべてのシートを並べ替える をクリックします。スクリーンショットをご覧ください:
2. 「シートを並べ替える」ダイアログボックスの右ペインで、アルファベット順に並べ替えや正確な並べ替えなど、必要な並べ替えタイプを選択します。スクリーンショットをご覧ください:
3. 次に、[OK] ボタンをクリックすると、すべてのワークシートが指定したソートタイプに基づいて並べ替えられます。スクリーンショットをご覧ください:
VBAコードを使用してタブの色に基づいてワークシートタブを並べ替える
Excelでワークシートタブをアルファベット順に並べ替えるのは一般的ですが、タブの色に基づいてシートタブを並べ替えることを試したことはありますか?以下のVBAコードはこの問題を解決するのに役立つかもしれません。次の手順で行ってください:
1. ALT + F11 キーを押しながら押して、Microsoft Visual Basic for Applications ウィンドウを開きます。
2. 挿入 をクリックし、モジュール を選択してから、次のマクロをモジュールウィンドウに貼り付けます。
VBA: シートタブの色に基づいてすべてのシートを並べ替える
Sub SortWorkBookByColor()
'Updateby20140624
Dim xArray1() As Long
Dim xArray2() As String
Dim n As Integer
Application.ScreenUpdating = False
If Val(Application.Version) >= 10 Then
For i = 1 To Application.ActiveWorkbook.Worksheets.Count
If Application.ActiveWorkbook.Worksheets(i).Visible = -1 Then
n = n + 1
ReDim Preserve xArray1(1 To n)
ReDim Preserve xArray2(1 To n)
xArray1(n) = Application.ActiveWorkbook.Worksheets(i).Tab.Color
xArray2(n) = Application.ActiveWorkbook.Worksheets(i).Name
End If
Next
For i = 1 To n
For j = i To n
If xArray1(j) < xArray1(i) Then
temp = xArray2(i)
xArray2(i) = xArray2(j)
xArray2(j) = temp
temp = xArray1(i)
xArray1(i) = xArray1(j)
xArray1(j) = temp
End If
Next
Next
For i = n To 1 Step -1
Application.ActiveWorkbook.Worksheets(CStr(xArray2(i))).Move after:=Application.ActiveWorkbook.Worksheets(Application.ActiveWorkbook.Worksheets.Count)
Next
End If
Application.ScreenUpdating = True
End Sub
3. 次に、F5キーを押してこのコードを実行すると、同じタブ色のシートが一緒に並べ替えられます。スクリーンショットをご覧ください:
驚きの機能を使用して、タブの色に基づいてワークシートタブを並べ替え
Kutools for Excelの「すべてのシートを並べ替える」機能を使用すると、ワークシートタブを色で簡単に迅速に並べ替えることができます。
1. Kutools Plus をクリックし、ワークシート > すべてのシートを並べ替える を選択して、「すべてのシートを並べ替える」ダイアログボックスを開きます。ダイアログボックスの右ペインにある「色による並べ替え」ボタンをクリックしてください。スクリーンショットをご覧ください:
2. 次に、[OK] ボタンをクリックすると、同じタブ色のシートが以下のように一緒に配置されます。
最高のオフィス生産性ツール
🤖 | Kutools AI Aide:データ分析を革新:インテリジェント実行 | コード生成 | カスタム数式の作成 | データを分析してグラフを生成 | Kutools Functions を呼び出す… |
人気機能:重複の検索・ハイライト・マーキング | 空白行を削除 | データを失わず列やセルを統合 | 丸める ... | |
スーパーLOOKUP:複数条件VLOOKUP | 複数値VLOOKUP | 複数シートの検索 | ファジーマッチ .... | |
高度なドロップダウンリスト:すばやくドロップダウンリストを作成 | 依存型ドロップダウンリスト | 複数選択ドロップダウンリスト .... | |
列の管理:特定数の列を追加 | 列を移動 | 非表示列の表示状態を切り替え | 範囲と列の比較 ... | |
注目機能:グリッドフォーカス | デザインビュー | 強化された数式バー | ワークブック&ワークシートの管理 | オートテキスト ライブラリ (Auto Text) | 日付ピッカー | データの統合 | セルの暗号化/復号化 | リスト送信で電子メールを送信 | スーパーフィルター | 特殊フィルタ(太字/斜体/取り消し線でフィルタ...) | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など) | 50 種以上のグラフ タイプ(ガントチャートなど) | 40を超える実用的な 数式(誕生日に基づいて年齢を計算する、など) | 19種の 挿入ツール(QRコードの挿入、パスから画像の挿入など) | 12種類の 変換ツール(単語に変換する、通貨変換など) | 7つの 結合&分割ツール(高度な行のマージ、セルの分割など) | ...さらに多数 |
Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...
Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます
- Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
- 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
- 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!