プロが教えるわが家の防犯対策術!

エクセルの表で文字列や数字を検索したときに、その文字や数字が書かれているセルを含む行だけを表示させることはできるでしょうか。
当該のセルは、列で見ると同じ列内だけではなく違う列にも散っています。

検索結果(Ctrl+Fの検索ウインドウ内で「すべて検索」を実施)でそこを全て選択(Ctrl+A)までは覚えていて、そのあと非表示?ショートカットキー3つ?とかの方法があったような気がするのですが手順をすっかり忘れています。
ご存じの方、教えていただけますでしょうか。

質問者からの補足コメント

  • (No.5の方へのお礼です。「お礼ができなくなっています」と表示されてしまうので)

    ありがとうございます。返信遅くなってすみません。
    以前やったことがあるショートカットの方法も、確かに一旦非表示にしてから検索~選択(Ctrl+A)から何かをしていたような記憶がありました。
    ただ今のPCにしてから、あれこれやってもどうしてもできなくて・・・

    お示し頂いた「ホーム」ー「書式」ー「非表示/再表示」に「行を再表示」があるのは気が付きませんでした。
    (もしかすると、365になってS/Cも「行を再表示」も変わったのかも)
    この方法だと以前と変わらないくらい早く、一覧が見れるようになりました。

    ありがとうございます。簡略な方法なのでBAに選ばせて頂きます。
    1~4の方にも重ねてお礼申し上げます。

      補足日時:2023/03/14 18:27

A 回答 (5件)

「ホーム」ー「書式」ー「非表示/再表示」の「行の非表示」または「行を再表示」で、選択されているセルを含む行の非表示/再表示が可能です。


ただし、「~セル以外」を操作することはできません。
したがって、選択されている行のみ表示したい場合は、最初に全ての行を非表示にした状態から、検索、すべて選択した後、上記の手順で再表示する必要があります。
    • good
    • 1

フィルタオプションでもできると思います。


または作業列を作って、その行に指定文字があるかどうかのフラグをたてて、オートフィルタでその列をフィルタリングするとかでも。

>そのあと非表示?ショートカットキー3つ?とかの方法があったような気がするのですが

検索結果を全て選択してもその後そこだけ残すやり方はできないんじゃないですかね。
いらないものを選択して、ショートカットキーで行選択にして非表示にするとかならわかりますけど。
いるものを行選択してコピペとかならできそうですがフィルタリングなんですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます。返信遅くなってすみません。

以前やったことがあるショートカットの方法も、確かに一旦非表示にしてから検索~選択(Ctrl+A)をしていたような記憶がありました。ただ今のPCにしてから、あれこれやってもどうしてもできなくて・・・

お礼日時:2023/03/14 18:06

こんばんは


VBAマクロを使用する事は許可されていますでしょうか・・・
もし使えるなら(少しの知識が必要)
使えない様であれば以下は忘れてください

手順(準備)
加工用に新規ブックを作り 2シート作成します

1シート目(一番左のシート)が加工元データ用シートです
元データの取得方法はコピペなどで A1セル より貼り付けます

2シート目が加工後の出力用データシートです

このブックは使い回しが出来るのでツールとして名前を付けてに保存すると必要な時に使用出来ます(マクロ有効ブック)

(使い方)
1. シート1のA1セル以下に元データを取得(空白で囲まれた塊が対象範囲)
2. シート2の A1セル にキーワードを入力(例 PT )
3. Altキー+F8キーを押し マクロダイアログを表示 マクロを実行
4. シート2 A2セル 以下に結果がコピーされます(現状の仕様)

処理速度はあまり早くはないかも知れません
実行コードは以下です
標準モジュールに下記コードをコピペ 

Sub 検索行コピー()
Dim rng As Range, startRng As Range, searchRng As Range
Dim key As String
Dim tmpRng As Range
Set searchRng = Sheets(1).Range("A1").CurrentRegion
' key = "PT"
key = Sheets(2).Range("A1").Value
Set rng = searchRng.Find(What:=key, LookIn:=xlValues, LookAt:=xlWhole)
Set startRng = rng
Set tmpRng = rng
Do While Not rng Is Nothing
Set rng = searchRng.FindNext(rng)
If Not rng Is Nothing Then Set tmpRng = Union(tmpRng, rng)
If rng.Address = startRng.Address Then
Exit Do
End If
Loop

If Not rng Is Nothing Then tmpRng.EntireRow.Copy Sheets(2).Range("A2")

End Sub

検索キーワードはセルの値と一致が条件です 
セル内の一部の文字列と一致で検索する場合は xlWhole を xlPart に 変更します
    • good
    • 0
この回答へのお礼

ありがとうございます。返信遅くなってすみません。
マクロを使うことは職場としては許されています(他に実行例あり)。
実際にやってみたのですが、私自身がマクロの作成に慣れていないため
うまく走らせることができませんでした。(検索一致は文字列です)
これは単純に私の力不足です。申し訳ありません。

お礼日時:2023/03/14 18:22

こんばんは



別のセルに抽出する形式でも良いのなら・・

365や2021であれば、FILTER関数が使えるので比較的簡単です。
添付図では検索値をG1セルに入力するものとして、それと同じ値を持つ行だけを抽出しています。

以下は、対象が4列の場合の例にしてありますが、F2セルに
=FILTER(A1:D30000,COUNTIF(OFFSET(A1,ROW(A1:A30000)-1,0,1,4),G1)>0,"")
の式を入力してあります。
「Excelでの検索結果を含む行だけを表示」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。返信遅くなってすみません。
実際にエクセル上でやってみました。番地拾うのがちょっと大変でしたが
該当するデータを抜粋(別記)できると別の後加工に繋げられるので
ありがたいです。

お礼日時:2023/03/14 17:47

どの様な業務をされているか推測出来ませんが毎回検索するより表を作成して、XLOOKUP又は、VLOOKUP関数で検索されたら業務が楽になると思われます。


解らなかったらもう少ししようとされている事を具体的に再度質問お願いいたします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
元の表(データベース)を作るのは私ではなく社内の他の部署で、私は必要なときに情報を引き出します。
A B C D
1 Xa PT ST ST
2 Xb ST ST ST
3 Xc ST PT ST
4 Xd ST ST ST
5 Xe ST ST PT
という5行4列のデータから、「PT」のセルを含む行だけを抜き出して
A B C D
1 Xa PT ST ST
3 Xc ST PT ST
5 Xe ST ST PT
と表示したいのです。これで、「PT」を含む行がXa、Xc、Xeと名付けられた3行だということがわかります。他のワークシートにコピペできれば最高ですが、画面で表示されるだけでも十分価値があります。
使用しているのはMicrosoft 365 Apps for businessです。
データベースの行数が3万行x30列、検索結果が110個とかになると、検索結果を一行一行拾うのはちょっと面倒なのです。

お礼日時:2023/03/10 17:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!