• 締切済み

マクロを使った重複チェックについて。

以下の様な表があります。 番号  名前  ジャンル   AAAA-1 佐藤   趣味     BBB-5  高橋  スポーツ CCC-35 酒井   音楽 AAAA-1 佐藤   趣味     BBB-6  高橋   スポーツ CCC-35 酒井   音楽 番号部分が重複していると、重複している行を順々に、 『○行目と×行目が重複しています”というようなメッセージが表示されるようにしたいのです。 (番号部分の桁数は、その時々によって変わります。) 行は1000行ほどあります。 ボタンをクリックすると、チェックのマクロが走るようにしたいのですが、 どのようにすれば良いのでしょうか? 教えてください。 宜しくお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

こんな感じでどうでしょうか --------------------------------------------------------------- Public Sub 重複チェック() Dim base As Range, x As Range Dim i, DupList, a Set DupList = CreateObject("Scripting.Dictionary") Set base = Range("A2") 'データの始まりのセル i = 0 Do While (base.Offset(i).Value <> "") '空白セルで終わり Set x = base.Offset(i) If DupList.Exists(x.Value) Then DupList.Item(x.Value) = DupList.Item(x.Value) & "," & x.Row Else DupList.Add x.Value, x.Row End If i = i + 1 Loop For Each i In DupList.keys If InStr(DupList.Item(i), ",") > 0 Then MsgBox i & "が、" & StrConv(DupList.Item(i), vbWide) & "行目で重複しています" End If Next End Sub

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

