• ベストアンサー

エクセル2013の関数について

大量の住所録から、一部の文字列を使って検索し対象住所を一覧で表示させることが出来るように関数を組み立てしたいのですが、よくわかりません。どなたかご教授願います。例えば住所録は都道府県から番地まで記載してあります。検索文字列に中央区と入力したら、中央区に該当する住所をすべて一覧として表示させる方法です。vlookupなら完全一致しか表示できませんが、文字の一部で検索し対象住所を一覧に表示させたいのです。よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

=IF(COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*")>=ROW()-1,ROW()-1,"") IF文の条件部分が COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*")>=ROW()-1 COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*") でSheet1の住所上の件数をカウント ROW()-1は数式のある行の行番号-1で 件数以内の時に数値を表示、件数を超えるとブランクを表示するように設定しています。 COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*") の部分は MAX(Sheet1!$A:$A) でも代用可能ですが。。。 これで件数分の1から始まる数字がA列に並びます。 =IF(A2="","",VLOOKUP(A2,Sheet1!$A$2:$H$100,行番号,FALSE)) でA列がブランクの時は表示なし、数値の時にVLOOKUP関数で該当行を検索表示という設定です。

takaidesu
質問者

お礼

感謝しています。本当に助かりました。有難うございます。ROW関数はイマイチよくわかりませんが、また困ったら質問させてください。感謝感謝感謝!!!

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! すでに解決済みのようですが、一例です。 ↓の画像で左側がSheet1で右側のSheet2のA1セルに検索文字を1文字でも入力すると 表示するとします。 画像ではSheet2のA4セルに =IFERROR(INDEX(Sheet1!C$1:C$1000,SMALL(IF(ISNUMBER(FIND(A$1,Sheet1!C$1:C$1000)),ROW(A$1:A$1000)),ROW(A1))),"") これは配列数式になってしまいますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → Sheet2のA4セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをフィルハンドルで下へコピー! これで画像のような感じになります。m(_ _)m

takaidesu
質問者

お礼

詳細に教えて頂き、有難うございました。また何かありましたら質問させて頂きます。宜しくお願いします。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>オートフィルターではなく関数で一覧表を作成したいのです。宜しくお願いします。 作業用の数式列が用意できるなら可能だと思います。 Sheet2!A1が検索文字列のセル、Sheet1のC列が住所の列としてSheet1!A2を =COUNTIF($C$2:$C2,"*"&Sheet2!$A$1&"*") として下方にコピーしておきます。 Sheet2!A2に =IF(COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*")>=ROW()-1,ROW()-1,"") Sheet2!B2に =IF(A2="","",VLOOKUP(A2,Sheet1!$A$2:$H$100,行番号,FALSE)) で検索して表示すればOKです。 ※数式の範囲や行番号は適切な値に変更してください。

takaidesu
質問者

補足

ブラボー!!!!有難うございました。無事に出来ました。大変助かりました。ついでにそれぞれの関数を解説いただけると今後に活かせます。宜しくお願いします。 =COUNTIF($C$2:$C2,"*"&Sheet2!$A$1&"*") これは検索条件にあうセルを数える関数ですよね。Sheet2の検索文字列に*を入れて一部文字でも検索が出来るようにしておくこと。 =IF(A2="","",VLOOKUP(A2,Sheet1!$A$2:$H$100,行番号,FALSE)) これは調べたい表の中でこの検索文字列がどこの位置にあるのか指示しておいて一致したものを表示させるようにしておくこと。 =IF(COUNTIF(Sheet1!$C:$C,"*"&$A$1&"*")>=ROW()-1,ROW()-1,"") ここがよくわからないのですが、C列にある検索文字列該当したものを表示させる関数だと思うのですが、ROW関数をどう使ったらよいのか? >=ROW()-1,ROW()-1,"")ここはサッパリわかりません。 お手数をお掛けしますが、詳細な解説をお願いできますでしょうか。宜しくお願いします。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

オートフィルタでは駄目なのでしょうか? 別シートへの抽出なら、フィルタオプションの設定で実行できますけど。。。 http://www4.synapse.ne.jp/yone/excel2013/excel2013_filter.html

takaidesu
質問者

補足

早速有難うございます。オートフィルターではなく関数で一覧表を作成したいのです。宜しくお願いします。

