• ベストアンサー

Excelで、任意の言葉で始まる行のみを、行ごと一括で削除する方法を教

Excelで、任意の言葉で始まる行のみを、行ごと一括で削除する方法を教えて下さい! 頭から湯気が出そうです... 例えば、下記の場合 A... B... C... B... A... C... A... B... ↓このようにBで始まる行のみ一括で削除したいです A... C... A... C... A... マクロでも関数でも良いので、なるべく簡単な方法を教えてくださいませ よろしくお願い致します

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

補足情報です。 複雑な条件でフィルタ操作を行う場合のもう1つの基本操作である、数式を使ったフィルタオプションの設定の方法を提示していませんでしたが、数式1つで抽出できるので、こちらの方法の方が場合によれば簡単かもしれません。 No5の添付画像のレイアウトならC1セルを空白セル、C2セルに以下の式を入力し検索条件をC1:C2にしたフィルタオプションの設定を行ってみてください。 =AND(LEFT(A2,1)<>"★",LEFT(A2,1)<>"※") もしこの操作をマクロを使って実行したいなら、上記の操作を「マクロの記録」で記録すれば良いと思います。 このとき先頭の検索文字をセルに入力し、上記の数式をそのセルを参照する数式にしておけば、セルに除外文字を入力して上記のマクロを実行すれば該当データを抽出することができます(必要の応じて検索条件範囲は非表示にする)。

xsr
質問者

お礼

MackyNo1様 お礼が遅くなり、申し訳ございませんでした 今回も有用な方法を教えて頂き、誠にありがとうございました 前回の <>△*、<>※* に引き続き 今回の =AND(LEFT(A2,1)<>"★",LEFT(A2,1)<>"※") に関しても 自力では、まず考えも及びませんでした またも 応用とは基本の上に成り立っている事を再認識致しました どうもありがとうございました m(_ _)m

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

その他の回答 (6)

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

No.4です! たびたびごめんなさい。 No.1さんの補足に >(実際は、※や★等の任意語が滅入るほどあります...) とありましたので似たような方法ですが、↓の画像のように任意語を1行目に入力しておいて、その語が1文字目にある行を削除する方法にしてみました。 Sub test() Dim i As Long Dim str As String For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 str = Left(Cells(i, 1), 1) If WorksheetFunction.CountIf(Range(Cells(1, 3), Cells(1, 4)), str) Then Rows(i).Delete (xlUp) End If Next i End Sub コード内のCOUNTIF部分の  Range(Cells(1, 3), Cells(1, 4)) は画像ではC1・D1セルにだけ任意語が入っていますので、そこだけを範囲指定しています。 もし仮に任意語が10個あるのであればL1セルまで任意語が入りますので、 Range(Cells(1, 3), Cells(1, 12)) となります。 この部分だけを変更すればいくら任意語が増えても対応できると思います。 (もし空白セルを範囲指定してしまうと、空白行も削除されます) 以上、何度も失礼しました。m(__)m

xsr
質問者

お礼

tom04様 ご回答頂き、ありがとうございます お礼が遅れてしまい申し訳ございませんでしたm(_ _)m さっそく試させて頂きました 任意語が複数あるとの補足にまで、お答え頂き本当にありがとうございました! 正にカルチャーショックとしか言いようがありません こんな魔法のような事を、こんな素人な私でさえ再現させて頂けるとは またまたモチベーションが高まりました! シート右クリックでコードを直接書けることさえ知りませんでしたし コードの意味すら、正直全然解りませんが (たくさんの任意語にまで対応出来る方法まで、詳細を教えて頂いたお陰で出来ました!) 同じソフトを使ってても、こうも奥は深いんだと痛感させられました 自分のちっぽけさが際立ち悲しい位でもあります(ToT) 暗号のようなコードをどれだけ見よう見まねで改造できるかは 今後の勉強次第だと思ってます たいへん貴重な方法を教えて頂きありがとうございます!m(_ _)m おかげさまで助かりました!

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

