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

セルの値に基づいて列を別のシートにコピーするには?

著者Sun変更日

日付がヘッダーになっている列にデータが分散している場合、あるワークシートから列全体を抽出し、ワークブック内の他の場所に入力された特定の日付値と一致する列のみを別のシートにコピーすることがよくあります。たとえば、Sheet1に各列のヘッダーが異なる日付になっているテーブルがあり、Sheet2!A1に目的の日付を入力するとします。このとき、Sheet1のヘッダーがSheet2!A1の日付と一致する列全体を、自動的または簡単にコピーしてSheet3に貼り付けたいですよね(下図参照)。これは、日々の指標を比較したり、スケジュールを管理したり、レポート用に時系列データを抽出したりする際によくある課題です。
セルの値に基づいて列をコピー


数式を使用してセルの値に基づき列を別のシートにコピーする

Excel のINDEX 関数とMATCH 関数を使えば、別のシートで参照されている特定のヘッダー値に基づいて、ソースシートから列全体を効率的に取得できます。セルの値が変更されると自動でデータが更新されるため、手動での調整や繰り返しのコピーペースト作業を大幅に削減でき、特に便利です。

1.コピー先のシートで、列の値を貼り付けたいセルを選択します。たとえば、Sheet3!A1をクリックして、次の数式を入力します:

=INDEX(Sheet1!$A1:$E1,MATCH(Sheet2!$A$1,Sheet1!$A$1:$E$1,0))
を押してEnter 数式を適用し、必要に応じて(通常は)Sheet1データ範囲に対応する行までフィルハンドルを下方向にドラッグしてください。データ範囲の終了位置にゼロが表示される場合があります。
セルの値に基づいて列を別のシートにコピーするための数式を入力

2.抽出された列を整理するため、必要に応じて結果のゼロセルを削除するか、フィルターで除外してください。

:この数式では、Sheet2!A1が検索対象の日付を含むセル、Sheet1!A1:E1がチェックするヘッダーの範囲です。実際のデータ構成や範囲のサイズに応じて、これらの参照を適宜調整してください。データテーブルがより大きい場合は、範囲を拡張する必要があります。また、データに空白セルが含まれていると、出力にゼロが表示される場合がありますので、よりクリーンな結果を得るためにフィルターやIFERROR 関数の使用をご検討ください。

💡ヒント:数式を設定せずに条件に基づいてセルをすばやく選択・処理したい場合は、以下に示すKutools for Excel の特定のセルを選択するツールをお試しください。このツールを使えば、条件に一致するセルを直接選択・操作でき、日常的または時折Excel を使う方のワークフローを効率化します。30 日間の無料トライアルをご利用いただけます。今すぐダウンロードしてお試しください。

Kutools で特定のセルを選択

VBA コード – セルの値に基づいて列を自動的に別のシートにコピーする

この列抽出作業を頻繁に行う場合や、目的の日付が変わるたびに数式や手動操作をいちいち設定したくない場合は、シンプルな VBA マクロをご活用ください。このスクリプトは、Sheet1Sheet2!A1の日付と一致する列を特定し、その列全体をそのままSheet3にコピーします。繰り返しのワークフローを自動化したり、動的なデータ構造を効率よく処理したりするのに最適です!

注意事項:マクロを実行する前に、必ず作業内容を保存してください。マクロの操作は元に戻せず、参照ミスによってデータが意図しない場所にコピーされる可能性があります。

1.Alt + F11を押して、Visual Basic for Applications エディターを開きます。VBA ウィンドウで、挿入 > 標準モジュールをクリックし、空のモジュールに次のコードを貼り付けてください:

Sub CopyColumnByDate()
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim lookupSheet As Worksheet
    Dim matchDate As Variant
    Dim lastRow As Long
    Dim colNum As Long
    Dim headerRange As Range
    Dim cell As Range
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set wsSource = Worksheets("Sheet1")
    Set wsDest = Worksheets("Sheet3")
    Set lookupSheet = Worksheets("Sheet2")
    matchDate = lookupSheet.Range("A1").Value
    
    Set headerRange = wsSource.Range(wsSource.Cells(1, 1), wsSource.Cells(1, wsSource.Cells(1, wsSource.Columns.Count).End(xlToLeft).Column))
    colNum = 0
    
    For Each cell In headerRange
        If cell.Value = matchDate Then
            colNum = cell.Column
            Exit For
        End If
    Next cell
    
    If colNum > 0 Then
        lastRow = wsSource.Cells(wsSource.Rows.Count, colNum).End(xlUp).Row
        wsDest.Range("A1").Resize(lastRow, 1).Value = wsSource.Range(wsSource.Cells(1, colNum), wsSource.Cells(lastRow, colNum)).Value
        MsgBox "Data copied to Sheet3 column A!", vbInformation, "KutoolsforExcel"
    Else
        MsgBox "No matching header found.", vbExclamation, "KutoolsforExcel"
    End If
End Sub

2.VBA エディターを閉じて、Excel でAlt + F8を押してください。CopyColumnByDateを選択し、実行をクリックすると、Sheet1で日付が一致する列のデータがSheet3の A 列にコピーされます。

ヒント:ヘッダーが1 行目以外から始まる場合は、コード内の行参照を調整してください。データを別の開始列に貼り付けたい場合は、Range("A1")を目的のセルに合わせて変更してください。このマクロを頻繁に使うなら、ボタンに割り当てておけば、いつでもサッと使えます!

考えられるエラー:「一致するヘッダーが見つかりません」と表示された場合は、Sheet2!A1の日付がSheet1のヘッダー行の日付形式と完全に一致しているかご確認ください。


その他のExcel 組み込み機能 – フィルターを使用して列を絞り込みコピーする

Excel の組み込みフィルター機能を使えば、数式やマクロを使わずに列を絞り込んでコピーできます。この手動での操作は、たまに発生する一回限りの作業や、関数やスクリプトに慣れていないユーザーにとって特に便利です。

1.Sheet1に移動して、ヘッダー行(例:1 行目)を選択します。その後、データ>フィルターをクリックし、各ヘッダーにドロップダウンを追加しましょう。

2.ヘッダー行のフィルタードロップダウン矢印をクリックし、Sheet2!A1と一致する日付以外のすべての列のチェックをオフにしてください。日付が多数ある場合は、フィルターメニュー内の検索ボックスを使えば、目的の日付をすばやく見つけられます!

3.一致するヘッダーの下にある表示中の列を選択し、Ctrl + Cを押してコピーしてください。

4.Sheet3に移動し、貼り付けを開始したいセル(例:A1)をクリックしてから、Ctrl + Vを押して貼り付けます。

注記:フィルター方式は完全に手動のため、Sheet2!A1の日付を変更しても自動では更新されません。この方法は、自動化が不要なアドホックなデータ抽出や迅速なレビューに最適です。

メリット:数式やコーディングは一切不要!視覚的な操作で、誰でも簡単に作業できます。
デメリット:同じ作業を頻繁に繰り返すと手間がかかり、列の選択時に注意を怠るとミスが起きやすくなります。

kutools for excel AI のスクリーンショット

KUTOOLS AI でExcel の魔法を解き放ちましょう

  • スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
  • カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
  • VBA コーディング:VBA コードを簡単に記述・実装できます。
  • 数式の解釈:複雑な数式が簡単に理解できます。
  • テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
AI 搭載のツールでExcel の機能をさらに強化しましょう。今すぐダウンロードして、これまでにない効率を体験してください!

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 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 でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得