• ベストアンサー

エクセルで同一データの行を自動削除するツールを作成したい

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 VBAとマクロ: >たぶんマクロではできないと思うのですが、エクセルにて同一データを持つ行を自動検索して削除していきたいのです。 おっしゃるように、「自動」という意味によっては、厳密な意味で言えば、マクロでは出来ないかもしれません。マクロというのは、ひとつのパッケージになっているわけですから、私たち、Excelユーザーの多くは、マクロでないものも、マクロと呼んでいるわけで、本来、引数を取るものはマクロとは呼びません。 ただ、今の段階では、マクロから始めないと、ラチが開かないように思います。それで、データ量によってコードが決まりますが、作ってみましたが、大量の範囲の場合は、思った以上に、そういう方法に決定するまで試行錯誤してしまいました。 少量の場合。 Sub DoubleDataFindDelete() Dim c As Range Dim DeleteRng As Range Dim myRng As Range Set myRng = Range("A1", Range("A65536").End(xlUp)) Application.ScreenUpdating = False For Each c In myRng  If Not IsEmpty(c) Then    If WorksheetFunction.CountIf(Range("A1", c), c) > 1 Then     If DeleteRng Is Nothing Then      Set DeleteRng = c     Else      Set DeleteRng = Union(DeleteRng, c)     End If    End If  End If Next c  If Not DeleteRng Is Nothing Then    DeleteRng.Delete  End If Application.ScreenUpdating = True  Set DeleteRng = Nothing  Set myRng = Nothing End Sub '-------------------------------------------- '大量の場合 今回は、25000行で調べました。 '1行目のタイトル行は必要です。 '<標準モジュールのみ> Sub FilterOptionUsedMethod()   Dim myRng As Range   Dim mySheet As Worksheet   Set mySheet = ActiveSheet     Application.ScreenUpdating = False     'A列によって重複を探す   Set myRng = mySheet.Range("A1", Range("A65536").End(xlUp))     myRng.AdvancedFilter Action:=xlFilterInPlace, Unique:=True   With mySheet.Range("A1", Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible)    .EntireRow.Copy   End With   With Worksheets.Add(After:=Sheets(Worksheets.Count))    .Range("A1").PasteSpecial    mySheet.ShowAllData    mySheet.Range("A1").CurrentRegion.ClearContents    .Range("A1").CurrentRegion.Copy    mySheet.Range("A1").PasteSpecial    Application.DisplayAlerts = False    .Delete    Application.DisplayAlerts = True   End With   Application.ScreenUpdating = True   Application.Goto mySheet.Range("A1")   Set myRng = Nothing: Set mySheet = Nothing End Sub

KKseguro
質問者

お礼

わかりづらい質問なのに、こんな短時間で考えて頂いてありがとうございました。 少量データの方のコードでは、だぶっているデータ行を検索することができました。 「新しいマクロの記録」という登録方法ではどうやってもできなかったので、VBAというプログラムを使用しないとだめなんだろうな・・・と思っているだけで、とっかかりがなんともわからず、こちらで相談してみてよかったです。 VBAでどんなことができるのか、おふたかたの例題を糧にさせていただき、これから勉強していきたいと思います。ありがとうございました。

