KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

表示されているセルのみに貼り付け:Excel で非表示の行をスキップ

著者Xiaoyang変更日

Excel には長年にわたりユーザーを悩ませ続けてきた、よく知られた制限があります。データをコピーしてフィルター適用済み(非表示の行がある)リストに貼り付けようとすると、Excel は非表示の行にも貼り付けてしまい、データが破損してしまうのです。この問題のせいで、ユーザーは何百時間もの再作業やデータ復旧を余儀なくされてきました。
根本的な問題は、Excel が「表示セルのみをコピー」する簡単な方法(Alt+; や「ジャンプ」→「条件を選択」)を提供している一方で、「可視セルにのみ貼り付け」する機能が標準で搭載されていない点にあります。フィルター適用範囲に貼り付ける際、Excel は選択範囲の左上のセルから連続的に貼り付けを行い、行の表示・非表示状態を一切考慮しません。
以下では、フィルター適用済みの表示行にのみデータを貼り付けたり入力したりするための、実用的な方法をいくつかご紹介します。

表示されているセルに貼り付け

表示されているセルのみに同じ値を貼り付けます

表示されているセルのみに異なる値を貼り付けます

フィルター適用リストへの貼り付け時の重要な注意点

結論


表示されているセルのみに同じ値を貼り付けます

フィルター適用済みのリストに同じ値(例:すべての表示行に同じステータス、備考、カテゴリを追加)を入力したい場合、1 行ずつ貼り付ける必要はありません。Excel では表示されているセルのみを選択できるため、非表示の行は自動的にスキップされます。

この方法は、フィルターを適用した後で特に便利です。たとえば、「地域」列を「東部」のみ表示するようにフィルターした後でステータスに「完了」などの同じ値を入力しても、フィルターによって非表示になっている行には影響しません。

  1. フィルター適用済みの列で貼り付け先のセルを選択します。
  2. 表示されているセルのみを選択するには、Alt + ;キーを押してください。スクリーンショットを参照:
    Alt + ; キーで表示されているセルを選択
  3. 次に、入力したい値を直接入力し、Ctrl + Enterキーを同時に押すと、Excel は表示されているセルのみに入力し、非表示の行はスキップされます。
    入力したい値を直接入力し、Ctrl + Enter キーを押す

注記

  • この方法は、すべての表示セルに同じ値を入力したい場合に最適です。
  • 表示行に異なる値のリストを貼り付ける必要がある場合は、以下の方法をご利用ください。

表示されているセルのみに異なる値を貼り付けます

フィルター適用済みのテーブルに異なる値のリストを貼り付ける際には、少し工夫が必要です。たとえば、「地域」列で「東部」のみを表示するようにフィルターをかけた後、「完了」「保留中」「出荷済み」「承認済み」などのステータス値を表示されている行にのみ貼り付けたい場合、各値が確実に次の表示セルに貼り付けられ、非表示の行が一切変更されない安全な方法が求められます。
異なる値を表示されているセルに貼り付け

 

方法1:ヘルパー列を使用

フィルターをかけたリストに異なる値のリストを貼り付ける必要がある場合、通常のコピー&ペーストでは正しく動作しないことがあります。これは、フィルターで表示されている行が連続していないためです。非表示の行を上書きしないようにするには、2 つの補助列を使って一時的に表示中の行を並べ替え・グループ化し、新しいデータを貼り付けた後、元の順序に戻すことができます。

手順1:フィルターを解除し、並び順用のヘルパー列を追加します

  1. まず、データ > フィルターをクリックして、既存のフィルターを解除します。
  2. 次に、データテーブルの横に補助列を追加して元の行順を記録します。たとえば、セル D2 に「1」、セル D3 に「2」と入力し、D2:D3 を選択してフィルハンドルをデータの最終行までドラッグします。この補助列は、並べ替えと貼り付け後に元の順序を復元する際に使用します。スクリーンショットをご参照ください。
    Excel に順序ヘルパー列を追加

手順2:データをフィルターし、表示されている行にマークを付けます

  1. 再度、データ > フィルターをクリックしてフィルターを適用し、条件に基づいて列を絞り込みます。たとえば、「東」のレコードのみを表示するように設定できます。
  2. 別の補助列で、最初の表示行に次の数式を入力します:
    =ROW()
  3. 次に、この数式を表示されている行全体にフィルします。これにより、フィルター済みのレコードがマークされ、次のステップでまとめてグループ化できるようになります。
    Excel で ROW 関数を使って表示されている行にマークを付ける