マクロを利用される場合も、まず基本はフィルタ操作をマスターすることです。 先頭文字が「★」または「※」から始まるデータを除外したいなら、以下のようなフィルタ操作をします。 バージョンが明記されていませんので2007の操作で説明すると、「データ」「フィルタ」「テキストフィルタ」「ユーザー設定フィルタ」(2003は「オプション」)でオートフィルタオプションのダイアログを出して、「★」「から始まらない」AND「※」から「始まらない」にします。 除外条件をなどをセルに入力して、フィルタを実行するにはフィルタオプションの設定を利用します。 添付画像のように1行目が項目名で2行目以下にデータがある場合、E1、F1セルに項目名をコピーし、E2セルに「="<>★*"」、F2セルに「="<>※*"」と抽出条件を入力します。 次に、2007の場合の操作で説明すると、「データ」タブの「並べ替えとフィルタ」の「詳細設定」でリスト範囲をA列全体を指定し、検索条件範囲に「E1:F2」セルを選択し、抽出先を「指定した範囲」にチェックを入れ「抽出範囲」に例えばC1セルを指定し「OK」すれば、添付画像のようになります。 これらの操作をマクロの記録で登録すれば、ボタン1つクリックするだけでE2セルとF2セルに入力した条件のデータを抽出することができます。

xsr
質問者

お礼

MackyNo1様 ご回答頂き、ありがとうございます お礼が遅れてしまい申し訳ございませんでしたm(_ _)m さっそく試させて頂きました 私は2003を使っていますが、だいぶ前にフィルタオプションの設定は現在も利用しています だいぶ前に自作した物に自分なりには、結構凝って多用してたつもりですが (見よう見まねで、修正に修正を重ねた結果なので 正直今、それと同じようなものを直ぐに作ることは出来ません と、言うより、詳しい事、記憶喪失のように、からっきし憶えていないのです...) 今回の事で、なんとなく思い出せました 検索条件範囲の、<>△*、<>※*等は、自分では考えも付かなかったです (自作の物は、一致する物だけを抽出してましたので、こんな方法もあろうとは!) またも、奥の深さを感じずにはいられません このたびは、貴重なご回答、どうもありがとうございました! "マクロを利用される場合も、まず基本はフィルタ操作を..." 奥の深いお言葉も、身に染みております お陰さまで、今の私の実力での出発点を見つけた思いでございます どうもありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 一例です。 A列のセル内の文字で「B」から始まるものがあればその行を削除するようにしてみました。 操作したいSheet見出し上で右クリック → コードの表示 を選択し、↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(i, 1) Like "B*" Then '「B」から始まる文字の場合は・・・ Rows(i).Delete (xlUp) End If Next i End Sub 他に良いコードがあればごめんなさい。m(__)m

全文を見る
すると、全ての回答が全文表示されます。
noname#118989
noname#118989
回答No.3

わざわざ説明ありがとうございます。 私だったら別の列に連番をふって、 並び替えて、削除後、連番順に元に戻します。 マクロ勉強のためと言うことでしたら、 マクロの記述例は別の方に回答を委ねます。 すみません。

xsr
質問者

お礼

erlv様 ご回答頂きありがとうございます 教えて頂いた通り、別の列に連番をふってやってみましたら 今度はうまいこといきました! お陰さまで、このような方法もある事に気付けました どこかで必ず役に立ちそうな気がします! どうもありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A列の2行目から、すなわちA2セルから下方に文字列があるとしてB1セルには削除したい文字列の先頭の文字を入力します。例えばBと入力します。 B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A2<>"",LEFT(A2,1)<>B$1),MAX(B$1:B1)+1,"") 例えばC1セルから下方にに削除した後の文字列を並べて表示するとしたらC1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(B:B),"",INDEX(A:A,MATCH(ROW(A1),B:B,0))) なお、C列は式を使って表示されたものです。A列などが削除されますと消えてしまいます。それをなくすためにはC列を選択してコピーし、お望みのセルの位置で右クリックして「形式を選択して貼り付け」で「値」にチェックをしてOKします。

xsr
質問者

お礼

KURUMITO様 ご回答頂き、ありがとうございます。 みようみまねで試させていただきました 面白い位、簡単にサクっと出来たので驚きました 努力された結果である事はわかりますが このような応用技を即、思いつけるなんて、とっても羨ましい限りです! 別のモチベーションが上がってきてしまいました この方法も、大変、応用度の高い素晴らしい方法だと思います どうもありがとうございましたm(_ _)m

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

