• 締切済み

文字「3M」はexcelで行数多いと重複削除不可

excel vba でRemoveDuplicatesを使用して、重複削除を行っていますが、 次の場合、重複削除ができません。重複削除方法を教えて下さい。 但し、ソートやIF文を使用しない方法をお願いします。 理由は、処理時間が掛からないようにしたいためです。 現象) ワークシートのA列の274行目と11512行目に、「3M」が記載されています。A列は、1行目から11512行目まで値が記載され、その内、重複は、上記の「3M」だけです。 vbaを起動して、重複削除させても「重複した値は見つかりませんでした。」となります。 この文字「3M」以外の文字に置き換えると削除できます。また、「3M」を隣接した行に並べると削除できます。 また、vbaでなく、excelのコマンドの「重複削除」を行っても、同じ現象です。 重複行の間隔がいくつだと削除できないかを調べました。 間が10行以上は削除できませんでした。9行以下は削除できました。 添付画像参照下さい。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

データー重複の削除、はエクセル2007に創設されたようです。 ーー 完全ではないが、追試することができました。 例 A列のセルに、数字の連番を入れておく。その1部を同じ値に変えて Sub 重複削除() Range("A3") = "7g" Range("A38") = "7g" Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1), Header:=xlYes MsgBox Range("A38") End Sub でも、A38セルはそのまま(削除されないということ)。 ・他の、文字が最初に来る文字列では削除される。 ・近くのセルの場合 Sub 重複削除2() Range("A3") = "7g" Range("A10") = "7g" Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1), Header:=xlYes MsgBox Range("A10") End Sub では削除される。 ーー 原因は小生ごときには判らない。 ーー フィルター詳細設定で、条件は、なし(空白)にして、「重複するレコードは無視する」で(2番目は)消えました。2か所の「7g」の例です。 VBAでも、これに相当するコードはあります(AdvancedFilter)。 「3M」に当たる文字列が、決まっているなら、VBAのRangeのFindで探し 、2つめ以降をセル削除すれる方法がある。

i20160309smihid
質問者

お礼

ありがとうございました。 お礼が遅くなり申し訳ありませんでした。 マイクロソフトのバグと思われます。修正されることを期待します。 ご指摘頂き、重複削除不可の文字が決まっていないことに気づきました。 ありがとうございました。 ご教示頂いた「フィルター詳細設定」の操作は、理解できていないですが、 他の方法を検討します。 追伸 「よねさんのWordとExcelの小部屋」というところの「Dictionaryを利用する」でできそうと思います。検討します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.1

適当な文字に置換してから重複削除したらいかがですか。 Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)).Replace What:="3M", Replacement:="mm", LookAt:=xlPart Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)).RemoveDuplicates Columns:=1, Header:=xlNo

i20160309smihid
質問者

お礼

ありがとうございました。 お礼が遅くなりました。 置換する方法、アイデアとして良かったです。 ただ、当方の説明が適切でなかったです。申し訳ありません。 調べてみると、重複削除が不可な文字が必ず決まっているとは限らなかったです。 「imogasi」殿の例「7g」を参考にすると、 最初の文字が数字の場合で2文字目以後が数字でない場合に発生するようです。 数字だけの場合は、重複削除はできました。 貴重な時間を割いて回答頂きありがとうございました。

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

