• ベストアンサー

エクセルで重複するセルの出現回数を数えたい

エクセル2003である列で重複するセルの出現回数を別の列にカウントするマクロの書き方を教えて下さい. 具体的には以下の通りです. A列が実データで,B列に出現回数をカウントする例. A列   B列 12345   33456 12345 99999 12345 ・ ・ ・ に対してマクロ実行すると, A列   B列 12345  1   33456 1 12345 2 99999 1 12345 3 ・ ・ ・ 大体1000行ほどのデータがあります. よい方法があれば教えていただけると大変ありがたいです.

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

  • ベストアンサー
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

関数ではダメ?  B1 =COUNTIF(A$1:A1,A1) B1以下にコピー これでOK 1000行あるなら、左上の名前ボックスに B1:B1000 と入力すると B1から B1000セルまでを選択してくれますので、 Ctrlキーを押しながら Dキーを押すと一発で B1の内容が範囲にコピーされます

kosaka2009
質問者

お礼

つい、勢いでマクロと書いてしまいました。関数でも問題なかったでです。ほかのマクロを教えていただいた方もありがとうございました。 上記の関数でいとも簡単にできてしまいました。 さらに複数行選択する技術まで教えていただけました。感謝いたします。

その他の回答 (5)

  • a987654
  • ベストアンサー率26% (112/415)
回答No.6

関数でも可能ですがどうしてもマクロなら1例として オーソドックスなやり方で、2000行まで余裕をみて、 A1セルから始まり最終データの次行は 空白(ブランクではなくDELする)としています。 表示上は同じでも文字と数値は区別されます。 そのままのベタ張りで動くことは確認済で、特殊なものは使って いないのでエクセルのバージョンには影響されません。 もとはインデントしてあるのですが投稿時に詰まってしまい 見にくくなっているのはご容赦願います。 下記 ご参考まで For i = 1 To 2000 If (Cells(i, 1) = "") Then Exit For '最終行判定 Cells(i, 2) = 0 '初期値設定 Next i For i = 1 To 2000 a$ = Cells(i, 1) If (a$ = "") Then Exit For '最終行判定 ii = 1 If (Cells(i, 2) = 0) Then Cells(i, 2) = ii For j = i + 1 To 2000 If (Cells(j, 2) > 0) Then Exit For '記入済回避 b$ = Cells(j, 1) If b$ = "" Then Exit For '最終行判定 If (a$ = b$) Then ii = ii + 1 Cells(j, 2) = ii 'カウント値記入 End If Next j Next i

kosaka2009
質問者

お礼

質問内容が、マクロで、 ということでしたので、マクロで回答いただきありがとうございます。 ただ、初期目的は関数で簡単に達成できました。 今後、エクセルを勉強していきたいと思いますので、 また壁にぶち当たったら質問させてください。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

No.4です。 間違えたのでスル~して下さい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

Sub try()  With Range("A1", Cells(Rows.Count, 1).End(xlUp))    .Offset(, 1).Formula = "=COUNTIF($A$1:" & .Address(1, 1) & ",A1)"    .Offset(, 1).Value = .Offset(, 1).Value  End With End Sub 一例まで。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

間違いでした。次のようにします。 Sub Macro2() Range("B1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",COUNTIF(R1C[-1]:RC[-1],RC[-1]))" Range("B1").Select Selection.AutoFill Destination:=Range("B1:B1500"), Type:=xlFillDefault Range("B1:B1500").Select Range("C1").Select End Sub

kosaka2009
質問者

お礼

質問内容が、マクロで、 ということでしたので、マクロで回答いただきありがとうございます。 ただ、初期目的は関数で簡単に達成できました。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

たとえば次のようにします。 Sub Macro1() Range("B1").Activate ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",COUNTIF(C[-1],RC[-1]))" Range("B1").Select Selection.AutoFill Destination:=Range("B1:B1500"), Type:=xlFillDefault Range("A1").Select End Sub

