メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

アクティブなシートのセル値に基づいて行全体をシートの下部に移動するにはどうすればよいですか?

Author Siluvia Last modified

Excelでは、特定の列のステータスや値に基づいてデータを再編成する必要がある場合がよくあります。例えば、タスクの進捗状況を追跡した後、「完了」ステータスのすべての行をワークシートの下部に移動し、進行中またはアクティブなタスクを上に保持したい場合があります。セルの値に基づいて行全体を自動的に再配置することで、ワークシートが管理しやすくなり、優先事項が強調され、未完了の項目に効率的に集中できます。

この操作をExcelで行う方法はいくつかあり、VBAコードを使用して自動化したり、数式やExcelの組み込みソート機能を利用する方法もあります。それぞれのアプローチには独自の利点があり、異なるシナリオに適しています。以下は、特定のセル値に基づいて行全体をアクティブなワークシートの一番下に移動するためのステップバイステップの解決策です。


VBAコードを使用して、アクティブなシート内の行全体をセル値に基づいて一番下に移動

列Cに「完了」というステータスが含まれているテーブルがあり、列Cに「完了」がある行をデータ範囲の最後に即座に移動させたいとします。このVBAソリューションは、手動でのソートをせずに動的なデータ変更に対応できる、繰り返し可能な半自動処理が必要な場合に特に役立ちます。

move entire row to the bottom of active sheet based on cell value

1. Alt + F11キーを同時に押してMicrosoft Visual Basic for Applicationsウィンドウを開きます。

2. Microsoft Visual Basic for Applicationsウィンドウで、挿入 > モジュールをクリックします。その後、下記のVBAコードをコピーしてウィンドウに貼り付けます。

VBAコード: セル値に基づいてアクティブなシートの一番下に行全体を移動

Sub MoveToEnd()
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xEndRow As Long
    Dim I As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg = Application.InputBox("Select range:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Or xRg.Areas.Count > 1 Then
        MsgBox " Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
    xEndRow = xRg.Rows.Count + xRg.Row
    Application.ScreenUpdating = False
    For I = xRg.Rows.Count To 1 Step -1
        If xRg.Cells(I) = "Done" Then
           xRg.Cells(I).EntireRow.Cut
           Rows(xEndRow).Insert Shift:=xlDown
        End If
    Next
    Application.ScreenUpdating = True
End Sub

注意: このVBAコードでは、参照される特定の値は“完了”です。この値を自身のワークフローに合わせて(例えば「終了」など)変更できます。値は大文字小文字やスペースも含めて正確に一致させるか、必要であれば大文字小文字を区別しないようにコードを調整してください。

3. F5キーを押すか、実行ボタンをクリックしてコードを実行します。表示されたKutools for Excelダイアログボックスで、対象値が出現する可能性のある列範囲を選択し、OKボタンをクリックします。

vba code to select the data range

確認後、コードは選択した列の中で「完了」という値を持つ行を自動的に検索し、その行をデータ範囲の一番下に移動します。この並べ替えは瞬時に発生し、手動でソートしたり行をドラッグする時間を節約します。

 the entire row contains the specific value is moved to the bottom of the data range

ヒント:

  • ヘッダーがある場合は、ヘッダ行が移動されないように選択時にそれを除外してください。
  • このVBAスクリプトは現在アクティブなワークシートにのみ適用されます。複数のシートでこの操作を行う必要がある場合は、各シートで同じプロセスを繰り返してください。
  • データに数式やリンクされたセルが含まれる場合、行を移動すると参照が変更される可能性があります。マクロを実行した後にワークシートを再度確認し、データの整合性を確保してください。

このVBA方式は、大量の行を定期的に処理する必要がある場合、特に手動でのソートが非効率的な場合に優れています。ただし、マクロを使用しない方法が必要な場合や、数式やExcel標準ツールを直接使用したい場合には次の方法をご覧ください。

a screenshot of kutools for excel ai

Kutools AIでExcelの魔法を解き放つ

  • スマート実行: セル操作、データ分析、グラフ作成を簡単なコマンドで行います。
  • カスタム数式: ワークフローを合理化するための独自の数式を生成します。
  • VBAコーディング: 簡単にVBAコードを作成し実装します。
  • 数式の解釈: 複雑な数式を簡単に理解できます。
  • テキスト翻訳: スプレッドシート内の言語障壁を取り除きます。
AI搭載ツールでExcelの機能を強化しましょう。今すぐダウンロードして、かつてないほどの効率を体験してください!

Excelの数式とソートを使用して行全体を一番下に移動

マクロを使いたくないユーザー、またはデータ管理を透明性を持って行いたいユーザーの場合、ヘルパー列とExcelの組み込みソート機能を使用して同じ効果を得ることができます。この方法は、協働環境や、マクロセキュリティ設定が有効になっている相手とファイルを共有する必要がある場合に特に役立ちます。

1. 現在のデータの右側または左側に新しいヘルパー列を挿入します。例として、データヘッダーが1行目にあり、値が2行目から始まり、ステータスがC列にある場合、D列を新しく挿入して「SortKey」などの名前を付けます。

2. ヘルパー列の最初のセル(ヘッダーを除き、例:D2)に以下の数式を入力します:

=IF(C2="Done",1,0)

この数式は、列Cが「完了」の行には1を割り当て、それ以外の行には0を割り当てます。

3. Enterキーを押して数式を確定し、それをすべてのデータ行にコピーします。単純にD2のフィルハンドルをデータの最終行までドラッグするか、隣接する列が埋まっている場合はフィルハンドルをダブルクリックして自動的に入力します。

4. データ範囲内の任意のセルを選択し、Excelリボンからデータタブへ行き、ソートをクリックします。

5. ソートダイアログボックスで、「ソート対象」ドロップダウンからヘルパー列(「SortKey」)を選択し、最小から最大の順序を選んでください。これにより、すべての「完了」(1にマークされている)行が一番下に配置され、それ以外の行(0にマークされている)が上に残ります。

6. OKをクリックしてソートを適用します。これで、データが再配置され、「完了」または「Done」のエントリが表の一番下に表示されます。

パラメーターの説明とヒント:

  • 数式内の「完了」を、シートに関連する他のステータスインジケーター(例:「終了」、「非アクティブ」)に変更できます。綴りがデータと正確に一致していることを確認してください。
  • 複数の値(例:「完了」と「キャンセル」の両方)を持つ行を移動したい場合は、次のような数式を使用します:
    =IF(OR(C2="Done",C2="Canceled"),1,0)
  • 効果を逆にする(つまり、「完了」の行を一番上に表示する)には、最大から最小の順にソートするか、数式内の0と1を入れ替えてください。

この方法では行が削除または非表示になることはなく、データ構造はそのまま維持されます。これは他の人と共同作業を行う際に理想的であり、異なるExcelバージョン間での互換性を確保し、マクロ有効ファイルの潜在的な問題を回避します。


関連記事

最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得