[[20020903210657]] 『重複している名前を2名分とも削除したい』(ひゆ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重複している名前を2名分とも削除したい』(ひゆ)

ここに書き込むのは2度目になります。

どうぞ、宜しくお願い致します。

膨大な量の名前があります。

あいうえお順でもなくバラバラで2万件ほどあります。

この膨大な量のデータの中から重複している名前を

削除したいのです。

例えば、5行目に“田中太郎”、500件目に“田中太郎”とあったとしても、

画面をスクロールしていくか、昇降順にして並べかえでも

しなければ、そこに“田中太郎”が2名分あることはわかりませんよね?

そこで初めて2名あることが分かり、5行目と500行目を

削除するという・・・・・。

そんな手作業で1名づつ削除していくのは気が遠くなる様な作業です。

重複している名前を2名とも、もしくは3名、4名とデータ中には

存在しているかもしれませんので、もう少し効率よくできる、

何か良い方法はないでしょうか?

どうぞ、宜しくお願い致します。


[[20020701122019]] 『選択範囲にある重複した文字列に色をつけたい』(ヨシダ)

 尋さんの条件式を参考に案内した例があります。

参考にして下さい。

 (シニア)


[[20020701122019]] 『選択範囲にある重複した文字列に色をつけたい』(ヨシダ)

のケースも参考になりました。

が、この場合2名分同じ名前が見付かったとしても1名分しか色付け

されませんよね?

私の場合、2名分とも削除してしまいたいのです。

3名分、重複していたりもするので、手作業でやっていくと、

昇降順に並べ替えたりして目で見て、探して確認して削除と。。。

果てしない工程の繰り返しなので、何か良い方法は無いでしょうか?

度々、すみませんが宜しくお願い致します。(ひゆ)


 例えば、重複セルがB2以降であれば、B2を選択し、Shift+End+↓で範囲を選択後

「条件付き書式」で「数式が」「=countif($B$2:B2,B2)>1」【書式】でパターン色をしていすれば

同一人が3データの時最初のデータは1、2番目のデータは2、3番目のデータは3になります。

条件式が1より大きい場合ですから、2番目、3番目のデータに色がつきます。

従って、着色されたセルを削除すればよいことになります。

 B列の右隣に列挿入して、=countif($B$2:B2,B2) の式を入力し、

このセルのフィルハンドルをダブルクリックすれば一瞬に式がコピーされます。

この列を昇順に並べ替えれば、2以上のデータは重複していることになります。

削除する場合に同姓同名の方には注意して下さい。

同一人であっても入力データが違う場合があります。名前の前後に空白があったり、

途中の空白が全角1文字と半角2文字では別人になってしまいます。

TRIM関数で空白は補正できますが、文字違いの渡辺と渡邊は別人扱いです。

データーの統一がなされて入れば正常に機能します。

 (シニア)


こんばんは

 「重複データは全て削除」ですと

 どういったデータを削除したか記録に残りませんが良いのでしょうか?

 マクロでやれば可能なように思いますが・・・・・・・

 (尋)


 尋さんこんばんは

尋さんには毎回フォローして頂き、大変助かっています。

私もマクロ処理プログラムの記述を勉強中なので、是非紹介して下さい。

お願いします。

 (シニア)


 データがダブっているものをすべて見つけるExcel-VBAです。

 (1)下のVBAを丸ごと(Dim からEnd Functionまで)コピーします

 (2)[ツール]メニュー→[マクロ(M)]→[VisualBasicEditor(V)]を選択

 (3)[挿入(I)]メニュー[標準モジュール(M)]

 (4)白い画面になります

 (5)白いとことの一番上をクリックして[貼り付け]します。

 (6)[ファイル]メニュー→[終了してMicrosoftExcelに戻る]を選択

 (7)Excelのワークシートに戻ります

 (8)[ツール]メニュー→[マクロ(M)]→[マクロ(M)]でDuplicateScratchを選択

 (9)実行ボタンを押す。

 少し長いVBAですが、これで、A列にある名前をすべて調べてダブっている場合

 B列にダブっていますのマークがつきます。

 あとはダブリのところで[並べ替え]ればらくらく削除ができます。

 <実行結果>

 名前	ダブリ

 ひゆ	

 kazu	kazu001

 尋	尋001

 kazu	kazu002

 尋	尋002

 kazu	kazu003

 kazu	kazu004

 シニア	

 naka	naka001

 naka	naka002

 たぬき	

(kazu)

 Dim nameData(10000) As Variant, nameDataCnt(10000) As Integer

 Dim nameCnt As Integer

 Sub DuplicateScratch()

 ' データのダブリを見つける 2002/09/07 Create By.kazu

     Dim maxRow As Integer, r As Integer, ndat As Variant, k As Integer

     Dim m As Integer

     Dim nameCol As Integer, markCol As Integer

     nameCol = 1 '対象データはA列

     markCol = 2 'マークをつけるのはB列

     ActiveSheet.Cells(1, nameCol).Select

     ActiveSheet.Cells(1, markCol) = "ダブリ"

     Selection.SpecialCells(xlCellTypeLastCell).Select

     maxRow = Selection().Row

     nameCnt = 0

     For k = 0 To maxRow

         nameData(k) = ""

         nameDataCnt(k) = 2

     Next k

     For r = 2 To maxRow

         ndat = ActiveSheet.Cells(r, nameCol)

         If Len(ndat) > 0 Then

             ret = UFsearchName(ndat)

             If ret > 0 Then

                     ActiveSheet.Cells(r, markCol) = _

                         ndat & Format(nameDataCnt(ret), "000")

                     If nameDataCnt(ret) = 2 Then

                         For m = 2 To r

                             If ndat = ActiveSheet.Cells(m, nameCol) Then

                                 ActiveSheet.Cells(m, markCol) = ndat & "001"

                                 Exit For

                             End If

                        Next m

                    End If

                    UFcntUp (ret)

             End If

         Else

             Exit For

         End If

     Next r

 End Sub

 Function UFsearchName(indata)

     Dim k As Integer

     UFsearchName = 0

     For k = 0 To nameCnt

         If indata = nameData(k) Then

             UFsearchName = k

             Exit Function

         End If

     Next k

     nameCnt = nameCnt + 1

     nameData(nameCnt) = indata

 End Function

 Function UFcntUp(no)

     nameDataCnt(no) = nameDataCnt(no) + 1

 End Function


 kazuさん早速マクロ紹介して頂き有難う御座います。

VBA以前のBasicを思い出しながら、VBAに挑戦します。

今後共宜しくご指導の程お願いします。

 (シニア)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.