言葉と言うのは、文字ということでしょうか? 「ミカン」と「みかん」など表記の違いの混在はあるのでしょうか? あと、「みかん」や「み かん」などスペースの有無や半角全角など。 お聞きした限りでは、 私だったらフィルターで集めて削除します。

xsr
質問者

補足

さっそくのご回答、どうもありがとうございますm(_ _)m さっそくですが 全て★●※などの全角1文字の記号で区別したいです。 実際は、EXCEL外のデータを整形したいが為にコピペしている状態なので 下記のように、空行や線等も混じっております (元に戻さなくて済むように削除はしたくありません) 例 ○あああ ★みかん ●りんご ○あああ ━━━━ ※かめら ※あああ ○あああ ※りんご -------- ●あああ ○かめら ★りんご △あああ ○かめら ★かめら ■■■■ ○あああ △りんご ○あああ ※あああ ○りんご ★あああ 上記から、※と★から始まる行を一括で削除した場合は下記のようになります ●りんご ○あああ ━━━━ ○あああ -------- ●あああ ○かめら △あああ ○かめら ■■■■ ○あああ △りんご ○あああ ○りんご 現状は、下記のように段階を踏んでいますが、これらを一括で行ないたいです。 (実際は、※や★等の任意語が滅入るほどあります...) 1 すべて検索を実行 ※ 2 結果を全選択 3 編集>削除>行ごと 4 すべて検索を実行 ★ 5 結果を全選択 6 編集>削除>行ごと たぶん、上記等の幾つかのパターンをマクロで作ってしまえばよいのではないかとも思いましたが マクロ自体、きっちりは理解しておらず、見よう見まねなのが原因だと思いますが かれこれ数時間、いくらやってももうまくいきません... こんな状態ですが、簡単に教えて頂けましたら、幸いです。 よろしくお願い致しますm(_ _)m

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

