ここから質問投稿すると、最大4000ポイント当たる!!!! >>

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

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

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

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

このQ&Aに関連する最新のQ&A

A 回答 (5件)

すいません式の訂正です。


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)
と入れると検出された項目がまとめてスペースで区切られて同一セルに出てきます。

この回答への補足

ありがとうございます。もう少しでできそうなのですが、
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
    • good
    • 0
この回答へのお礼

その後できるようになりました!
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

作業セルを使えばいいですか


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列にコピーしていくと順番に検出した項目が出てきます。
    • good
    • 0

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宇都宮
となります。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2003/05/25 17:45

「データ」~「フィルタ」~「フィルタオプションの設定」でできると思います。


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

セルが一つだけならば、


VLOOKUP
でできるでしょう。
=VLOOKUP(検索する文字,範囲,範囲の何番目を取得するか,TRUE か FALSE)

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む


人気Q&Aランキング