関連するQ&A

  • エクセル / 重複する文字の行番号を抜き出す。

    お世話になります。 XP/2003 使用です。 エクセルで下記のようなケースの行番号を抜き出したいです。 できれば、関数のみがありがたいのですが、 マクロでもOKです。 ----------- 抽出したい行番号  重複する文字が入力された 「先頭の行」 と 「最後の行」 の行番号 ----------- 例 同じ列に、重複する単語が入力されています。 重複する単語は、必ず上下に並んでいますが、 1単語のみ場合もあります。 1  AAA 2  AAA 3  AAA 4  AAA 5  BBB 6  BBB 7  CCC 8  CCC 9  CCC 10 DDD 上記の場合の抽出した行番号 単語 → 先頭の行/最後の行 AAA → 1/4 BBB → 5/6 CCC → 7/9 DDD → 10/10 行番号は、B列、C列などに抽出できれば良いです。 何卒よろしくお願いします。

  • 【Excel】マクロを使用した重複チェックについて

    教えて下さい! 以下のような表があります。 月|日|A担当|コード|サブ|コード|B担当|コード 5  1    田中   1   佐藤   5   鈴木   3 5  2    佐藤   5   鈴木   3   田中   1 5  3    鈴木   3   田中   1   佐藤   5 5  4    佐藤   5   鈴木   3   田中   1 行ごとにかぶっている人がいると”■行の○○さんが重複しています”といったようなメッセージが表示されるようにしたいのです。 行は30行ほどあります。 一つフォームのボタンを作り、それをクリックすることにより重複チェックのマクロが流れるようにするにはどうしたらいいのでしょうか?

  • マクロを使用しての重複チェックについて

    ここの質問にCOUNTIFや条件式書式などでデータの重複チェックを する内容はあるのですが、ちょっと思ってるのと違うので 質問します。 A列 B列 1 aaa 1 aaa 2 aaa 2 aaa 3 bbb 3 bbb 4 ccc 4 ccc 上記のように8行のデータがあります。 条件で、A列の数字が同じ数字でB列が同名の場合は、 チェック対象外で、A列の数字が違う数字でB列が同名の場合 (上記でいうと1 aaa と 2 aaaの場合)は、重複で対象行を 網掛けをするという処理を作りたいのですが、そういうことって できるのでしょうか。 まずは、値を明示的にやるべきだと思いますが、 理想としては、A1とA2が同じ値でB1とB2の値が一緒の値だったら 処理なし。 A1とA2の値が違う値でB1とB2の値が一緒の値だったら 重複っていうような処理を行えたら幸いです。 理由は、どんどんなデータ(行)を追加することを想定させた場合を 考えております。 参考になるのがありましたら教えてください。

  • Excelのマクロでの部分的な重複データの抽出方法

    お世話になります。 Excelのマクロで部分的な重複データの抽出をしたいと考えています。 データの内容は下記のような感じです。 名称 No. AAA 111-11 BBB 111-12 CCC 111-21 DDD 111-23 EEE 121-13 FFF 201-31 GGG 201-32 HHH 53-1 JJJ 53-2 KKK 91-1 桁数(文字数)が2通りあり、前述のものは-(ハイフン)のすぐ後の文字(基本的に数字ですが、アルファベットの場合もあります)までの内容で重複データを削除したいです。後述の短いものは-(ハイフン)の直前までの内容で重複データを削除したいです。最後の文字は無視して重複を省きたいという事です。 最終的なデータの希望内容は、 名称 No. AAA 111-11 CCC 111-21 EEE 121-13 FFF 201-31 HHH 53-1 KKK 91-1 です。 現状、関数のLENなどを利用してある程度手を加えていますが、できれば全てマクロでできないかと欲を出してます・・・・。お願いします。

  • 繰り返しの置き換えマクロで困っています。

    繰り返しの置き換えマクロで困っています。 マクロ初心者です。 aaa@bbb_123 111 112 33 240 111_15 220 245 bbb@ccc_111 111 22 33 260 11 220_40 270 上記の場合に、@行の次の行の一番最後の値に、プラス5して置き換えるマクロを作成したいです。 マクロを実行すると下記になる様にしたいです。(240が245、260が265) aaa@bbb_123 111 112 33 245 111_15 220 245 bbb@ccc_111 111 22 33 265 11 220_40 270 @行の次の行の一番最後の値 と プラス5 という形で置き換えしたいです。 どなたか、教えて頂けませんでしょうか

  • エクセルで教えて下さい。

    同じような質問があったらごめんなさい。 エクセルでシート1にデータを入力してシート2に データを整理したいのです。 シート1には重複した行があります、これを シート2には重複した行を省いた表にしたいのですが どうしたら出来るのですか? 出来ればマクロは使いたくない(使い方がわからないです) のですが。 やりたい事 シート1 --------------- AAA|45 AAA|30 AAA|20 BBB|50 CCC|30 CCC|20 シート2 ---------------- AAA| BBB| CCC| ---------------- AAAとCCCの重複している 行を省いてシート2に入力されるように したいです。 宜しくお願いします。

  • シェルスクリプト 重複削除

    aaa,11 bbb,22 aaa,14 ccc,22 ddd,11 と行があるとして、カンマ区切りの左側が重複しないように最初にでてくるものだけをピックアップして aaa,11 bbb,22 ccc,22 ddd,11 と出力したいです。 ワンライナー先生お願いします。 一行じゃデキナイカナ?

  • 重複 があれば削除して1つに

    http://oshiete1.goo.ne.jp/qa4510771.html の族編です。 エクセルの1列の縦長いデータを抽出して 1行の横長いカンマ区切りのテキストにしたいのですが、 エクセルの縦1列をコピペでワードにテキストで貼り付け そこから改行を置き換え削除で横並び1列になったのですが 重複する文字が複数あったので、重複分を削除して1つだけに残したいのです。 エクセルデータは変更してはいけないので、コピーしかできません。別のエクセルにならコピーしてもかまいません。 手作業では大変な作業ですので、簡単で単純な方法を教えて下さい。 ********************************** aaa  ← エクセルの縦列のデータ bbb  ← ccc aaa ddd bbb ↓ aaa,bbb,ccc,ddd こんな風に重複分だけ削除して1行カンマテキストにしたいのです。 <(_ _)>

  • 【Excel】重複を除いた抽出方法

    以下のような表があります。 No. 項目 ランク 備考 1 AAA 01 あああ 1 AAA 02 いいい 1 AAA 02 ううう 1 AAA 03 えええ 1 AAA 04 おおお 1 AAA 05 かかか 2 BBB 01 ききき 2 BBB 02 くくく 3 CCC 01 けけけ 項目に対してランクがありますが、ひとつの項目に対しランクは「01」「02」「03」「04」「05」しかあってはならないのに、「02」が重複しているものがあります。(例えば3行目は重複しているものとみなされます。備考は違ってもかまいません)) このような重複を省いてデータを抽出したいのです。 抽出の足がかり的なことでもかまいませんので、宜しくお願いいたします。

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

    横17列、縦、約1000行の表があります。 4行目が項目で、5行目以降は次のように並んでいます。 A列(日付)、B列~H列(各データ) I列(契約番号)J列~Q列(各データ) 縦の並び順は、ばらばらで、日付順ではありません。しかも結構重複があります。 そこで、I列の商品番号をキーにして、重複をチェックし、重複しているものは、日付が新しいものを生かし、古い方は削除しようと思います。 しかし、手作業でやるにはあまりに多すぎるため、出来ればマクロでやりたいのですが、このように高度なものは、わたしが出来るマクロの記録程度では手におえそうもありません。 どのようにやったらよいのかどなたかお教え願えませんでしょうか?