※この記事内の一部リンクにはアフィリエイトリンク(PR)が含まれます。
エクセルで「C列」に特定の文字列(この場合「役立つ研究情報」)が含まれている行をフィルタリングして、「A列」「B列」「C列」を抽出する手順を以下に説明します。
手順
- C列にフィルタリング用のヘルパー列を追加
- C列の隣(例: D列)に新しい列を作成し、「ヘルパー」または「フィルタ」などの名前をつける。
- D2セルに次の数式を入力し、下にコピーします(データが始まる行が2行目の場合):excelコードをコピーする
=IF(ISNUMBER(SEARCH("役立つ研究情報", C2)), "対象", "") - この式は、「C列」に「役立つ研究情報」という文字列が含まれている場合に「対象」と表示し、含まれていない場合は空白を返します。
- フィルタを適用
- Excelのリボンメニューで、「データ」タブをクリックし、「フィルタ」を有効にします。
- D列のヘルパー列(「フィルタ」と名付けた列)のドロップダウンをクリックし、「対象」を選択してフィルタを適用します。
- 必要な列だけをコピー
- フィルタ結果として表示される行で、「A列」「B列」「C列」を選択してコピーします。
- 新しいシートや範囲に貼り付けます。
簡略化のための VBA コード
もしこれを頻繁に実行する必要がある場合、以下のようなマクロを使用して自動化できます。
- ExcelでAlt + F11を押してVBAエディタを開きます。
- 「挿入」 > 「モジュール」をクリックして新しいモジュールを作成します。
- 以下のコードを貼り付けます。
Sub FilterCategory()
Dim ws As Worksheet
Dim targetSheet As Worksheet
Dim lastRow As Long
Dim outputRow As Long
' 対象のシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1") ' データがあるシート名に変更
Set targetSheet = ThisWorkbook.Sheets.Add ' 抽出結果を新しいシートに出力
' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
' ヘッダーをコピー
ws.Range("A1:C1").Copy targetSheet.Range("A1")
outputRow = 2
' データをフィルタリングしてコピー
Dim i As Long
For i = 2 To lastRow
If InStr(ws.Cells(i, "C").Value, "役立つ研究情報") > 0 Then
ws.Range("A" & i & ":C" & i).Copy targetSheet.Range("A" & outputRow)
outputRow = outputRow + 1
End If
Next i
MsgBox "フィルタリング完了!"
End Sub
4. VBAエディタを閉じて、Alt + F8で「FilterCategory」マクロを選択し、実行します。
これにより、カテゴリ「役立つ研究情報」が含まれる行だけを抽出できます。どちらの方法でもご利用の環境に応じて試してください。




コメント