手順3:フィルターを解除し、表示行用ヘルパー列で並べ替えます

再度フィルターを解除し、次に ROW()関数の結果を含むヘルパー列を使ってテーブルを昇順に並べ替えます。これにより、フィルターされたレコードが連続した範囲にまとまります。

Excel で表示されている行のヘルパー列で並べ替え

手順4:新しいデータを貼り付けます

新しいデータをコピーして、まとめられたレコードに貼り付けます。貼り付け先の行が連続しているため、Excel は他のレコードに影響を与えることなく、正確にデータを貼り付けられます。

Excel のグループ化されたフィルター済みレコードに新しいデータを貼り付け

手順5:元の並び順を復元します

新しいデータを貼り付けた後、元の並び順を保持するためのヘルパー列を使ってテーブルを昇順に並べ替えます。これにより、ワークシートの行の配置が元の状態に戻ります。

Excel で元の行の順序を復元

手順6:ヘルパー列を削除します

最後に、ヘルパー列を削除するか、内容をクリアしてください。結果を確認するには、再度フィルターを適用できます。フィルター条件に一致したレコードのみが更新され、他のすべての行は変更されません。スクリーンショットをご参照ください。

ヘルパー列を削除し、更新された表示行を Excel で確認

注記:

この方法では、隣接していない表示セルに直接貼り付けるわけではありません。代わりに、フィルターされた行を一時的に連続した範囲にまとめてから新しいデータを安全に貼り付け、その後、ヘルパー列を使って元の行順序を復元します。

メリットとデメリット:

メリット:
  1. 異なる値で動作します
  2. 非表示行を上書きしません
  3. 古いバージョンのExcel にも対応
  4. 元の順序を復元可能に保持
欠点:
  1. より多くの手順が必要
  2. 補助列が正しく設定されていないと、ミスをしやすい
  3. 非常に大規模なデータセットには不向き
  4. 一時的に行の順序が変更される
 

方法2:VBA コードを使用する

フィルターをかけた行に頻繁に異なる値を貼り付ける必要がある場合は、VBA がより直接的で効率的な解決策です。

このマクロは、ソース範囲から値を取得し、フィルターされた対象範囲の表示セルにのみ貼り付け、非表示の行はスキップします。

  1. Excel でALT + F11キーを押すと、Microsoft Visual Basic for Applicationsウィンドウが開きます。
  2. 次に、挿入>標準モジュールをクリックし、モジュールウィンドウに次のコードを貼り付けます。
    Sub PasteIntoVisibleCellsOnly()
        Dim SourceRange As Range
        Dim TargetRange As Range
        Dim VisibleCells As Range
        Dim Cell As Range
        Dim i As Long
        On Error Resume Next
        Set SourceRange = Application.InputBox("Select the source values to copy:", Type:=8)
        Set TargetRange = Application.InputBox("Select the filtered target range:", Type:=8)
        On Error GoTo 0
        If SourceRange Is Nothing Or TargetRange Is Nothing Then Exit Sub
        On Error Resume Next
        Set VisibleCells = TargetRange.SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
        If VisibleCells Is Nothing Then
            MsgBox "No visible cells found in the target range.", vbExclamation
            Exit Sub
        End If
        If SourceRange.Cells.Count > VisibleCells.Cells.Count Then
            MsgBox "The source range contains more cells than the visible target range.", vbExclamation
            Exit Sub
        End If
        i = 1
        For Each Cell In VisibleCells
            If i <= SourceRange.Cells.Count Then
                Cell.Value = SourceRange.Cells(i).Value
                i = i + 1
            Else
                Exit For
            End If
        Next Cell
        MsgBox "Data has been pasted into visible cells only.", vbInformation
    End Sub
  3. F5キーを押すか、実行ボタンをクリックしてこのコードを実行してください。すると、コピーしたい元の値を選択するよう促すプロンプトボックスが表示されます。スクリーンショットを参照してください:
    コピーする元の値を選択
  4. 次に、OKをクリックすると、別のダイアログボックスが表示されます。そこに、データを貼り付けたいフィルター適用済みのセル範囲を選択してください。スクリーンショットを参照:
    フィルター済みの貼り付け先範囲を選択
  5. OKをクリックすると、非表示の行には影響を与えず、表示されている行にのみデータが貼り付けられます。スクリーンショットを参照してください:
    VBA を使って表示されている行のみにデータを貼り付け

