• ベストアンサー

エクセルで教えて下さい(オートフィルタ)

初心者です、質問の内容がわかりにくかったらすみません。(同じ質問があったらごめんなさい) エクセルのオートフィルタ機能のオプションにある“XXXで始まる”という機能を関数で使うことが出来ないでしょうか?やりたい事、打ち込んだデータの中からXXXで始まる複数の行を抜き出したいのです。マクロ等の使い方がわからないので出来れば関数で処理がしたいです、これって出来ますか? データの中から一行だけ抜き出すのはLOOKUP等を使えば出来ると思うのですが。よろしくお願いします。

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

  • ベストアンサー
  • 134
  • ベストアンサー率27% (162/600)
回答No.3

F3のセルに =IF(LEFT(C2,3)=TEXT($F$1,"000"),C2,"nasi") と入力すると、C2の左から3文字文のデータを拾い、これが、F1セルの内容と一致したら、C2の値を、そうでなければ、nasiと、F3に表示されると思います。(3桁の数字の時←違うようなら、"000"内の0の数を変えてください)  なお、この式をコピーし、F4以降のセルに貼り付けると、C3,C4,C5…を調べ、F1と合致すると表示、不一致なら、nasiとなると思いますので、試してみてください。  なお、たぶん、こちらに誤解するところが まだまだ あると思いますので、不都合がありましたら、申し訳ありませんが、再度、今回のような不具合の情報を書き込んでくださいませ。  ではでは。

mogu-s
質問者

補足

ありがとうございます、初心者の何もわからない僕に丁寧に教えて頂いて。 すみませんが、もう少し教えて下さい。 上記方法でほぼやりたい事と同じなんですけど出来るのであれば教えて下さい。 上記方法だと3文字(0の数を変えない限り)しか検索できないと思うのですが 検索文字数を何文字でもOKにしたいのですが。やりたい事が、電話帳の検索みたいに頭の何文字かを入力し一致する電話番号を抜き出すみたいなことをやりたいので状況によって検索する文字数が変わってしまうので。あと、nasiの行を非表示にするなんて事も出来ますか?なにからなにまですみません。よろしくお願いします。

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

その他の回答 (5)

  • 134
  • ベストアンサー率27% (162/600)
回答No.6

 失礼しました。下の回答は、「オートフィルター」を使った時点で、目的を達成しているかもしれませんですね。(会社のものは、目的のものを抜き出したあと、上下セルの間で計算する必要があるので、マクロを使用しています)  なので、無難なのは、「オートフィルター」を使うことだろうと思います。

mogu-s
質問者

お礼

ありがとうございました。やっぱり最後はオートフィルターを使うことになっちゃうんですよね、とりあえず簡易プログラムも試して見ます。何度も何度も見ず知らずの僕に色々とご教授くださってありがとうございました、色々と勉強になりました。また何かあったらお願いします。今回の質問はこれで終わりにします、本当に何回も何回もありがとうございました。

すると、全ての回答が全文表示されます。
  • 134
  • ベストアンサー率27% (162/600)
回答No.5

 行を間引くという関数は、残念ながらないですね。これ以降は、マクロの領域になります。 会社で似たような処理をしているのですが、「マクロの記録」という簡易プログラミング機能を使っています。 あらかじめ、別シートに、コピーされるべき表を作っておきます。 1.オートフィルターで、不要な行を間引く。 2.ツール→マクロ→新しいマクロの記録 を指定し、「OK」をクリックする。 3.コピーされるべき、シートを選んだあと、その領域を、多めの列数ドラッグして、「Delete」キーを押す。 4.「取り出したい範囲+1行」をドラッグして、「コピー」を指定する。 5.別シートを選び、セル1つをクリックし、「形式を選択して貼り付け」「値のみ」を指定する。 6.ツール→マクロ→記録終了 をクリックする。 で、一応、汎用できるマクロが完成すると思います。 2.で、ショートカットキーを作成することもできますし、「表示」→「ツールバー」で、「コマンド」タグを指定し、マクロ → ユーザー設定ボタン で、ボタンを作ることもできます。 本当は、もっと簡素なプログラムにできるんだと思いますが、まだまだ、僕自身勉強不足で、よいアドバイスができません。 このあたりは、申し訳ないです。

