こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで、文字列を検索し、その文字を含んだセルの内容を別のシートに表示する。

SHEET1のA列に文字列を含むデータがあります。
これをデータベースとして、
SHEET2のセルA1に「ある特定の文字列」を含むSHEET1のセルの内容を表示させたい場合、どのような関数を使ったら良いでしょうか。

具体的には、SHEET1に特許明細の各項目が、A1~A100くらいまであります。
各項目には、例えば、出願人、出願日、効果、請求項などの文字列が含まれます。

そこでSHEET2のA1に「請求項」と入力すると「請求項」という文字列を検索し、その文字列を含んだセルの内容を表示させたいのです。そのセルは一つとは限りません。

以上のような事は、関数で可能でしょうか。

投稿日時 - 2003-05-12 16:53:40

QNo.545651

困ってます

質問者が選んだベストアンサー

すいません式の訂正です。
INDEX(SHEET1!$A$1:$A$100,SMALL(IF(SHEET1!$B$1:$B$100>=1,SHEET1!$C$1:$C$100),),C1),0)
でした。
配列数式がややこしいならSHEET1のB列に=COUNTIF(A1,"=*"&SHEET2!$A$1&"*")といれ、B100までコピーしたあと、次にC列に=IF(B1=1,A1&" ","")といれ、C100までコピーしていきます。SHEET2に
=CONCATENATE(SHEET1!C1,SHEET1!C2,------SHEET1!C100)
と入れると検出された項目がまとめてスペースで区切られて同一セルに出てきます。

投稿日時 - 2003-05-13 08:56:15

補足

ありがとうございます。もう少しでできそうなのですが、
INDEX(SHEET1!$A$1:$A$100,SMALL(IF(SHEET1!$B$1:$B$100>=1,SHEET1!$C$1:$C$100),),C1),0)
のところで、エラーになってしまいます。
お手数ですが、この式の考え方も含めて教えて頂けませんでしょうか。
(特に、SMALL(IF(SHEET1!$B$1:$B$100>=1,SHEET1!$C$1:$C$100),),・・・のあたりの考え方)
よろしくお願いいたします。

投稿日時 - 2003-05-13 14:05:16

お礼

その後できるようになりました!
INDEX(SHEET1!$A$1:$A$100,SMALL(IF(SHEET1!$B$1:$B$100>=1,SHEET1!$C$1:$C$100),C1),0)
の式の考え方として、B列が1より大きい場合は、C1となり、C1行のA列のデータを表示する・・・ということでよろしいでしょうか?
関数だけでここまで出来るとは思いませんでした。
大変参考になりました。ありがとうございます。

投稿日時 - 2003-05-13 18:28:42

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

作業セルを使えばいいですか
SHEET1のB列に=COUNTIF(A1,"=*"&SHEET2!$A$1&"*")といれ、B100までコピーしていきます。C列にはC1~C100に1~100の数字を入れておきます。次にSHEET2のC1~C100に1,2,3,4と一度に検索される十分の数のセルに入力しておき、B1に
=INDEX(SHEET1!$A$1:$A$100,SMALL(IF(SHEET1!$B$1:$B$100>=1,SHEET1!$C$1:$C$100),),C1)
と入力しShiftキーとCtrlキーを押しながらEnterキーを押し配列数式にします。それをB列にコピーしていくと順番に検出した項目が出てきます。

投稿日時 - 2003-05-13 08:44:00

ANo.3

VBAで
(テストデータ)Sheet1のA1:b13
グループ情報
a東京
d大阪
c福岡
f小倉
b高崎
ac伊勢崎
c佐野
c宇都宮
d竜野
d明石
d尼崎
h泉南
(ボタン)
ワークシートにボタンを1つ貼りつける。
(コード)
Private Sub CommandButton1_Click()
x = Worksheets("sheet2").Range("a1")
' MsgBox x
i = 2
Worksheets("sheet1").Activate
Worksheets("sheet1").Range("a1").Activate
m = 1
p01:
a = Worksheets("sheet1").Range("a1:a100").Find(what:=x, after:=ActiveCell).Activate
' MsgBox ActiveCell.Row
n = ActiveCell.Row
If m > n Then Exit Sub
Worksheets("sheet2").Cells(i, "A") = ActiveCell
Worksheets("sheet2").Cells(i, "B") = _ ActiveCell.Offset(0, 1)
i = i + 1
m = ActiveCell.Row
GoTo p01
End Sub
(操作)
Sheet2のA1にcをいれ
ボタンをクリック
(結果)
Sheet2のA1:B5は
c
c福岡
ac伊勢崎
c佐野
c宇都宮
となります。

投稿日時 - 2003-05-13 00:01:12

お礼

ありがとうございます。

投稿日時 - 2003-05-25 17:45:16

ANo.2

「データ」~「フィルタ」~「フィルタオプションの設定」でできると思います。
リストとは別のセルに検索条件範囲を作ります。
(列の項目行と検索条件入力用)
データ範囲とは一行空白列をもうけます。
上記コマンドから設定。
「抽出先を指定した範囲(F)」にチェックを入れないと同じシートにコピーされます。
リスト範囲は絶対指定に、検索条件範囲は別のセルに作った番地名、抽出範囲を別のシートに指定。
ヘルプの質問で「複数の条件に該当するデータを抽出する」と入力してやればそこにかかれています。
これは複数の条件での抽出方法で、実際にやったことはありますが、条件が一つだけでもいけるかどうかは試していませんので悪しからず。

投稿日時 - 2003-05-12 20:09:04

ANo.1

セルが一つだけならば、
VLOOKUP
でできるでしょう。
=VLOOKUP(検索する文字,範囲,範囲の何番目を取得するか,TRUE か FALSE)

として使えます。
範囲は A1:C5 とかというふうに 指定します。
何番目というのは A だったら 1
C だったら 3 とかいうふうに指定します。

投稿日時 - 2003-05-12 17:18:13

あなたにオススメの質問