• ベストアンサー

[EXCEL2000]重複データを除去する方法

(1)A列には文字データがあり、B列にはフリガナがあります。 (2)重複しているデータを1つとみなして抽出したいのですが、どうすればよいでしょうか?(データがいくつ重複しているかは決まっていません。) どなたか教えてください! (A列)  (B列) 東京都  トウキョウト 東京都  トウキョウト 大阪府  オオサカフ 大阪府  オオサカフ 大阪府  オオサカフ 福岡県  フクオカケン  ↓  東京都  トウキョウト 大阪府  オオサカフ 福岡県  フクオカケン

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

  • ベストアンサー
回答No.4

こんばんわ。 大変失礼いたしました。 表示されなかった原因は、Privateキーワードがついていたからです。 VBAでは、Privteキーワードがついているプロシージャをツールバーボタンに登録したり、アクセスキーを設定して実行できないという制約があります。基本的なことを忘れてサンプルマクロを提供してしまいました。誠に申し訳ございませんでした。深くお詫び申し上げます。 修正マクロを作らせていただきました。前回の方法で、実行してみて下さい。今回は、アクセスキーを設定して実行することができるかと思います。 Sub Rows_Delete() Dim myRow As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim myCnt As Integer myRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To myRow - 1 If Cells(i, 1).Value <> "" Then For j = i + 1 To myRow For k = 1 To 2 If Cells(i, k).Value = Cells(j, k).Value Then myCnt = myCnt + 1 If myCnt = 2 Then Rows(j & ":" & j).ClearContents End If End If Next k myCnt = 0 Next j End If Next i Do myRow = Cells(Rows.Count, 1).End(xlUp).Row If Cells(myRow, 1).End(xlUp).Row = 1 Then Exit Do For i = 2 To myRow If Cells(i, 1).Value = "" Then Rows(i & ":" & i).Delete Next i Loop End Sub

fuku_z
質問者

お礼

kazuhiko5681さん、二度目の回答ありがとうございます。 私のために遅い時間まで修正マクロを作って下さり、本当に感謝しています。 私もkazuhiko5681さんのようにマクロを自在に操れるように勉強していきたいです。 過去の質問をよく調べなかったばかりに負担をかけてしまいました。 本当にありがとうございました。

その他の回答 (3)

回答No.3

初めまして。サンプルマクロを作ってみました。下記のコードをコピー・ペーストするだけで、自動であなた様の考えていることが実行されます。 下記の様に操作してみて下さい。 1.新規ブックを開き、ALT+F11キーを押してVBE画面を開く 2.画面左上のVBAProject徒書いてある下のSheet1をダブルクリックし、右側の白い部分へ下のコードをコピー・ペーストする。 3.再度ALT+F11キーを押してエクセルの画面にもどり、ALT+F8キーを押してマクロダイアログボックスを立ち上げ、マクロ名の下に、Sheet1.Rows_Deleteと入力されている(されていない時は、下のマクロ名をクリックすると入力される。)ことを確認後、オプションボタンをクリックする。 4.カーソルが点滅しているテキストボックスに半角小文字でbと入力し、OKボタンを押してダイアログボックスを閉じる。×ボタンを押してマクロダイアログボックスも閉じる。 適当にデータを入力後、CTRL+bを押すとマクロが実行され、ダブった行が削除されています。 もし不都合な点・ご不明な点がございましたら、ご遠慮なくお知らせ下さい。私でよろしければ、あなた様のおやりになりたいことが実現できるまでご一緒に考えていきたいと思います。 Private Sub Rows_Delete() Dim i As Integer Dim j As Integer Dim k As Integer For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row - 1 For j = i + 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To 2 If Cells(i, k).Value = Cells(j, k).Value Then Rows(j & ":" & j).Delete shift:=xlShiftUp End If Next k Next j Next i End Sub

fuku_z
質問者

補足

kazuhiko5681さん、回答ありがとうございます。 おっしゃるとおりやってみました。ところが、 >マクロ名の下に、Sheet1.Rows_Deleteと入力されている のところでマクロ名がでてきません。その下の欄(キャンセルボタンの左)にも 何も表示がありません。 質問についてはすでに解決しましたが、もし、よろしければ、 原因を教えていただけませんか。

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

同様の質問が度々出ます。 2002/10/14 No.380628 2002/9/20 No.362854など。 「エクセル 重複データ」を検索語として、OK-WEBの過去の質問を調べてください。重複を削除とか合計するとかの質問が出ます。

fuku_z
質問者

お礼

imogasiさん、いつもありがとうございます。 過去の質問をよく調べた結果、 (1)フィルタオプションの設定 (2)重複するコードは無視するにチェックする ことで解決いたしました。同じ質問が何度も出ていたようですね。 以後、よく調べてから質問するよう気をつけます。回答ありがとうございました。

回答No.1

集計をするといいのでは。 データ→集計→A列の合計を集計 集計した合計だけを、コピーして別のワークシートに貼り付けすると、 抽出できます。

fuku_z
質問者

お礼

データ→集計で実行した結果を他のシートに貼り付けると、 結果だけでなく、内訳のデータまでコピーされてしまうようです。 過去の質問をよく調べた結果、抽出結果だけを活用できるようにするには、 (1)フィルタオプションの設定 (2)重複するコードは無視するにチェックする (3)結果をコピーして他のシートに貼り付ける により可能でした。回答ありがとうございました。

関連するQ&A

専門家に質問してみよう