• ベストアンサー

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

初心者です、質問の内容がわかりにくかったらすみません。(同じ質問があったらごめんなさい) エクセルのオートフィルタ機能のオプションにある“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

  • エクセルオートフィルタ時のカウント

    1行1件としてデータ集計をしています。 例)  ABC 1 7/1 ○ xxx 1 2 7/2 △ aaa 1 3 7/2 ○ xxx 1 4 7/3 □ zzz 1 5 7/4 □ aaa 1 例えば、オートフィルタで○だけカウントしたいのですが(答=2)、 カウンタ関数ですと全体数(選択していないデータも)カウントされてしまいます。 (上の場合は「5」となります) SUBTOTALのようにオートフィルタで選択したデータのみの個数を数える ことはできないのでしょうか? 現在は各行の最後に「1」を入れ、最終行でSUBTOTALしています。 これで用は足りていますが、もう少しかっこよくできたらなぁと 思っています。 ど素人な質問ですみません。 マクロなど全くわかっていません。 どなたかご教授ください。

  • 《エクセル2000》オートフィルタとSUBTOTALを使ってデータのチェックをしたいのですが…

    いつもお世話になっています。 一行一件で大量のデータが打込まれ、並びに列の最下部から2行あけた後に、SUBTOTAL関数を入れてあるシートがあります。 タイトルのとおり、オートフィルタとSUBTOTALを使ってデータのチェックをしたいのですが、オートフィルタを選択すると、SUBTOTAL関数が入力されているセルまでもがフィルタをかける対象になってしまいます。 おそらくは「フィルタオプションの設定」という所をいじればいいのだと思いますが、「リスト範囲」という所のセル番号を変えてOKを押すと、フィルタそのものが外れてしまいます。(現在はSUBTOTAL関数が入力されているセルも「リスト範囲」の中に入ってしまっています) SUBTOTAL関数が入力されているセルを、オートフィルタの対象にしないためにはどうすればいいでしょうか。

  • 《エクセル》 オートフィルタで指定した行だけ指定するマクロ

    いつもお世話になります。 「オートフィルタで条件を指定して行を抽出し、その行のデータを削除する」 というマクロを作成したいのですが、うまく行きません。 そのようなマクロの式か、もしくはオートフィルタを使う以外で、同じ機能を果たせるマクロがあれば、教えていただけますでしょうか。

  • エクセルのオートフィルタについて

    エクセルのオートフィルタについて以下の2つの作業が可能であれば教えて下さい。 (1)1桁目の数字が1、2、3、4の四つの場合の行を抽出することは可能でしょうか?オートフィルタオプションでは「or」条件で例えば1、2の二つの場合の行の抽出はできるのですが。 (2)6桁の数字があるとして5桁目が5の数字の行を抽出することは可能でしょうか?オートフィルタオプションでは「~で始まる」や「~で終わる」行の抽出はできるのですが。

  • EXCELでオートフィルタが使えないのですが・・・

    外注先から届いたデータをオートフィルタで日付を抽出しようとしたら、データ→フィルタをのぞくと、肝心な「オートフィルタ」がグレーになってて、機能が使えない状態になっています。 データは1行目に表題、2~4行目にかけて、タイトル行が作られています。 2行目→              支給 3行目→            貼合  注入 4行目→ ロットNo.  日付   日   期限   大板  処理数 良品 データ→ Q3118G  2/26  2/23  3/16   20   1920   1851 こんな感じなのですが、なぜかフィルタがかかりません。 2~3行目のタイトルを削除しても、やっぱりダメでした。 Win98 EXCEL2000使用です。宜しくお願いします。

  • エクセルでのオートフィルタに関して(マクロ)

    1行目にタイトルがある表がありましてその表に オートフィルタを掛けて条件を複数指定して検索・・・ここまで手作業。 その後マクロでヒットした行をコピーして別のシートにコピーしたり、ということを行っています。 もともとの表のデータ数は日々増減していて ほしい行の行数も毎回変わってきます。 検索した行をコピーするために選択すると Rows("2809:2809").Select こんな具合に 行番号で指定されるのでデータ数が増減すると うまくいきません。 検索条件を指定して検索した行を うまくマクロで指定することは出来るのでしょうか? 良い方法がありましたら御教授願います。 もう一点ですが 自動記録でオートフィルタの画面を開いたままでは「記録終了」できないですよね? マクロでフィルタ画面を開いて 検索条件を指定するところから手作業でするのは可能でしょうか? あわせてよろしくお願いします。

  • オートフィルタ機能(オートフィルタ⇒オプション⇒もどる)

    Excel2002を使っています。 オートフィルタ機能(オートフィルタ⇒オプション)を利用してデータ検索をしています。 最近になって検索は即出来ますが、「もどる」をクリックすると時間が非常にかかってしまいます。 シートのデータ数が多い過ぎるためでしょうか?(7000行位あります) 又、他によい検索方法があれば教えてください。 抽出条件は2008/01/05以上 2008/05/30以下 等でも行っています。 よろしくお願いいたします。

  • エクセルのオートフィルタで、あるデータにオートフィルタをかけたあとに他

    エクセルのオートフィルタで、あるデータにオートフィルタをかけたあとに他のエクセルデータから データを貼り付けようとするとうまくいきません。 たとえば、オートフィルタをして30行あったものが10行に選択されたとき、その10行に他のエクセルデータから10行のデータを貼り付けたら4行くらいしか貼り付け出来ませんでした。 これはどうしてですか?わかる方がいれば教えてください。

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • エクセルのオートフィルタについて

    質問させてください エクセルのオートフィルタ機能でデータを抽出したのですが、 他の表からも同様にオートフィルタ機能でデータを抽出しようとすると、 ツールバーのオートフィルタの所に既にチェックが入っていて、 そこをクリックしてしまうと、最初の表で抽出したデーターが元に戻ってしまいます。 オートフィルタは2つの表には適用できないのでしょうか? それとも、最初の表のオートフィルタを確定し、次の表に進むことは出来るのでしょうか? どなたか、ご指導よろしくお願い致します。

専門家に質問してみよう