Excelの選択範囲を一意なデータとしてソートしクリップボードに貼り付ける





Excelの選択範囲を一意なデータとしてソートしクリップボードに貼り付ける


関連記事
もし、リボンに「開発」が表示されない場合はこちら
リボンに「開発」が無い場合、リボンに「開発」を追加する


Excelで色々なデータを集計していると、いったい何種類のデータがあるか知りたくなることがあります。
例えば「下の商品にはいったい何種類の商品があるか?」です。
パッと見、良く分かりません。


フィルターを使うとダブりは消えて一意なデータを知ることができます。
これで、何種類の商品があるかが分かるのですが
その一覧がデータで欲しいのです。


そこで、このマクロ。選択した状態でマクロを実行します。


すると、ダブりを除いてソートした状態でクリップボードにコピーされます。
適当なところで貼り付ければ一意なデータがソートされて現れます。
下の図はF8に貼り付けた例です。


ソースはここから
Option Explicit

'http://takiza.blog39.fc2.com/
'Excelの選択範囲を一意なデータとしてソートしクリップボードに貼り付ける
'selectionSort V1.0

Sub selectionSort()

'選択された範囲をソートし
'ダブりを削除し
'クリップボードにコピーする
Dim n As Long
Dim n2 As Long
Dim nCnt As Long
Dim nMax As Long

Dim work As String
Dim selAddr As String
Dim addList() As String
Dim val As Variant
Dim valList As Variant

Dim i As Long
Dim j As Long
Dim iMax As Long
Dim jMax As Long

Dim scVal As String

'選択状態を保存
selAddr = Selection.Address
addList = Split(selAddr, ",")

'選択されている部分を処理
'一意なデータ
For Each val In addList
Range(val).Select

'範囲選択を読み込み
valList = Selection.Value
iMax = UBound(valList, 1)
jMax = UBound(valList, 2)

nMax = iMax * jMax

ReDim sortData(nMax) As String

'範囲選択されたセルの一意データを配列に
sortData(1) = valList(1, 1)
nCnt = 1
For n = 2 To nMax
For n2 = 1 To n
i = (n - 1) Mod iMax + 1
j = Int((n - 1) / iMax) + 1

If sortData(n2) = valList(i, j) Then
GoTo NEXT_N2
End If
Next n2
nCnt = nCnt + 1
sortData(nCnt) = valList(i, j)
NEXT_N2:
Next n
Next

'ソート実施
For n = 1 To nCnt - 1
For n2 = n + 1 To nCnt
If sortData(n) > sortData(n2) Then
work = sortData(n)
sortData(n) = sortData(n2)
sortData(n2) = work
End If
Next n2
Next n

'クリップボードに書き込む文字列作成
work = ""
For n = 1 To nCnt
work = work & sortData(n) & vbCrLf
Next n

'クリップボードに書き込み
Call writeCB(work)

End Sub

Sub writeCB(buf As String)
'指定された文字列をクリップボードに書き込む
' buf:クリップボードに書き込む文字列

Dim clipboardData As Object
Set clipboardData = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

With clipboardData
.setText buf
.PutInClipboard
End With

End Sub

<注意>このソースは[Ctrl]キーを押した複数選択には対応していません。
     ソースは転載禁止です。自己責任で利用してください。

スポンサーサイト

コメントの投稿

非公開コメント

アクセスカウンタ
オンラインカウンター
現在の閲覧者数:
プロフィール

たっきー

Author:たっきー
たっきーのブログへようこそ!
パソコン・スマホを
より使いやすくするため奮闘中!
改造したり、root取ったり
色々やってます。

カテゴリ
最新記事
最新コメント
月別アーカイブ
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR