• ベストアンサー

エクセルでヘルプ・・・・

例えばA列に下記のような名前が並んでいたとします。 この中で同じ文字列のセルを含む行を全て削除する方法です。 下記の例では 5,6,7,8,12,13,14 の行を削除するかたちになります。 A     B     C 1 りんご 2 トマト 3 ブドウ 4 バナナ 5 サクランボ 6 サクランボ 7 メロン 8 メロン 9 みかん 10 バナナ 11 ナシ 12 スイカ 13 スイカ 14 スイカ 実際は5000~6000行データの作業になる為、手作業では大変です。 これがもしエクセルの機能で出来るならとても助かります。 宜しくお願いいたします。

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

  • ベストアンサー
  • hs001120
  • ベストアンサー率60% (473/788)
回答No.5

>1万1千行ありました。 作業途中PCがフリーズしてしまい強制終了するしかありませんでした。(pen4 2.4G 1GBRAM) エクセル内のデータベース処理関数はとても手軽ですが負荷は高いため、あまり大量のデータを処理するのには不向きですよ、 1万行以上あるデータの定形処理なら、データベースソフトの方がお勧めです、 ちなみに"アクセス"なら SELECT Min(Sheet1.A) AS A0, Sheet1.B FROM Sheet1 GROUP BY Sheet1.B HAVING (Count(Sheet1.B)=1) ORDER BY Min(Sheet1.A); 無料のデータベースソフトOpenOffice.Baseなら SELECT MIN( "A" ) AS "A0", "B" FROM "sheet1" GROUP BY "B" HAVING ( COUNT( "B" ) = 1 ) ORDER BY "A0" ASC という"クエリー"を定義します。 エクセルの自由さに比べて、少し敷居が高い面はあるのですが、解ってしまえば大量データの処理は楽ですよ。

youmack
質問者

お礼

ANo.3の方法を(処理の時間少しだけ待つようにして)取り入れて行きたいと思います。 データベースソフトは自分にとって今後勉強も必要かと思いました。 昨日から深夜から本当にお世話になりました。 ありがとう御座いました。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

オートフィルタを使用する次の方法は如何でしょうか。 (1)先頭行に見出し行を挿入、列名称を任意設定 (2)空き列の(仮にB列)B2に=COUNTIF(A:A,A2)>1を設定、B2のフィルハンドル(枠右下の■)をダブルクリックで左隣列の有効データ行(空白行以外)まで自動コピーします (3)表の任意セルを選択→データ→フィルタ→オートフィルタ、B列のフィルタボタン押下→TRUEを選択、抽出された行番号を全て選択→右クリックで行の削除

youmack
質問者

お礼

フリーズしてしまったのは残念でしたけれど、簡単で便利な方法を教えていただきありがとう御座いました。 また何かありましたら宜しくお願いいたします。

youmack
質問者

補足

分かりやすい補足もいただきありがとうございます。 実際のデータで試してみました。 1万1千行ありました。 作業途中PCがフリーズしてしまい強制終了するしかありませんでした。(pen4 2.4G 1GBRAM)

  • hs001120
  • ベストアンサー率60% (473/788)
回答No.3

>おっしゃる通り記入漏れです。 4と10も削除の対象になります。 一過性の処理であれば、 まず、B列をキーとしてソート その後 C1: =(B1=B2) C2: =OR((B1=B2),(B2=B3)) C2を以降の行に複写 後はC列が TRUE の行だけフィルタで抽出して削除すれば用は足りると思います。 結果の並び順が気に入らない場合、後でA列をキーとしてソート

  • hs001120
  • ベストアンサー率60% (473/788)
回答No.2

>下記の例では 5,6,7,8,12,13,14 の行を削除するかたちになります。 ということは、 4 バナナ 10 バナナ は削除対象にはならない。ですか? それだと、 >この中で同じ文字列のセルを含む行を全て削除する方法です。 ではなく、 「隣接する行に限り、同じ文字列のセルを含む行を削除」 ですが、 その方法であれば C1: =(B1=B2) C2: =OR((B1=B2),(B2=B3)) C2を以降の行に複写 後はC列が TRUE の行だけフィルタで抽出すれば用は足りると思います。 実は、 4 バナナ 10 バナナ も削除対象で、単なる記入もれである場合は、「エクセル」でも出来なくは無いでしょうが、同じくオフィスシリーズソフトの「アクセス」の方が得意とする処理であり、そちらの方が簡単ですよ。

youmack
質問者

補足

大変申し訳ありません。 おっしゃる通り記入漏れです。 4と10も削除の対象になります。

  • siroakaki
  • ベストアンサー率47% (21/44)
回答No.1

マクロを使うとできそうな感じがします。 Sub gyou_del() ' ↓変数の定義 Dim i As Long Dim gyou As Long 'B列に削除したい名称があるとして、データの最終行を取得。 gyou = ActiveSheet.Range("b65535").End(xlUp).row ' ↓データの最終行から行削除していく。 For i = gyou To 4 Step -1 If Range("b" & i).Value = "メロン" Or Range("b" & i).Value = "サクランボ" Then Rows(i).Delete End If Next End Sub 元データのコピー上で試してください。

youmack
質問者

お礼

早速のご回答ありがとう御座いました。 マクロなどまた分からない事がありましたら宜しくお願いいたします。

youmack
質問者

補足

例といたしまして、果物の名前を使いましたが実はここには名簿が載りますので限定が出来ません。 説明不足で申し訳ありません。

関連するQ&A

  • エクセル2010で 項目の抜き出しをしたい

    エクセル2010で 項目の抜き出しをしたいです。 たとえば、A列に りんご りんご バナナ トマト りんご バナナ みかん トマト メロン バナナ リンゴ みかん ぶどう とデータが入っているとき、これらのデータには、 トマト バナナ りんご リンゴ みかん メロン ぶどう という種類のデータが入っているということを簡単に表示する方法が知りたいです。 どうぞよろしくお願いします。

  • Excelについて

    Excelに下記のようなデータが入っているのですが A列   |   B列 りんご |     2 みかん | 3 ばなな | 1 りんご | 6 すいか | 7 かき | 3 みかん | 4 すいか | 8 りんご | 1 *(実際には100件ぐらいのデータが入っています。) A列で同じ「りんご」があれば、同じ行にあるB列の値を合計したいのでがどうすればよいですか? また「りんご」だけでなく他にもあればその値を合計して出したいのですが。 例えば、今回の例では「りんご」が三箇所あるので「2+6+1]で9と表示したいのですが。 イメージとしては、 A列  |   B列 |   C列   |  D列 りんご |    2  |    りんご |  9 みかん |    3  |    みかん | 7 ばなな | 1  |    ばなな | 1 りんご | 6  |    すいか | 15 すいか | 7  |    かき | 3 かき | 3 | みかん | 4 | すいか | 8 | りんご | 1 | というようにしたいです。どなたか教えてください。

  • Excelでの文字列とりだしについて

    Excel(version2013)について質問です。 ある文字列を検索範囲内で検索し、みつかった場合、 その文字列を返すようにしたいです、どのような関数を使えば宜しいでしょうか。 例えば下記A列に検索したいリスト(りんご、ばなな、ぶどう)があり、 検索したい範囲がD1~E5とします。 その場合、B列に関数を使った式を入れ、 りんご、ばなな、空文字、りんご、ぶどうと並ぶようにしたいです。 どのような関数を使えば宜しいでしょうか。       A         B      C      D        E 1  りんご   (式)        りんご  みかん 2  ばなな  (式)        ばなな すいか 3  ぶどう   (式)        すいか みかん 4              (式)        りんご  すいか      5              (式)        ぶどう  みかん                                      

  • Excel 関数 照合した結果がどこにあるのか表示したいのですが

    照合したいデータがあります。 A列とB列のセルを照合の結果、B列のセルがA列のどこにあるか、C列に行番号を表示したいのですが。 どのような関数がいいのか教えてください。よろしくお願いします。   A列   B列   C列 1 リンゴ みかん  2 2 みかん いちご  4 3 バナナ レモン  6 4 いちご メロン  5 5 メロン ぶどう  × 6 レモン

  • エクセル出の並び替えについて質問

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方がありましたら教えてください。 どうぞ宜しくお願いします。

  • 行内で空白、重複を除いた結果を別セルに表示したい

    A~D列に言葉が入っているのを、F列以降に空白、重複を除いて、結果を表示したいのですが、やり方がわかりません。(別シートではなく、同じシート内で処理したいです。) A~D列に入る言葉は200個程の種類があります。 行は4万行くらいのデーターがあるので行列を入れ替えた表には出来ません。 ジャンプで空白セル選択→まとめて削除をすると、データー数が多いので、パソコンが固まってしまいました。 なので、行ごとに処理をしたいのです。 よろしくお願いします。  A     B   C    D        F     G    H    I みかん ぶどう りんご みかん → みかん りんご ぶどう みかん (空白) (空白) みかん → みかん (空白) ぶどう りんご みかん → ぶどう  りんご みかん みかん ぶどう りんご すいか → みかん ぶどう りんご すいか

  • excel関数 間違ったデータをピックアップしたい

    列Aの各セルに、みかn、りんご、バナナ、メロンなどと入っていて、列Bの各セルは、"A"~"F"の人気ランクが入っています。 列A   列B   みかん  A りんご  C バナナ  D みかん  A メロン  C 列C以降にはその他の色々なデータが入っていますが、それはさておき、列AとBだけの関係を見ると、みかんは必ず"A"、りんごは必ず"C"というように、果物別の評価は決まっているはずです。ところが、間違って入力されて、ある行ではみかんが"A"で、別の行ではみかんが"C"だったりしたら、調べて正しい方に統一したいのです。 そこで、ひとつの果物に対応する評価が複数あるものをピックアップしたいのですが、どうすればいいでしょうか。そのほかの集計作業に関数を使っているので、これも関数で出来ればいいかなと思うのですが。

  • Excel2003 並び替えに関する質問 VBA初心者

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方をVBAで組みたいのですが、まずはどうすればよいのかわかりません。 もし、これを見て答えられるようであれば、どなたか教えていただければ幸いです。 どうか宜しくお願いします。

  • エクセルの置換の事で?

    エクセルの事で質問です。 マクロを使って置換させたいと考えています。(エクセル2003使用) 例 A1 みかん  B1 私が好きなのは***です。彼は***は嫌いです。 A2 りんご  B2 私が好きなのは***です。彼は***は嫌いです。 A3 メロン  B3 私が好きなのは***です。彼は***は嫌いです。 A4 スイカ  B4 私が好きなのは***です。彼は***は嫌いです。 A5 バナナ  B5 私が好きなのは***です。彼は***は嫌いです。 これを A1 みかん  B1 私が好きなのはみかんです。彼はみかんは嫌いです。 A2 りんご  B2 私が好きなのはりんごです。彼はりんごは嫌いです。 A3 メロン  B3 私が好きなのはメロンです。彼はメロンは嫌いです。 A4 スイカ  B4 私が好きなのはスイカです。彼はスイカは嫌いです。 A5 バナナ  B5 私が好きなのはバナナです。彼はバナナは嫌いです。 このようにボタンひとつで置換したいと考えています。 今までやって失敗した事は ツール→マクロ→新しいマクロの記録で手動やってみたのですがどうしても出来ませんでした。 すいませんが、どなかた教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルで範囲内のデータを別シートにうつしたい

    エクセルで特定の範囲内の数値にあてはまるデータを別のシートに新たな表として作成したいのですが、簡単な方法があれば教えてください。 例えば Sheet1   A   B     C  1 25  ミカン   3000 2 30  リンゴ   4500 3  5  メロン   9800 4 17  ブドウ   1800 5 50  バナナ  1000 このようなデータを次のような表にしたいのです。 A列の数値が10~30のみ行ごと抜粋する Sheet2   A   B     C  1 25  ミカン   3000 2 30  リンゴ   4500 3 17  ブドウ   1800  よろしくお願いいたします。