関連するQ&A

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

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

  • エクセルで連続セルの出現回数を出したいです。

    例えば、A列に、0と1だけのデータが(数万行)あります。 A列 0 0 0 →a 1 →c 1 0 0 0 →a 0 →b 0 1 0 1 1 1 1 0 このデータから、 a:0が3連続した回数 b:0が3連続した次のデータが0だった回数 c:0が3連続した次のデータが1だった回数 (4連続は含まず) こういったデータを出したいのですが、エクセルでどのような方法がありますでしょうか? (上記の例では、a2回、b1回、c1回) よろしくお願い致します。

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

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

  • エクセルで出現した回数を自動表示させたい

    エクセルである文字列について、出現した回数を自動で数えて表示させる方法はないでしょうか。 具体的には A 1 A 2 A 3 B 1 B 2 C 1 のようにしたいです。ご存知の方がおられましたらご教授ください。

  • Excel 2007 マクロ 同列のデータの重複チェック

    Excel 2007 マクロ 同列のデータの重複チェック A列で重複しているデータをチェックします。 重複しているデータについて、B列にフラグをつけます。 フラグはどの行とどの行が重複しているのかわかるようにしたいです。 そのため重複している行同士ごとにフラグをつけます。 上記の内容はマクロで実現できるのでしょうか。 元データと完成形の画像を添付します。 よろしくお願いします。

  • エクセルで、特定の数字が出た回数をカウントする方法はありますでしょうか??

    いつも、いつもお世話になっております^ ^ エクセルで、特定の数字が出た回数を カウントする方法はありますでしょうか?? データ数が10000以上あるのですが、 その中から特定の数字が出た回数をカウントし、 別のセルにその数値を表示したいと思っております。 例)データ(Aセルに入力)   4   5   2   7   5   5   3   5  としましたら、  5と2を特定の数字とし、  Bセルに5と2が出た回数をカウントする方法は、  ありますでしょうか??  2が1回出現、  5が4回出現していますので、  この場合はB1セルに5と表示できればと思っております。 どなたか知識を分けていただければ幸いです。 よろしくお願いいたしますm(_ _)m

  • エクセル 重複データのカウント

    初めまして。 初めて質問いたします。 よろしくお願いいたします。 エクセルで、A列に7ケタの数字13万件         B列に同じく7ケタの数字100~2000件         C列にB列にデータがある行まで=COUNTIF($A$2:$A$130000,B2) 上記の状況で、C列の値は1か0しか出ない状態なので、 セルD1に=COUNTIF(B2:B2000,0)と入れてB列にあるけどA列にないデータの 数(重複していないデータ)をカウントしています。 しかしながら、ベースとなっているA列のデータが13万件と多いので、 再計算などに結構時間がかかっているので、どうにかならないかと思いまして 質問させていただきました。 ちなみに、A列のデータは少しずつ増えていきます。 1度B列にあってA列にないデータは、次にB列に違うデータを入れてカウントする際に 新規データとしてA列に追加しています。 なんとか処理が速くなる方法などありましたらご教授下さい。 よろしくお願いいたします。

  • エクセルで不出現回数とそれの%の出し方教えて下さい。

    エクセルで.下記の時.25以上が出現してからの不出現回数と出現からの不出現%の 出し方を教えてください。  (右下記のような感じで) ・ A  B C D 不出回数  % 1 10 20 30 25    0   100% 2 28 10 15 20    3   25% 3 20 25 15 10    2   33%        

  • エクセルで不出現回数とその%の出し方教えて下さい。

    エクセルで下記の時.最後に25以上が出現してからの 不出現回数とその%の出し方教えて下さい。 A B C 不回 % 1 10 25 10 1 50% 2 30 22 20 2 33% 3 30 10 26 0 100%

  • エクセル教えてください 重複データの削除方法

    エクセルは良く使っていますが、レベルは初級の上です。 同一セル内に複数の重複データが入っていますが、重複しないものを抽出し 新しいセルに入れたいと思っています。 重複データの区切りは、セミコロン";" パイプ区切り"|",空白、改行が混在しています。 重複しないものを、新しいセルに入れたいのですが、どのようにしたら良いでしょうか? 新しいセルでのデータ区切りは、コンマ(又はパイプ区切り)にしたいと思っています。   例で説明します。 A列(番号) B列(元のデータ)             C列(重複を除いたデータ)  1      タイ ベトナム 中国|タイ|タイ         タイ,ベトナム,中国    2      インド ベトナム|インド タイ |インド 中国  インド,ベトナム,タイ,中国 ※B列のデータを重複を除いて、C列に入れたいと思っています ※2行のデータを例にしましたが、実際には2万くらいデータがあります ※マクロは全くわからないので、多少の手作業があっても関数レベルで やれると助かります。(いまから、マクロを勉強してもよいでしょうか??) 良い方法をアドバイスいただければ助かります。

専門家に質問してみよう