|
Sub 单元格内容到剪贴板()
Dim rg As Range, k&, arr() As Variant
Dim dic As Object, i&, brr() As Variant
Dim Mydata As DataObject, s$
Set rg = Selection '选择单元格区域的顺序影响内容排列
Set dic = CreateObject("scripting.dictionary")
For Each rg In Selection
If rg.Value <> "" And rg.Row = rg.Row Then
k = k + 1
ReDim Preserve arr(1 To 2, 1 To k) '二维数组前面是列,后面是行
rg = Trim(rg)
arr(1, k) = rg.Row
arr(2, k) = rg.Value
End If
Next rg
For i = 1 To UBound(arr, 2)
dic(arr(1, i)) = dic(arr(1, i)) & IIf(dic(arr(1, i)) = "", "", ",") & arr(2, i)
Next
brr = dic.Items
For i = 0 To dic.Count - 1
s = s & IIf(s = "", "", ";") & brr(i)
Next
s = s & "。"
Set Mydata = New DataObject
Mydata.SetText s
Mydata.PutInClipboard
End Sub
|
|