すると、全ての回答が全文表示されます。
  • 134
  • ベストアンサー率27% (162/600)
回答No.4

=IF(LEFT(C2,3)=TEXT($F$1,"000"),C2,"nasi") の代わりに =IF(LEFT(C2,LEN($F$1))=TEXT($F$1,"####"),C2,"")としてみてください。 (変更点) 3→LEN($f$1) … F1の文字数を数えます。 "000" → "####" …この場合、4桁以内という指定になると思います。 "nasi" → "" … ダブルコーテーション2つ(ヌルストリングダラといいます)にすると、なんにもない=空欄 という指定になります。 (そのあとで、f4以降の列にコピーしてくださいませ) ご要望に合うか、今一度おためしくださいませ。

mogu-s
質問者

補足

何度も何度もすみません、文字数の制限は上記回答で直りました、ありがとうございました。もう一つの質問は僕の説明不足でした、すみません。 “nashiの行を非表示にしたい”は下記のようにしたいのです、よろしかったらもう一度ご教授ください、お願いします。      A  |  B   |左記の表の時にAAと検索をし画面に 1 AAA | 123  |表示されるのを1と3の行にしたいです ------------------|2の行は全て非表示にしたいのです。 2 ABC | 124  |つまり、検索と一致するもの以外は ------------------|画面に表示をしたくないのです。 3 AAC | 125  | ------------------|    A  |  B   |検索後の結果を左記のようにしたい 1 AAA | 123  |   ------------------|  3 AAC | 125  | ------------------| 説明不足ですみませんでした、宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • 134
  • ベストアンサー率27% (162/600)
回答No.2

if文とleft文の組み合わせでできるのではないでしょうか。 =if(left$(セル番号,文字数)="検索文字",セル番号,"") とすると、「セル番号」の中に、左から「文字数」までが「検索文字」になるものを表示。それ以外は、非表示になるんじゃないかと思います。 ちなみに、前後に非検索文字があるならmid$、終わりの部分を検索するなら、right$というものもあるかと思います。

mogu-s
質問者

お礼

ありがとうございます!今は自宅に戻ってきてしまったので、打ち込んだデータがなく試せませんので、明日でもすぐに試してみます。思ったとおりの結果になればうれしいのですが出来なかった時は、またお願いします。多分僕の望んでいるような結果が得られると思います。ありがとうございました。

mogu-s
質問者

補足

すみません、教えて貰ったやり方でやったのですがうまくいきません。 LEFT関数の指定範囲がうまく行きません、入力した行の場所しか範囲にならないし、うまく答えが出ませんどうしたらよいですか? 入力した式は“=IF(LEFT(C2:C500,3)=F2,F3:F500,"nasi")”です。この式だと C2:C500の範囲を左3文字検索してF2と一致したらF3:F500に表示されると思っていたのですが。間違えてますか? 参考(やりたい事)    A b 1| 1234 | xxx ------------- 2| 1235 | zzz ------------- 3| 1345 | www ------------- の時にAの列を検索して頭が123の1と2行を抜き出したいですが。 よろしくおねがいます。

すると、全ての回答が全文表示されます。
回答No.1

たとえばこんなのはどうでしょう。 データの範囲を指定してデータの並べ替えで その「×××」が入ってる列を「最優先されるキー」に選択して まずデータを並べ替えてしまいます。 そうするとその頭が同じ「×××」というデータが集まってきますので そこでギュッと削除するなり なんなり・・・・・・ どうでしょうか?

mogu-s
質問者

お礼

回答ありがとうございました。試してみますが、僕が思っているのとちょっと違うような気がします。とりあえずやってみます、ありがとうございました。

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

関連するQ&A