関連するQ&A

  • 行一括削除を早く行う、こんな方法できますか。

    マクロによる行削除については、空白行の削除などいろいろな質問と 回答が出ていますが、データ量が多くなると自動化でもかなり時間が かかります。 そこで、ソートにより並べ替えを最初に行い、ある列に、最初に ある言葉や数字が出た行から最終行までを一括削除するマクロなら、 処理時間が早く出来ないかと思いました。 例えは、データA10からZ300で、並べ替えによりH列の最初に 日本という言葉が出たら、その行から最終300行までを一括削除 するという方法です。 (削除は行全体でもAからZまでの行、どちらでもよいです) そんな方法が出来るなら教えて下さい。よろしくお願いいたします。

  • エクセルで何行目に入っているか知りたい

    エクセルで所定の値が入っているセルが何行目なのかわかる方法はありますでしょうか。 A1ブランクA2○ B1×B2○ C1×C2△ となっていた場合、×は2行目、△は3行目といった内容です。 マクロでも関数でもお分かりになるかた教えてください。 よろしくお願いいたします。

  • エクセルで、「’」を一括で削除する方法ってありますか?

    助けてください! エクセルで、A列の数字すべてに「’」が入っています。 ’19990708 ’20001223 この「’」を一括で削除し、 19990708 20001223 に変更することは出来ますか? (行は3万行くらいあり、手処理で「’」を削除するのは無理なんです) または、A列は日付列なのですが、’19990708を1999/07/08と日付に認識させる関数などはありますか? left関数、mid関数、&と"/"など試してみましたが、「’」が取れませんでした。 (1999/07/08とした後、セルの書式設定→分類→日付→種類で7月8日や7/8と表示を変更させたいのです。) どんな方法でもいいので、どなたか解決方法を教えてください。 よろしくお願いいたします。

  • エクセルでセルが空白だったらその行を表示させない方法を教えてください。

    エクセルでセルが空白だったらその行を表示させない方法を教えてください。 こんにちわ。 色々調べたのですが、分からずアドバイスをいただきに来ました;; 何とかならないかと困っていますので、お願いいたします。 具体的には  A  B  C  D ... 1 ◎ あ い う 2   か き く 3 ◇ さ し す 4 △ た ち つ . . のようなA2が空白だった場合下記のように ↓↓↓↓↓↓↓↓  A  B  C  D ... 1 ◎ あ い う 3 ◇ さ し す 4 △ た ち つ . . のようにA2が空白だった場合「削除」ではなく「表示しない」としたいです。 ちなみにoffice2003のエクセルを使用しています。 マクロを組まないとできないのであれば、出来れば具体的なソース等を乗せていただけると幸いです。(マクロは勉強中で全然できないので^^;) よろしくお願いいたしますm(_ _)m

  • 同じ値のセルを持つ行を2回目以降削除したい エクセル

    たとえば以下のシートがあるとします。(スペースでセルの区切りを表現) 12 A 12345 32 B 94617 34 C 28748 43 A 45729 32 C 72021 これを,同じ値のセルを持つ行を2回目の出現以降削除したいと思います。 例:下図では,変換後,A,B,Cのある列をキーに,二度目のA,二度目のCのある行が削除されました。 12 A 12345 32 B 94617 34 C 28748 このようにするにはどんな方法がありますでしょうか。実際のデータでは行が6万行近くあり,上図でA,B,Cに該当するキーの種類も数千種あります(^^;) 私はマクロは全然分かりませんので,できれば関数などのシンプルな方法で。しかし必要であればマクロの書き方も教えてください。 あと,別回答でも結構ですが,マクロがどうしても必要な場合は,マクロの初歩を教えているお勧めページをご存知でしたら教えてください。

  • EXCEL表で同じ数値の行を削除する方法

    こんにちは。マクロなどを使わない方法を教えて下さい。 EXCEL2003の表で下記のような表があったとします。    A | B | 1|100 |東京 | 2|100 |    | 3|200 |大阪 | 4|200 |    | 5|200 |    | 6|300 |名古屋| 7|400 |仙台 | この表で、A列に同じ数字が入っている行の先頭行だけ残して、あとは削除したいんです・・・ 400行ぐらいあるので一気にできるいい方法がありましたら教えてください。 よろしくお願いします。

  • Excelで条件つき行削除について

    下記のようなExcelの表があるとします。    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 23 45 67 27 3 仕事B 45 24 65 33 4 小計 68 69 132 60 この状態のときはいいのですが、    A    B     C     D     E 1      会社A   会社B   会社C    会社D 2 仕事A 0 0 0 0 3 仕事B 0 0 0 0 4 小計 0 0 0 0 上記のようにB4、C4、D4、E4がそれぞれ「0」のときに4行目を削除または行の高さを「0」にするマクロを組みたいです。 わかる方がいましたらよろしくお願いします。

  • エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ

    エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてください。 sheet1を印刷用ページ、sheet2をデータ用ページとしています。 sheet2は頻繁に追加や削除をするのですが、単純な =sheet1!A1 ですと、 sheet2に追加してもsheet1に追加されたデータが反映されない。 sheet2の行を1つでも削除するとsheet1のその行は#REF!というエラーに。 という状態です。下記内容に対応できる関数はあるでしょうか。 sheet2がこのような時 行  A あ B い C う D え sheet2Dに「お」を挿入すると sheet1がこのようになるように。 行  A あ B い C う D お E え また、B行を削除したらsheet1が 行  A あ B う C え となるように。 そして、可能ならばコピーのドラッグで複製できるようにしたいのですが・・・ 条件が色々ありますが、よろしくお願いします。

  • エクセルのマクロを使い、ある任意の期間の行を削除したい

    皆様、調べても分からなかったので教えて下さい。 エクセルで作ったデータベース上で、ある列に日付データが入っています。 マクロを実行すると、任意の期間(例えば2月)を入力し、任意の期間以外の行を削除する(1月や空白)マクロを作りたいです。 どなたかご教授下さい。 よろしくお願いします。

  • エクセルで不要な行を一括削除できますか?

    いつもお世話になります。 OSはWINのXP。オフィスもXPを使用 しております。 セルのA-1に「あ」 セルのB-1に「い」といったデータが羅列されて います。(行の2~) このデータをセルC-1に&を使って 「あい」という形式のデータに変えたのですが、 1行飛ばしで不要なデータも入ってしまいます。 不要なデータを、すべて空白にしたいのですが 何か関数で簡単に出来ないモノでしょうか? 今は1行飛ばしでctlで複数選択して 削除しているのですが。。。。

専門家に質問してみよう