関連するQ&A

  • EXCEL VBAの重複行削除について

    EXCEL2010を使用しています。 添付画像の「重複行削除 前」の表を、RemoveDuplicatesで下の様にコードを組んで A列で重複する行を見て重複する行を削除しています。 Public Sub 重複行削除()  With WorkSheets(1)   .Range(.Cells(1, 1), .Cells(8, 3)).RemoveDuplicates _      Columns:=1, Header:=xlYes  End With End Sub すると、日付の新しいデータが削除され、古いデータが残ってしまいます。 (添付画像の「重複行削除 後」) ReniveDuplicates Columns:=Array(1,3) とした場合は、すべてのデータが残ってしまいます。 添付画像の「欲しいデータ」の表の様に、 日付の新しいものを残すように重複行削除は出来ないでしょうか? 詳しい方、どうか教えてください。 よろしくお願いします。

  • Excel VBAで値が重複する行を削除する

    Excel2000を使っています。 シートAに数千件のデータがあります。 シートBのE列にある文字とシートAのD列の文字が重複する場合に、シートAの重複するセルがある行を削除する(且つできれば行のデータを抜き出すVBAを作ろうと考えています。 最近VBAの初心者本をやっと理解したところで、ちんぷんかんぷんとまではいかないけど、知恵熱がでました。 仕事なので自分でなんとかすべきかと思いますが、きっかけの調べ方がまずわからない。 どなたか、解かるきっかけだけでも与えて頂けないでしょうか。とくに、別シートの値と重複する値を探す場合に何をいれるかわかればきっと道は開けると思うんですが…。 初めての質問なので、質問内容が至らなかったらもうしわけありません。

  • Excelの重複データーを削除したい

    Excel 2010 の A列 に複数のデーターがあります。これをExcelの機能で昇順に並べ替えます。 重複したデーターが有れば削除し、ブランク行のない状態にするため VBA で処理していますが、この作業を簡単に行える良い方法が有れば教えてください。

  • エクセルVBAで重複データの削除

    A列、B列、C列・・・とデータが入っていて、B~D列の5行目から10行目が関連の有るデータのかたまりとします。 C~D列の全てのデータが重複している場合に、最初のほうのデータ(行番号が小さいほう)を残すものとして、重複データを削除したいのです。 削除するときは、 B~Dの範囲で削除する。A列等は削除しない。 削除したらデータは上に詰める。 データはソートしない。 ということをやりたいのですが、簡単に出来ますでしょうか? 良く覚えていないのですが、ネット上で色々探してみても、必ずソートしている気がしたので、ソートしない方法が知りたいのですが。

  • エクセルで重複行を削除

    エクセルで重複行を削除したいのですが、 どうすればいいでしょうか? たとえば名前が1列に並んでいて ××○○ 山田太郎 △田□□ 山田太郎 こんなとき、山田太郎を1行だけに、 まとめたいのですが・・・ データが多いのでソートして 1件1件削除していくのも時間がかかります。 何かいい方法がありましたら よろしくお願いします。

  • 重複行の枠線内内容分のみを削除

    Excel2013ですがフォームがあり重複する行をExcel枠線を残しVBAコードでセル項目、数値のみ削除したいのですが A列 B列 C列 あ  1  a あ  1  a あ  2  a い  1  a い  2  c い  2  c A列 B列 C列 あ  1  a あ  2  a い  1  a い  2  c のようにABC列同一文字は1行にしExcel枠線を残すVBAコード、関数の解る方ご教授願います。 ActiveSheet.Range("$A$1:$C$6").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo 上記の以前回答頂いたVBAコードで内容は問題なかったのですが枠線まで削除されるので改めて枠線を作っていますどうかよろしくお願いします。

  • excel、重複があるかを調べたい

    関数初心者です。質問させて下さい。 excelでsheet1のAセルに文字列を入力しました。 このsheet1内はsortしフィルターをかけたので重複はありません。 1000行程の語句ですが、このsheet1内の語句を別sheetや別のexcelファイルで重複がないかを 調べたいのですが、良い方法が分かりません。 教えていただけますでしょうか。 宜しくお願いします。

  • 重複行を削除

    重複する行をVBAコードで削除したいのですが A列 B列 C列 あ  1  a あ  1  a あ  2  a い  1  a い  2  c い  2  c A列 B列 C列 あ  1  a あ  2  a い  1  a い  2  c のようにABC列同一文字は1行にしたいのですがVBAコード、関数の解る方ご教授願います。

  • エクセルで重複するセルを削除したい

    エクセル2000で同じ内容のセルが複数あったとき、ひとつだけを残し他を削除する方法を教えてください。 ただし少し条件があります。 データーは5列100行位からなっています。 A列にある重複したデーターのセルを削除したいのですが、A列は同一なのですがB列は異なっています。B列に数字が入っているセルとうでないセルがあるのですが、数字が入っているものを残したいのです。 具体例は次のとおりです。 A列に 「ホンダCIVIC」 B列 「-」と書かれた行と A列に 「ホンダCIVIC」 B列 「2」と書かれた行、 A列に 「ホンダCIVIC」 B列 「5」と書かれた行、 のA列だけを見ると重複した3行が有ったとします。 B列に「5」または「2」の入った行ひとつだけ残し、他を削除したいのです。 何かよい方法があればお教えください。よろしくお願いします。

  • エクセルでの重複セルの削除

    こんにちは いつもお世話になっています。 エクセル2003を使っています。 A列に文字列があり、条件付書式で重複データのセルに背景色を付けています。 A列は、ふりがなで昇順でソートしてあります。 条件付書式は数式に =COUNTIF(A:A,A1)>1としています。 B列にはA列の特定セルの行にだけ数字データがあります  A列の特定セルとはA列の重複セルの下側のセルです。 重複データは常に2つだけ出てきます。ソートしてあるのでB列にデータの無いセルが上側に配置されているのだと思います。 例えば、 A    B 事項 該当箇所 (見出しです) 愛知  秋田 秋田 12.23.34. 石川 愛媛 愛媛 5.68.78. (A列の秋田、愛媛のセルの背景色が条件付書式で黄色くなっています) という具合です。 ここで質問ですが、 重複セルの上側のセルだけを削除する方法を教えてください。上の例ではB列にデータの無い秋田、愛媛です。 フィルタオプションで「重複セルを無視する」にチェックをいれても重複セルの下側のセルが無視されてしまいます。また、検索で色つきセルだけを表示しようとしても条件付書式ではできないようです。 わかりにくい説明ですみません。よろしくお願いします。

専門家に質問してみよう