関連するQ&A

  • Excel VBAでの行の削除について

    Excel VBAを使用して2行ずつ行の削除をし、1行残して(3行目を残す)また2行ずつ行の削除、1行残しす(6行目を残す)をループして行う方法が知りたいです。 イメージとしては以下のような感じです。 ━━【A】━━━━ 【1】あいうえお 【2】かきくけこ 【3】さしすせそ 【4】たちつてと 【5】なにぬねの 【6】はひふへほ 【7】まみむめも 【8】やゆよ 【9】らりるれろ ━━━━━━━━━ ↓マクロ実行後↓ ━━【A】━━━━ 【1】さしすせそ 【2】はひふへほ 【3】らりるれろ ━━━━━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • エクセル 網掛けしてあるセルの行を残してそれ以外の行を削除するVBA

    windows-xp、エクセル2003を使っています。 エクセルデータがA列からU列まであります。 (1000件程かな、時々AA列まである時もあります) G列には、網掛けしてあるセルがあります。 そこで!! 網掛けしてあるセルの行だけを残して、網掛けがされていない行のデータを一気に削除する!というマクロ(VBA)を作りたいのですが、どうすればよいでしょうか? VBAまだ、よくわかっていないので、初心者レベルでわかりやすく教えてくださると助かります。 宜しくお願い致しますm(_ _)m

  • Excel(エクセル)行挿入SAM自動計算

    Excel(エクセル) SAMで1行目から10行目の合計を出していて、10行目以降に行を挿入して自動的に1行目から11行目の合計が出るように設定したいです。 ※元から空白のセルを入れておくことはしたくありません。 ※マクロやVBAは使えません。初心者です。 例 : (A1) 200 (A2) 100 (A3) 200 ←後から挿入した (A4) 合計 300 ←自動的に500になって欲しい 宜しくお願いいたします。

  • エクセルのシートを同時に行削除、行挿入させて自動連動させたい

    エクセルで、横(列)256列以上のデータを入力したいため、シートを分けざるをえません。その場合、次のようなことがしたいとき、どのようにすればよろしいでしょうか?(やりたいことの結論下記(3)になります。) エクセルのシートが2つ以上あるとします。 (1)「sheet1」には、基本データ(名簿録のようなもの・氏名ふりがなアイウエオ順配列) (2)ふたつめ以降のシートには、毎月変更するデータを入力し、「sheet1」の名簿の個々のIDに対応したそれぞれ同じ行番号に入力することになります。 (3)「sheet1」で行削除(名簿対象者解約)や行挿入(新規契約者)を任意の場所で行いたい。それに連動して、2つ目以降のシートでも同じ列で行削除・行挿入を自動でしたい。 ★この簡易システムを作成するのはマクロ初心者の私であり、日々の入力作業するのはエクセルそのものが初心者である他者となります。 ★行挿入、行削除のときだけシートの同時選択を手作業でしてもらうことは想定していません。そのあたりをも含めた自動化の智恵がでてこないのです。 以上、よろしくお願いします。

  • エクセルVBAで、行削除⇒別シートに自動入力をしたい

    いつもお世話になります。よろしくご指導お願いします。 VBA初心者です。最近随分皆様に助けていただいています。尚、業務の関係でお助けください。 エクセルで名簿形式のデータベースシートがあります。 (山田太郎 ○○市○○町 911-1234 ・・・) 例えば、この山田さんが解約したり死亡されたりすると「行削除」をします。そのとき、別シート(シート名「解約者台帳」)に自動的に削除した行の全データをもっていきたいのです。 ★解約者台帳のフィールドは、元シートと基本的に同じですが、A~AG列のデータが必要。AH列以降のデータは不要です。 解約者台帳に追加していく(新しい行=何も入力されていない行への自動入力)等のVBAのイメージを含めて、私の力ではやはりさっぱりです。どうかまたまたお助けください。お待ちしています。

  • エクセルで行の高さ

    WINDOWS XP(Home Premium)でExcel2003を使用しています。 300行のデータに対し、エクセルで行の高さの自動調整をしました。 しかし、高さが一部不充分であり、印刷されると不備が多々あります。 行の高さを  「メニュー・書式(O)→行(R)→自動調整(A)」でおこなわれる高さの 1.2倍~1.5倍くらいの高さにしたいのですが良い方法はありませんか? おそらくマクロやVBAを使えば可能なんだろうなとは思いながら、 コマンドのことやプログラムを組み立てる知識が無いので、 VBAにこれを貼り付けろ、という提案を頂けたらすごく助かります。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • エクセルのファイル中の空白行を削除する方法

    エクセルのファイルでデータ入力されているものがあるのですが 空白の行があり,それを削除したいのですが たくさんあって手作業では大変です。 マクロなどでうまく自動的に削除できないものでしょうか? 因みにデータはA列にのみ入力されてます。 宜しくお願いします。

  • エクセルで複数行のデータを1行にする方法

    エクセルで複数行のデータを列挿入--切り取り--貼り付けで1行にしたいのですが、 その様なセルの並びが沢山あります。 VBAマクロなどで一度に出来る方法が有りましたらどうか教えて下さい。 データはこんな感じです。 ┌─┬─┬─┬─┬─┐ │01│04│07│10│13│ ├─┼─┼─┼─┼─┤ │02│05│08│11│14│ ├─┼─┼─┼─┼─┤ │03│06│09│12│15│ ├─┼─┼─┼─┼─┤ │16│19│22│25│28│ ├─┼─┼─┼─┼─┤ │17│20│23│26│29│ ├─┼─┼─┼─┼─┤ │18│21│24│27│30│ ├─┼─┼─┼─┼─┤ この様に並び替えたいのです。 ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │01│02│03│04│05│06│07│08│09│10│11│12│13│14│15│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │16│17│18│19│20│21│22│23│24│25│26│27│28│29│30│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ 何卒宜しくお願いいたします。

  • excel VBA で”27行目ごとに3行削除”について

    VBAはまったく初めてです。 早急に作業を行わなければいけないことがでてきたのですが、持ち時間がないので、VBAでできないものかと思いました。 マクロの記録をやってみたのですが、うまくいきません。 記述をする場所はわかります。 毎27行目以降3行を削除していきたいのです。 どう記述していけばいいのか、どなたか教えていただけないでしょうか?

  • エクセル 同じデータのある行を削除

    こんばんは、エクセル2010で同じ行のデータの削除について教えて頂けませんか? A1~Z1セルまでデータがあります。 それから、下行にずっとデータが続くのですが、A行からZ行まで全く同じデータがあったらその行ごと削除するにはどうしたら良いでしょうか? A1~Z1のデータと、A5~Z5のデータが【全て同じ】なら、A5~Z5を削除するという事です。 他にも同じ行がたくさんあるので、重複している行を全て削除したいと思います。 詳しい方、よろしくお願いいたします。