- ベストアンサー
エクセルで該当する文字列がある行のみを残す方法
- エクセルで該当する文字列がある行のみを残す方法について質問します。
- セルのA2から下に記載されている数字に対して、該当する番号がある行のみを残すマクロを探しています。
- 301140と360940に該当する数字がある行を残すマクロを教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご希望の操作は普通なら、フィルタオプションの設定を利用するのが簡単です。 D1セルに項目名、D2,D3セルに抽出したい数字を入力しておき、カーソルを元のリスト上に置いて「データ」「フィルタ」「詳細設定」(2003ならフィルタオプションの設定)で検索条件範囲に「D1:D3」にして抽出範囲を適宜設定すれば、添付画像のように抽出できます。 どうしてもマクロで実行したいなら、上記の操作をマクロの記録で記録して、必要な部分のコードを修正してみてください。 ちなみに、関数で対応するなら、以下の式を(例えばI2セルに)入力して右方向および下方向にオートフィルします。 =INDEX(A:A,SMALL(INDEX((ISERR(FIND({301140,360940},$A$2:$A$1000)))*1000+ROW($A$2:$A$1000),),ROW(A1)))&"" ただし上記の式は表示するセルが多くなると動きが重くなるだけでなく、数値データもすべて文字列データとして表示されますので、B列以降はIF関数を利用して、数式の最後の「&””」を削除して数字データとして表示する数式にしたほうが良いと思います。 =IF(A列の数式セル"","",最後に&""がない式)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
残すというと、条件該当しない分は削除するとなる。 しかし、普通は条件に該当分を別シートに作る(書き出す)ことを考える。 本質問も関数でも出来そうだ(よくこの手の質問がこのコーナーに出る)がその場合は行削除なんて、関数では理論的に出来ないようになっているので、別シートなりに条件に合うものだけを作ることになる。 VBAなら行削除はgで着ないわけではないが、発想を変えたほうがよかろう。 ーー エクセルを使って何かをしたい場合 (1)操作 (2)関数 (3)VBA (4)出来合いの(スモールな)ソフト などのやり方があり、本件は(1)(2)(3)どれでも出来る。関数では式が長く複雑になるので、賛成しがたいが。 ーー VBAの場合マクロの記録が、役立つ場合もある。 フィルタの操作をして、マクロの記録を取り、修正をどうしたら良いか考えたら。 ーー 一番初心者にお奨めは (1)第1行目から最終行まで、下記を繰返す(ForNextなど使って) (2)その行のA列が301140か360940かどうかをIFステートメントで聞く (3)該当ならその行の各列データをSheet2に書き出し (4)該当しないなら処理をしないで次行へ この繰り返しをコードで書く。 これが出来ないことは無かろう。 書き出すや読み出すシートが2う以上の(別になる)ときの、シートを区別するコードの書き方など勉強する必要があるが。 ーー >マクロを探しております 探すのも大切だが、本件は作るほうだろう。初心者はマクロの記録が使えないか考えるほうが先。
お礼
何度も熟読させてもらいました。 初心者にお勧めのところも、本日の夜に実際に書いてみようと思います。 >探すのも大切だが、本件は作るほうだろう おっしゃるとおりだと思います。 ありがとうございました。
- okormazd
- ベストアンサー率50% (1224/2412)
質問の「資材コード」にある特定のコードの行だけを抽出したいなら、 特別のマクロや関数などは使いません。 ふつうは、フィルタを使います。 1つの抽出なら、「オートフィルタ」でできますが、複数条件の抽出には、「フィルタオプションの設定」で設定します。 Excelのバージョンがわかりませんが、基本的には下記を参照してください。 http://kokodane.com/tec3_16.htm 抽出された範囲をコピー/貼り付けで、他へコピーすることもできます。
お礼
丁寧な回答ありがとうございます。 私がつかいたかったのは、フィルタを数箇所指定して、それを他の人間に作業させてかったので 出来たらボタンを作って一括処理したかったためです。 説明不足ですみませんでした。
お礼
なるほど、細かいフィルタオプションの説明をしていただきありがたいです。 現在、フィルタオプションとVBAをみつつ、打ち変えたりしているところです。 上の方もおっしゃっていましたが、記録から手直しするのが一番近道ですね。 ありがとうございました。