関連するQ&A

  • ExcelのVlookup関数で一致した文字のセルの番地を取得する方法

    ExcelのVlookup関数で一致した文字のセルの番地を取得する方法 プログラム(VBA)で、検索で使用する関数でVlookup関数というのがあるというのが最近知ったのですが、Vlookup関数は、検索するセルの範囲を指定して、検索対象の文字列が一致した場合、そのセルの内容(値)を返すという風に書いてあったのですが、値ではなく、そのセルの番地を取得する方法はあるのでしょうか? ありましたら、その方法を詳しく教えてください。Vlookup関数以外でも検索するコードがあるようですが、Vlookup関数に限った場合でよろしくお願いします。 回答よろしくお願いします。

  • 自作関数について(VLOOKUP)

    質問させて下さい。 1ファイルの中に元データ(住所録)と都道府県マスタ(JISMS)というシートがあります。 住所録シートの列の中に住所データが入っており、その住所のデータと都道府県マスタと合致する場合にVLOOKUPで引き当てたデータを返すという関数がわからず困っています。 都道府県マスタは市区町村(都道府県付、都道府県なしの両方あり)のみで元データの中にある住所を左から1文字ずつ抽出し、マスターと合致するまで検索を続けるようにするものです。(ループは2文字~16文字の固定です) EXCELの関数であれば =vlookup(住所のセル,範囲,3,false) ですが、住所のセルを引き当てるためにleft関数で1文字ずつ抽出しているのが非常に面倒となっているため、一度にすべてをこなしてしまうVBAを考えています。 ex. 元データ:東京都中央区●●●・・・ 1文字目 東→NG 2文字目 東京→NG ・ ・ 6文字目 東京都中央区→100-0001(検索結果はダミーです)

  • エクセルの関数で都道府県名

    セル内に、都道府県名から番地まで入力されている文字列から横のセルに都道府県名、他のセルに都道府県を除いた住所を入れたいのですが、関数で処理できないでしょうか?よろしくお願いいたします。

  • エクセルの関数で

    Sheet1のA列に格納された値と一致する値を、Sheet2のA列に格納された値から検索し、もし一致する値が存在すればSheet1のE列に○を付けていくということを実現したいのですが、VLOOKUPを使ってもなかなかうまくいきません。 ちなみに、Sheet1とSheet2のA列には確かに一致する値(文字列)は存在するのですが、数量と並びはバラバラです。VLOOKUPの場合、DBでいう主キーみたいなものと値は一致している必要がありますか。例えば順番はバラバラでも、「1」という数値と「りんご」という文字列は両シートで共通して一致していないといけないみたいな…。 エクセルの達人の方がいらっしゃいましたらどうか宜しくお願い致します。

  • エクセル関数

    A列に数値を入れれば、B列に別シートからの検索結果(文字)を表示させるようにしています。 B列のセルに↓の式が入っています。 B1:VLOOKUP(A1,Sheet2!$A$1:$B$5,2,1) B2:VLOOKUP(A4,Sheet2!$A$1:$B$5,2,1) BX:VLOOKUP(AX,Sheet2!$A$1:$B$5,2,1) B列の結果が全て同一なら「OK」、不一致なら「NG」をC1セルに表示させたいのですが、A列に数値を入れていないためB列は、常に「#N/A」が表示され「NG」となります。 何か対処方法があればご教授願います。

  • 【エクセルの関数】で文字列を比較が解りません

    パソコン初心者です。エクセルのA列に住所、B列に番地が入っているファイル11と別ファイルのA列に住所と番地入っているデ-タを比較して、一致したらファイル11のF列に”1”を表示させたいのですが教えていただけませんでしょうか?

  • 【エクセル2000】郵便番号を入力すると住所を表示するようにしたい(過去質問確認済)

    エクセル2000で郵便番号を入力すると住所を表示するようにしたいと考えています。 表示方法と現在の関数は次の通りです。 【入力シート】 A列:郵便番号入力セル B列:住所 全体(=C列&D列&E列) C列:住所 都道府県 (=VLOOKUP(A列,'データシート'!$A:$D,2,FALSE) D列:住所 市町村 (=VLOOKUP(A列,'データシート'!$A:$D,3,FALSE) E列:住所 番地以下 (=VLOOKUP(A列,'データシート'!$A:$D,4,FALSE) 【データシート】 A列:郵便番号 B列:住所 都道府県 C列:住所 市町村 D列:住所 番地以下 表示方法はこののやり方で問題がないのですが、 全国住所データが約12万件以上あるため、エクセルの列に入りきりません。 過去の質問を確認しましたが、希望の回答はありませんでした。 どうにかして検索データの量を12万件以上にすることは出来ませんか? シートを複数に分けるとか、VLOOKUP関数の検索列を複数に分けるなどでも結構です。 宜しくお願いします。

  • ExcelのVLOOKUP関数について

    VLOOKUP関数で「検索の型」をFALSE(完全一致)に設定すると一致する検索値がない場合、「#N/A」とエラー値がでますよね。 このときにエラー値でなく、「該当なし」または 空白を表示したいのですが、どういう処理が適切でしょうか。

  • エクセルのVLOOKUPについて

    エクセルのVLOOKUPについて ものすごく読みづらい、理解しづらいかもしれませんが付き合ってください・・・ エクセルでvlookupを使って検索するときに検索する対象の表(シートではない)が複数あって、表ごとに空白の列で区切ってあって、検索するキーワードの文字列が同じものが複数ある場合、ダブっているものが複数あるので正常に検索することができないですよね? 検索する対象の文字列は全てダブっていないものでないといけないですよね? 検索する列範囲で一列目に検索する文字列の隣にたとえばグラフの範囲を書き込んだら検索する文字列のところにグラフの範囲が表示されますがその範囲に基づいて指定の種類のグラフを作成するような関数はありますか? 聞きたいことの要約 文字列で検索する 検索する範囲の2列目にグラフの範囲を書き込む VLOOKUPを検索する文字を書くところに入れる 文字で検索する グラフの範囲が返され自動的に縦棒グラフが自動的に表示される この様なことができますか?

  • エクセルの検索関数

     エクセルのVlookup関数は半角全角はもちろん、全く同じ文字列でないと値を返しませんが、検索機能の*「アスタリスク」のようにワイルドカード機能を持たせて、一部でも一致すれば値を返すようにはならないでしょうか?または他に良い関数、方法はないでしょうか?  ある2つの表を照合しているのですが、大変行数が多く書き方がバラバラで困っています。一つのセルにかっこ()で注釈が入っていたり、点やスラッシュが入っていたりもします。  宜しくお願い致します。

専門家に質問してみよう