• ベストアンサー

エクセルにて検索

エクセルで作ったデータの中からデータを検索して該当するものを全て 抽出する関数を教えて下さい。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.6

No.1 & 4です。先ほどのマクロ、ちょっと修正しました。 表がA列からF列まである場合、1列あけてH1に検索条件、H3以降に検索結果が出る、というように表の大きさにかかわらず、表の右側に1列空行を開けて、1行目に検索文字列を書けば、その列の3行目以降に検索結果が出るようにしてみました。マクロを貼り付けても修正は必要ありません。 Sub SearchData()   Dim RngData As Range   Dim RngSearch As Range   Dim StrSearch As String   Dim RngResult As Range   Dim r0 As Range, r As Range   Dim i As Integer      With ActiveSheet     Set RngData = .Range("A1").CurrentRegion     Set RngSearch = .Cells(1, RngData.Columns.Count + 2)     Set RngResult = RngSearch.Offset(2, 0)     StrSearch = RngSearch.Value     .Columns(RngResult.Column).ClearContents     RngSearch.Value = StrSearch   End With      Set r = RngData.Find(StrSearch, , xlValues, xlPart)   If r Is Nothing Then     Exit Sub   End If   RngResult.Offset(0, 0).Value = r.Value      Set r0 = r   i = 1   Do     Set r = RngData.FindNext(r)     If r = r0 Then Exit Do     RngResult.Offset(i, 0).Value = r.Value     i = i + 1   Loop End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

maronです >、”山”の文字をセルに文字を入力して検索出来るように出来ないでしょうか? ◆「山」を、D1 に入力したとします ★D1に入力されている文字が含まれているものを、抽出 =IF(ROW(A1)>COUNTIF($A$1:$A$5,"*"&$D$1&"*"),"",INDEX($A$1:$A$5,SMALL(INDEX(SUBSTITUTE(N(ISNUMBER(FIND($D$1,$A$1:$A$5))),0,10^5)*ROW($A$1:$A$5),),ROW(A1)))) ★D1に入力されている文字が最後に付くものを、抽出 =IF(ROW(A1)>COUNTIF($A$1:$A$5,"*"&$D$1),"",INDEX($A$1:$A$5,SMALL(INDEX(SUBSTITUTE(N(RIGHT($A$1:$A$5)=$D$1),0,10^5)*ROW($A$1:$A$5),),ROW(A1))))

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.1です。補足拝見しました。 関数で、というのはちょっと難しいですね。私は関数の複雑な使い方は苦手なので、うまくやる方法はあるかもしれませんが私には思いつきませんでした。特定の値を検索したい場合には、関数でやるよりNo.2さんの書かれているようにフィルタを使うのが一般的です。 ですが、 > 抽出:条件に一致するセルを表の外に一覧表示で。 と書かれているので、そのようなマクロを組んでみました。 表の大きさがどれくらいかわからないので、とりあえずH1に検索文字列を、I列に検索結果一覧を出すようにしてみました。 Alt+F11でVBAの画面を立ち上げて、以下のマクロを貼り付けてください。その際、"H1"という部分と"I1"という部分は適切なセル番地に書き換える必要があります。 貼り付けた後、Alt+F8でこのマクロを実行してみてください。 Sub SearchData()   Dim RngData As Range   Dim RngSearch As Range   Dim StrSearch As String   Dim RngResult As Range   Dim r0 As Range, r As Range   Dim i As Integer      With ActiveSheet     Set RngData = .Range("A1").CurrentRegion     Set RngSearch = .Range("H1") '検索文字列を記入するセル     Set RngResult = .Range("I1") '検索結果が表示される先頭のセル     StrSearch = RngSearch.Value     .Columns(RngResult.Column).ClearContents   End With      Set r = RngData.Find(StrSearch, , xlValues, xlPart)   If r Is Nothing Then     Exit Sub   End If   RngResult.Offset(0, 0).Value = r.Value      Set r0 = r   i = 1   Do     Set r = RngData.FindNext(r)     If r = r0 Then Exit Do     RngResult.Offset(i, 0).Value = r.Value     i = i + 1   Loop End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆例えば、A列のデータで、 ★「山」が含まれているものを、B列に抽出 ★「山」が最後に付くものを、C列に抽出    A     B     C 1 富士山  富士山  富士山 2 鯛     山頂    六甲山 3 山頂    六甲山 4 桜 5 六甲山 B1=IF(ROW(A1)>COUNTIF($A$1:$A$5,"*山*"),"",INDEX($A$1:$A$5,SMALL(INDEX(SUBSTITUTE(N(ISNUMBER(FIND("山",$A$1:$A$5))),0,10^5)*ROW($A$1:$A$5),),ROW(A1)))) C1=IF(ROW(A1)>COUNTIF($A$1:$A$5,"*山"),"",INDEX($A$1:$A$5,SMALL(INDEX(SUBSTITUTE(N(RIGHT($A$1:$A$5)="山"),0,10^5)*ROW($A$1:$A$5),),ROW(A1)))) ◆こんなことでしょうか