メリット:

  • 異なる値に最適です。
  • フィルターで除外された行を自動的にスキップします。
  • 繰り返しのタスクにぴったりです。

欠点:

  • VBA が必要です。
  • ブックを .xlsm 形式で保存する必要があります。
  • マクロを有効にしてください。
 

方法3:Kutools for Excel を使用する

フィルターをかけた行に、より素早く・初心者にも使いやすい方法でデータを貼り付けたいなら、Kutools for Excel がおすすめです。補助列や VBA コードを使う代わりに、表示中のセルに直接データを貼り付け、非表示の行を自動的にスキップする機能を提供します。フィルターをかけたテーブルを頻繁に扱い、非表示データを誤って上書きするリスクを避けたいユーザーに最適な選択肢です。

  1. フィルターを適用したリストにコピー&ペーストしたいソースデータの範囲を選択し、次にKutools > 範囲 > 可視範囲に貼り付け > すべて / 値のみ貼り付けをクリックしてください。スクリーンショットを参照:

    ヒント:

    • 値のみ貼り付けオプションを選択すると、フィルター済みのデータに値だけが貼り付けられます。
    • 「すべてAll」オプションを選択すると、値と書式の両方がフィルター済みデータに貼り付けられます。
    Kutools for Excel の「表示セルに貼り付け」オプション
  2. 次に、可視範囲に貼り付けのプロンプトボックスが表示されるので、新しいデータを貼り付けたいセルまたはセル範囲をクリックしてください。スクリーンショットを参照:
    「表示範囲に貼り付け」の貼り付け先を選択
  3. 次に、OKボタンをクリックすると、新しいデータはフィルター適用中のリスト内にのみ貼り付けられ、非表示の行のデータはそのまま保持されます。

表示行のみにデータを貼り付け(Kutools for Excel 使用)

Excel でフィルター済みのデータを操作する際、通常のコピー&ペーストでは非表示行に影響を与えたり、非連続の表示セルへの貼り付けが失敗したりすることがあります。Kutools for Excel はシンプルな可視範囲に貼り付け機能を提供し、非表示行を自動的にスキップして表示行にのみデータを貼り付けるのに役立ちます。

非表示行を自動的にスキップ

フィルター後の表示行に値を貼り付け、非表示のデータを上書きしません。

異なる値を簡単に貼り付け

異なる値のリストを、正しい順序でフィルターされた行に素早く貼り付けましょう。

数式や VBA 不要

複雑な補助数式、並べ替え手順、マクロコードは一切不要。選択して貼り付けるだけで、あっという間に完了します。

フィルター済みテーブルに最適

ステータス、備考、カテゴリ、レビュー結果、またはフィルター済みレコードを一括更新するのに最適です。


フィルター適用リストへの貼り付け時の重要な注意点

  1. 通常の貼り付けでは期待通りに動作しない場合があります

    リストをフィルターすると、表示される行は多くの場合、非隣接になります。その場合、Excel は非連続の表示セルにコピーしたデータを正しく貼り付けられないことがあります。

  2. Alt + ; を慎重に使用してください

    Alt + ; は表示されているセルのみを選択するショートカットで、同じ値や数式を一括入力するのに最適です。

    異なる値のリストを貼り付ける際は、VBA または補助数式をご利用いただくのが安全です。

  3. 必ず事前にデータをバックアップしてください

    フィルター済みデータに貼り付ける前に、ワークシートのコピーを作成しておきましょう。これで、誤って上書きしてしまう心配がありません。

  4. 元データと貼り付け先の件数を確認してください

    異なる値を貼り付ける際は、ソースの値の数と貼り付け先のセル数が一致していることをご確認ください。


結論

フィルター適用済みのリストにデータを貼り付けて非表示の行をスキップする最適な方法は、貼り付ける内容によって異なります。

  • 同じ値を入力するには、Alt + ; を押した後、Ctrl + Enter を押してください。
  • 値が異なる場合は、ヘルパー列または VBA を使用して、各値を表示されている行にのみ確実にマッチさせてください。
  • 視覚的で簡単な解決策をお探しの場合は、Kutools for Excel がフィルター適用済みセルや表示セルの操作をより効率的にサポートします。