[[20031022103441]] 『複数セルを対象に検索したい』(中年独学) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数セルを対象に検索したい』(中年独学)

 連続した複数のセルを対象に、文字列の検索をしたい。
 また、その時の行番号を知りたい
 FIND("文字列",B10:B100) これが出来ればいいのだが・・・
 よろしくお願いします。


 B列にある文字列を検索したい場合、検索文字列を仮にJ2に入力して、J3に
=IF(ISERROR(MATCH(J2,B:B,0)),"検索文字はありません",MATCH(J2,B:B,0)&"行目です")
の式で検索文字の行位置を表示させられます。
 (シニア)


 シニアさんの式にのっかりますー
 検索文字が複数ヒットの場合

 =IF(ISERROR(MATCH(J2,B:B,0)),"検索文字はありません",IF(COUNTIF(B:B,"="&J2)>=2,"複数有ります",MATCH(J2,B:B,0)&"行目です"))

又は

 =IF(ISERROR(MATCH(J2,B:B,0)),"検索文字はありません",IF(COUNTIF(B:B,"="&J2)>=2,COUNTIF(B:B,"="&J2)&"個有ります",MATCH(J2,B:B,0)&"行目です"))
  しつこい(jun53)


 jun53さんのバージョンアップサービス紹介、有難う!(シニア)


シニアさん、jun53さんありがとうございます。
 早速やってみました!
 対象セルに住所などが入っている場合、検索文字が住所の一部の場合(例:川崎市など)
 完全一致でなく、検索文字列を含む場合を探したいのですが、わがまま済みません。
 よろしく ご教授ください。(中年独学)


 J2に *川崎市* と文字列の前後に * のワイルドカードを付けると「川崎市を含む文字列」となります。
J3の式
=IF(ISERROR(MATCH(J2,B:B,0)),"検索文字はありません",IF(COUNTIF(B:B,"="&J2)>=1,COUNTIF(B:B,"="&J2)&"個有ります。 "&"最初の文字は"&MATCH(J2,B:B,0)&"行目です。",))
で検索値があれば、「○個有ります。 最初の文字は○行目です。」と表示されます。
例B列に
神奈川県川崎市川崎区藤崎 
神奈川県川崎市多摩区生田
があればJ2に*川崎*で2個、*川崎市*で2個、*川崎区*で1個、*多摩*で1個と表示されます。
 (シニア)


 なんとまあ、シニアさんに又先を越されました(笑)
 多分大丈夫だと思いますので、試すだけ試して下さいませ。。  (jun53)

 =IF(ISERROR(MATCH("*"&J2&"*",B:B,0)),"検索文字はありません",IF(COUNTIF(B:B,"*"&J2&"*")>=2,COUNTIF(B:B,"*"&J2&"*")&"個有ります",MATCH("*"&J2&"*",B:B,0)&"行目です"))

 こちらは普通に 川崎市 と入力して下さい。


 (EUREKA)
 まったく別のアプローチもご紹介。
 [データ][フォーム]を使うと、関数の組み込み無しで、
 カード型データベース検索のようなことが可能です。
 ワイルドカードも併用できます。


 これは便利ですね!折角データが用意されているのですからEUREKAさんの紹介機能活用が光っています。
 [データ][フォーム]で[検索条件]を選択して、*?のワイルドカードや<,>,>=,<=など演算子もつかえて、
[前の検索][次の検索]で検索位置/データ数も表示され簡便な機能が揃っているのですね
 (シニア)

 =SMALL(IF(ISNUMBER(FIND(Targ,Basho)),ROW(Basho),""),ROW()-1)
 そして、ここが肝心なのですが、Shift+Ctrl+Enter を押します。式は、{  } で囲まれましたか? {  } で
 囲まれないとだめです。


 (EUREKA)
 エクセルをデータベース的な表集計でまとめていると、
 「検索」が重要なテーマになってきますね。結構、質問が多い部類なのでは。
 質問される方も、回答される方もハイレベルで。
 データ入力にもっぱら使うと思っていた[データ][フォーム]が、
 簡易検索に使えると解ったら、オー!これだ!(Eureka!) となった次第。

 モーターに電気を流したら回転し、
 逆にモーターを回転させたら発電したって感じ。
 (そんな単純なことではないでしょうが)。

 この方法のポイントは、
 @項目名(フィールド名)を完備させること。
 A検索ヒット行の目安は[Criteria]で判断できるのですが、
   正確に表示させるには「Hit記載行」なる新規項目名(新規列)をつくり、
   =if(A2="","",ROW()) を組み入れます。

 ヒット件数などではなく、検索キーに合致するレコードを
 1件1件プレゼンしてくれる機能と思ってください。
 現在5万人データパッケージもこの方法でやっています。
 新規レコードの追加(保守)も容易ですので、お勧めです。

 みなさんありがとう! 質問した"中年独学"です
 いやぁ〜回答がハイレベルなので、必死です・・・
 まだ拝見したばかりなので、これから教わったのを復習します。
 がんばります・・・・!

 最初に関数の質問だったので、みなさん関数での考えが多いみたいですけど、
 オートフィルタで十分な気がするのは、気のせいでしょうか?
 余分な行も非表示になるし、行番号も目立つし...

 (ramrun)お昼〜

 あらっ ほんとだっ
 オートフィルタで 〜を含む が有るんでしたね

 オートフィルタ偏見?の(jun53)

 エクセルに備わっている機能って
 そりゃもーたくさんあるのですが、興味を持たないと
 なかなか覚えないものですよね。
 こんなに簡単に出来ちゃうのか! とガックシ!

 でもオートフィルターは、
 「保護」をかけたシートでは使えないみたい。
 (EUREKA)

 皆さんありがとうございます。(中年独学)
 いろいろ試しました、jun53さんのを使いたいと思います。(^_^)
 通りすがりの者さんのは難しそうで理解が出来ない・・・・
 オートフィルタもやってみました、もし私が作業するのでしたら出来そうですが、素人に操作してもらうとなると難しいかも知れません。データが少なく、オプションを使わないでできればいいけど??
 フォームもいいですけど、やはり格好良く表を作るとなると関数を使うのがいいかな?
 ホントに皆さんありがとう、大変参考になりました。 v(^_^)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.