[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『出現回数をカウントして表記する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: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.