• ベストアンサー

Excel2007 不要データを消したい

以下のように,不要なデータがaaaaaとbbbbbにはさまれています。 必要データと書いてある部分が残したい部分です。 (できれば,aaaaaもbbbbbも消したい) aaaaaとbbbbbは1行ですが, 不要データも必要データも,行数は一定ではありません。 何かいい方法はないでしょうか。 aaaaa 不要なデータ 不要なデータ bbbbb 必要データ 必要データ 必要データ aaaaa 不要なデータ bbbbb 必要データ aaaaa 不要なデータ 不要なデータ 不要なデータ bbbbb

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

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

こんばんは! 横からお邪魔します。 VBAになってしまいますが、一例です。 データはA1セルからA列にあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, k As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(i, 1) = "bbbbb" Then k = i Do Until Cells(k, 1) = "aaaaa" k = k - 1 Loop Rows(k + 1 & ":" & i).Delete End If If Cells(i, 1) = "aaaaa" Or Cells(i, 1) = "bbbbb" Then Rows(i).Delete End If Next i End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。 参考になりますかね?m(_ _)m

tokei777
質問者

お礼

大変助かりました。 ばっちり動きました。 途中まで組んで,どうしようもなくなっていたので,大変嬉しいです。 教えていただいたマクロ,これから勉強して理解しようと思います。 どうもありがとうございました。

その他の回答 (6)

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

関数とオートフィルタで対応するなら、bbbbbの次のセルからaaaaaが出るまでのセルの横の列(B2セル以下)に「必要」と表示する以下のような数式が計算負荷が少ないのでお勧めです。 =IF(AND(OR(A1="bbbbb",B1="必要"),A2<>"aaaaa"),"必要","")

tokei777
質問者

お礼

やってみましたが,確かに軽かったです。 ifとand,orの組み合わせは考えてみたのですが,うまくいきませんでした。 できあがったのを見ると簡単に見えますが,自分でやると難しいものです。 しっかり勉強しようと思います。 どうもありがとうございました。

  • acha51
  • ベストアンサー率41% (436/1042)
回答No.6

B1に式 =IF(A1="aaaaa","",IF(A1="bbbbb","",1))  と入力します B1を最終行までコピーします B列を選択しデータ →フィルター →オートフィルター設定します B1のフィルターリストをクリックし 1を選択すると不要行のみ表示 されるのでB列に 1のついた行を選択して削除します データを残す場合は 表示しない 設定をします

tokei777
質問者

お礼

確かに,こうすれば簡単にできますね。 手軽に行うには,とても便利だと思いました。 どうもありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

>実際は数千行あるので, 回答した数式は、数千行程度でしたら持ちこたえます。いったいどんな操作をしてるんですか。 B2に式を記入したら、ふつーにB2セルの右下の小さい■をWクリックしてオートフィルさせてください。40秒ほど待つかもしれないので、お茶でも入れて一服しててください。 #数万行とかだとちょっと厳しいかもですけどね。 時折、無駄にいきなりシートの下端まで数式をぶっこんで勝手に自爆してる人もいるんで。 どーしてもできないなら、まず500行オートフィルドラッグして一旦安定するまで待ち、次はその500行ずつコピーしては貼り付けてください。

tokei777
質問者

お礼

いろいろいじった状態だったので,リソース不足を起こしたようです。 エクセルに怒られてしまいました。 再起動したら,うまくいきました。 どうもありがとうございました。

回答No.3

こんばんは。 >aaaaaもbbbbbも消したい なら はじめに aaaaa セルをクリックする。 あとはCtrlキーを押しながら消したいデータを選択する。 最後に任意の選択したセル上で右クリックして削除を選択する。 データの数がいくつあるかわかりませんが、あまりに多いならVBAで削除マクロを作るしかないかと。

tokei777
質問者

お礼

どうもありがとうございます。 数千行なるので,とてもctrlで選択することはできません。 マクロは覚え立てなので,とても自分でつくることはできず, webを検索しているところです。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

A1に「データ」と記入し、A2以下に実際のデータを記入。 B1に「判断結果」と記入、 B2に =IF(COUNTIF($A$1:A1,"aaaaa")=COUNTIF($A$2:A2,"bbbbb")+1,"不要","") と記入、以下コピー オートフィルタを取り付けて「不要」を絞り出し、全体を選んで ○Deleteキーで削除します ○右クリックして「削除」して上に詰めます

tokei777
質問者

お礼

どうもありがとうございます。 おっしゃる通りにやったつもりなんですが, B2以下の判定するセルがすべて真っ白になりました。

tokei777
質問者

補足

A2セルをaaaaaにしたらうまくいきました。 実データはA2がbbbbbでした,大変失礼いたしました。 ただ,100行くらいでやったら成功したのですが,実際は数千行あるので, ハングアップしてしまいました・・・

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

その1  並べ替えをしてから、それぞれまとめて削除。 その2  不要なデータを示すマークをどこかの列に作って、そのマークがある行だけを「オートフィルタ」で表示させる。  続いて Ctrl+G で「ジャンプ」を呼び出し「セルを選択」から  「アクティブ セル領域」を選んで、今 表示されているセル(行)を選択した後  思う存分削除する。 好きなほうを選んでください。

tokei777
質問者

お礼

ご連絡,ありがとうございます。 その1 aaaaaやbbbbbや1行しかないですが,必要なデータも不要なデータも何行あるか分からないので, 並べ替えをするのは難しい気がします。 その2 不要なデータを示すマークをいれようにも,大量にあるので手作業で入れるのは困難です。