bunnkiti
質問者

補足

ありがとうごいます。さらに補足ですが、”山”の文字を セルに文字を入力して検索出来るように出来ないでしょうか? 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにはち。 関数というのは、一般的に、1(数式)対1(解) なのです。(一般的にというのは、配列数式を使うと、複数の解が中に入るのですが、出口は一つしかありません) しかし、配列数式というのは、やはり特殊な使い方です。 基本的には、フィルタ・オプションというものを使います。(オートフィルタではありません。以前、区別が付かなかった人がいます。) データ-フィルタオプションの設定 リスト範囲 検索条件範囲 を入れて、OK をクリックして出します。

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ちょっと質問が抽象的なので、補足をお願いします。 ・検索条件はなんでしょうか。特定の値に一致するセル?それとも  セルの一部に特定の文字列が含まれているセル? ・抽出はどこにどういう形で行われるのでしょうか。条件に一致する  セルを表の外、または別のシートに一覧で書き出すのか(それだと  完全一致の検索をしたら、同じ内容のセルが並ぶだけですが)、  それとも検索で該当したセルのアドレス一覧が表示されるのか、  該当セルに色がつくのか。 とりあえずその辺りの情報を具体的に補足願います。

bunnkiti
質問者

補足

さっそくありがとうございます。 検索条件:セルの一部に特定の文字列が含まれているセル。 抽出:条件に一致するセルを表の外に一覧表示で。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルvlookup関数で、検索の型FALSEに該当する全てのデータ

    エクセルvlookup関数で、検索の型FALSEに該当する全てのデータを抽出するには、どうすればよいのでしょうか? emisensei

  • Excelで作表のデータ検索の関数を知りたい

    Excelで作表のデータ検索の関数を知りたい 作表したある列に指定した文字が含まれる行を抽出したい時使う関数ありませんか?質問下手ですいません宜しくお願いいたします。

  • EXCEL で検索、更新したい

    EXCEL でわからない箇所があり質問します。 前提条件 Sheet1 A列:名前 B列:年月 C列:値 データは、名前と年月で一意になるデータシートがあり マスターデータとして全データが登録されている Sheet2 A列:名前 B列:年月 C列:値 ある条件でとあるデータベースから抽出した名前と年月の一覧がある この段階で値のセルには何も入っていない やりたい事 (1)この状態でマクロを実行し、A列、B列を条件に該当する行から    C列を抽出しSheet2 にセット (2)Sheet2のC列の値を変更後、マクロの実行で    A列、B列の条件を元該当する行から、Sheet1の C列に値を更新 (3)もし、Sheet2のA列、B列の条件に該当しない行がある場合、    Sheet1に行追加しC列を格納 という事をしたいと考えています。 Sheet1 の全ての行をマクロでループさせて A列、B列をif分で比較し行を取得し、Sheet2 に張る場合、 遅くなるのであまりやりたくないと思っています Find 関数も考えたのですが、ヘルプを見る限り、条件が1つしか指定でき ないように思えるのですが、複数列の条件を指定できる Find 関数 あるいは、類似の関数とあかがあるのなら教えてください 最悪は、EXCEL ADO で、自分自身をSQLで抽出、Update、Insert を行う 事も考えていますが、 EXCELのセル内の式で、INDEX関数やDGET関数で簡単に抽出できるのに (ただ、値を変更するので式はかけないけど・・・) わざわざ、ADOでプログラムを組むのもどうなんだろうと疑問に思ってます。

  • エクセルの文字列検索でお知恵をお貸し下さい。

    エクセルのA1~A5セルに次のようなデータがあるとします。 1-01-0 1-01-1 2-01-11 10-111-0 100-1111-111 B1~B5セルに、これらのデータから以下のようなデータを検索・抽出する関数が分からずに困っています。 1-01 1-01 2-01 10-111 100-1111 つまり各セルの右側の"-"(ハイフン)より左にある、可変な全文字列をB列に抽出したいのです。 どうか宜しくお願いいたします。

  • エクセルで文字列の抽出

    エクセルのデータの中から、「年.月付け」(例 2007.02付け)」という文字列を すべて抽出したいのですが、「****.**付け」で関数で式を作成しても エラーメッセージがでて、うまく抽出できません。 (関数がまちがってるのかもしれませんが。。。) どのようにしたら、抽出できるのでしょうか? ご教示のほどよろしくお願いいたします。

  • Excel 関数 一度抽出された値を検索対象から外すには?

    Excel 関数 一度抽出された値を検索対象から外すには? Excelの関数について教えて頂きたいことがあります。例えばある検索範囲があり、vlookupか何かで対象の値を引っ張ってきたいのですが、検索値に対象となる値が複数ある場合、一度抽出された値を検索範囲から外し、次のvlookupではそれ以外の対象となる検索値から値を引っ張る、そしてそのまた次のvlookupでは既に抽出された2つの値を対象から外し検索値を探す、そしてそのまた・・・といったような関数の設定は可能でしょうか? もう少し詳しく状況を説明しますと、日付の"年"と"月"を検索値とし、範囲に該当する値が複数ある時に(仮に検索値を"2010年3月"とし、検索範囲の中に2010年3月1日、2010年3月8日、2010年3月15日を=year()&"/"&month()で表示させた値がある場合)、=vlookup("2010年3月",A:B,2,false)でまず一つ目を抽出し、次のvlookupでの検索の時に一つ目を検索対象から外して再度検索させ、さらに次では一つ目と二つ目を検索対象外として検索させたい、と考えています。 どなたかこのような関数の組み方をご存知の方、教えて頂きたく思います。別にvlookupにはこだわりませんので、近い方法でもいいのでどうぞ宜しくお願いします。

  • エクセルで複数のシートからの検索

    エクセルの件でご質問です! 「複数のシートがあり、その中で条件の一致するシートを検索し、更にそのシート内の条件に一致するものを抽出したい」 となるとどのような方法でやるのでしょうか? 特定のシートから抽出するのは、IF文で可能かと思いますが、その前に複数のシートを検索してからとなると、わかりません。 VBAに関しては、まったくわからない状態です。関数等でできればご教授頂きたいと思います。 どうかよろしくお願いいたします。

  • エクセルでワイルドカード検索がしたい

    こんにちは、いつもお世話になっています(*- -)(* _ _) 早速ですが・・・ エクセルにて A列に1~4桁の約1万件の数字が入っています。 その中から、特定のデータを抽出したいのですが方法がわかりません(T-T) 例えば ●「?14」で検索した場合 「514」「614」「914」などが抽出される ●「??14」で検索した場合 「6514」「1814」「2914」など・・・ ●「1???」で検索した場合 「1659」「1111」「1968」など・・・ その他、「?5」や「6??8」「57?1」など、 いろいろな数字のある一部分をワイルドカードにして検索したいのですが、どういう方法があるでしょうか?? オートフィルタを試したのですが、オプションの設定の仕方がよくないのかうまく抽出されません。 ちなみに    A 1 数字一覧 2 8 3 12 4 126 5 526・・・以下続く という感じになっています。B~F列までは別のデータが入っています。 こんな質問の仕方で上手く伝わるかわかりませんが、よろしくお願いいたしますm(__)m

  • CALCの検索について。

    オープンオフィスのCALCを最近使い始めているのですが なかなか分からないので、分かる方教えてください。 数値のデータがあるのですが、 その中で例えば"15"という数値を検索します。 データ量がたくさんあるので、 "15"の数値を含む行はたくさんあります。 その検索に該当したセルをすべて足し算したいのですが、 効率の良い方法、または関数とかあるのでしょうか? ぜひお願いします。

  • エクセルの検索

    エクセル2000を会社で使用しています。 ある顧客一覧をエクセルで作成していて、ある行が データ抽出時、使い勝手が悪くなり、 もともと1つだったセルのデータを2セルに分けて 入力するようにしたところ、編集→検索ツールで ひらがなやカタカナでも文字が検索できたのに、 セルを分けたとたん、完全一致でなければ検索ヒット しなくなってしまいました。 もちろん、検索のオプション項目の完全一致には チェックはいれておりません。 検索できるように、改善する方法はないでしょうか?

専門家に質問してみよう