i2i無料WEBパーツ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
こんにちは。

流浪のSE・PGをやってますと、運用フェーズの案件に携わる機会がたまにあります。

データメンテナンスなんかをやっていて、エクセルでDistinctしたいなーという事が
よくあるので、選択範囲の重複を省き、クリップボードに貼り付けるエクセルのマクロをメモっておきます。


'<機能>
' 選択範囲の重複を省いた値をクリップボードに出力します。
'<戻り値>
' なし
'<説明>
' クリップボードへの貼り付けはsetClipBoadのコメントを参照
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Sub selectedDistinctToClipBoad()

Dim map As Object
Dim key As String
Dim value As String

'Map生成
Set map = CreateObject("Scripting.Dictionary")

For Each c In Selection

If c.Text <> "" And Not (map.Exists(c.Text)) Then
'マップに値を登録
Call map.Add(c.Text, c.Address)
'
value = value + c.Text + vbCrLf
End If

Next c
'クリップボードに設定します
setClipBoad (value)

End Sub


'<機能>
' 文字列をクリップボードに貼り付けます
'<戻り値>
' なし
'<説明>
' [ツール]→[参照設定]で「Microsoft Forms 2.0 Object Library」に
' チェックして使用する。
'[参照可能なライブラリ]のリストにない場合は[参照設定]
'ダイアログボックスで[参照]ボタンをクリックして
'「C:\Windows\system32\FM20.DLL」を選択する
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function setClipBoad(strValue As String)
Dim CB As New DataObject

If strValue = "" Then
Exit Function
Else
With CB
.SetText strValue
.PutInClipboard
End With
End If

End Function

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://kevinjohnson2.blog69.fc2.com/tb.php/472-12cfe143
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。