[[20200407094057]] 『出現回数をカウントして表記するVBA(VBAで重複しax(maimino) ページの最後に飛ぶ

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

 

『出現回数をカウントして表記するVBA(VBAで重複したデータと、重複していないデータを分けて取り出したいの続き)』(maimino)

[[20200402131507]] 『VBAで重複したデータと、重複していないデータを分けて取り出したい』でお世話になったものです。
γ様に教えていただいたコードで重複していないデータの抽出ができ大変感謝しております。

重複したもの、重複していないものの他に、出現する回数が1〜3回などのものも分ける必要がでてきたので、改めて教えていただきたく存じます。

前回教えていただいたコードは以下の通りです。

 Sub counttest()
     Dim dic As Object
     Dim key As Variant
     Dim c As Range
     Dim p As Long
     Set dic = CreateObject("Scripting.Dictionary")
     Range("D:D").ClearContents
     '出現回数のカウント
     For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))
         dic(c.Value) = dic(c.Value) + 1
     Next
     '一回だけのものを抽出
     For Each key In dic
         If dic(key) = 1 Then
             p = p + 1
             Cells(p, "E") = key
         End If
     Next
 End Sub

今回はA列にデータを張り付けて、E列に一回のものだけを抽出する(現在↑のコードで行っている部分)のほかに、C列に一意のデータを読み込み(重複データを削除したもの)、D列にC列に書き出した要素の回数を書き出す形を考えています。

何度もお手数をおかけし申し訳ございませんが、どうぞよろしくお願いいたします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


小計機能でカウントして、
小計行だけコピペしてはいかがでしょう?
不要な文字は後で置換機能で消せばよいかと。
マクロなので多少、手順が複雑でも問題ないかと?
使えないくらい遅いでしょうか?
こちらには、大量のデータを扱ったことがないので、
サンプルデータが無くて試せません。
(まっつわん) 2020/04/07(火) 10:19

ピボットテーブルで回数を数えたらいいですね。
そのうえで、データの個数でソート(個数の昇順)を掛ける、と。

# 前の質問もそれで何の問題もなかったですね。あれは何だったんだろう。
(γ) 2020/04/07(火) 10:37


追記です:
ピボットテーブルの結果をどこかに値貼付したうえで、
ソートしたほうが簡単だと思います。

もちろん、以前のコードとの関係でいえば、
dictionaryにキーと、出現回数を持っていますから、
それをいったんシートに書き出してソートすることも可能ではありますね。

ただし、せっかくExcelさんが準備している機能があるので、
それを活用したほうがよいと思います。
(γ) 2020/04/07(火) 10:54


 どうしてもdictionaryということなら、
 keyとitemの書き込みはこんな風に書きますね。

    'キーと出現回数をシート書き込み
    Range("C1").Resize(dic.count, 1).Value = Application.Transpose(dic.keys)
    Range("D1").Resize(dic.count, 1).Value = Application.Transpose(dic.items)
(γ) 2020/04/07(火) 18:29

まっつわん様、γ様

お世話になっております。回答ありがとうございました。
Dictionatyで出現回数をカウントする部分を生かそうと思っていたのですが、ピポットテーブルをお勧めいただいたので、データソースを変えられるようにコードを書いてみようと思います。
ありがとうございました!
返信が遅くなって申し訳ございませんでした!
(maimino) 2020/04/08(水) 09:53


コメント返信:

[ 一覧(最新更新順) ]


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