Excelで「公○/○」の文字列を特定して別シートに反映する方法

Office系ソフトウェア

Excelで公休や有給の管理を行う際に、「公1/1」「公2/1」など異なる表記の公休データをそのまま別シートに反映させる方法を解説します。本記事では、Excelの関数やフィルタ機能を活用し、指定の形式のデータを自動的に抽出する方法を紹介します。

Excelで特定の文字列を含むデータを抽出する方法

Excelでは、FILTER関数IF関数を使って、特定の文字列を含むデータを別シートに自動反映させることができます。

① FILTER関数を使う方法(Excel 365 / 2019 以降)

「公○/○」のデータを別シートにそのまま反映させるには、FILTER関数を使用するのが最も簡単です。

例えば、「Sheet1」のA列に日付、B列に「公○/○」などの勤務状況があるとします。

「Sheet2」に「公○/○」のみを抽出したい場合、B列のデータを参照して、以下の数式を使用します。

=FILTER(Sheet1!A:B, LEFT(Sheet1!B:B,1)="公")

解説:

  • FILTER(Sheet1!A:B, LEFT(Sheet1!B:B,1)="公") は、Sheet1のB列のデータの先頭が「公」の場合、その行をSheet2に抽出します。
  • 動的にリストを更新するため、新しいデータを入力してもリアルタイムで反映されます。

② IF関数とFILTER関数を組み合わせる方法

FILTER関数が利用できないExcelバージョンでは、IF関数とINDEX関数を組み合わせてフィルタリングを行います。

「Sheet2」のA1セルに以下の数式を入力し、Ctrl+Shift+Enter(配列数式)を実行します。

=IFERROR(INDEX(Sheet1!A:A, SMALL(IF(LEFT(Sheet1!B:B,1)="公", ROW(Sheet1!B:B), ""), ROW(A1))), "")

解説:

  • IF(LEFT(Sheet1!B:B,1)="公", ROW(Sheet1!B:B), "") で、「公○/○」の行番号を取得
  • SMALL(… , ROW(A1)) で、順番にデータを取り出す
  • INDEX(Sheet1!A:A, …) で、対応する日付を取得
  • IFERROR(… , "") で、エラーを空白にする

③ VBAを使用して「公○/○」データを別シートにコピーする

関数ではなく、VBAマクロを使って「公○/○」のデータを別シートにコピーすることも可能です。

Sub CopyPublicHolidays()
    Dim wsSource As Worksheet, wsTarget As Worksheet
    Dim lastRow As Long, targetRow As Long
    Dim i As Long
    
    Set wsSource = ThisWorkbook.Sheets("Sheet1") ' 元のシート
    Set wsTarget = ThisWorkbook.Sheets("Sheet2") ' コピー先のシート
    
    lastRow = wsSource.Cells(Rows.Count, 2).End(xlUp).Row ' B列の最終行を取得
    targetRow = 1 ' Sheet2の書き込み開始位置
    
    For i = 1 To lastRow
        If Left(wsSource.Cells(i, 2).Value, 1) = "公" Then
            wsTarget.Cells(targetRow, 1).Value = wsSource.Cells(i, 1).Value ' 日付
            wsTarget.Cells(targetRow, 2).Value = wsSource.Cells(i, 2).Value ' 公休データ
            targetRow = targetRow + 1
        End If
    Next i
    
    MsgBox "公○/○のデータをコピーしました。", vbInformation
End Sub

VBAの使用手順:

  1. Excelの[Alt] + [F11]を押してVBAエディターを開く
  2. [挿入] → [標準モジュール] を選択
  3. 上記のコードを貼り付ける
  4. [F5]を押して実行

このマクロを実行すると、Sheet1のB列から「公○/○」のデータをSheet2にコピーします。

まとめ

Excelで「公○/○」の文字列を含むデータを別シートに反映させる方法には、関数を使用する方法VBAを活用する方法があります。

  • Excel 365 / 2019 以降FILTER関数を使うのが最も簡単
  • 古いバージョンのExcelIF関数 + INDEX関数を組み合わせる
  • VBAで自動化:マクロを使って「公○/○」のデータを一括コピー

用途に応じた方法を選んで、公休や有給の管理を効率化しましょう!

コメント

タイトルとURLをコピーしました