【发布时间】:2022-08-13 22:24:07
【问题描述】:
我有一些不同样本的测试数据,有些样本可能测试超过1个,如果存在,我想要每个样本的最后一个测试数据。我尝试使用数组来存储数据并将其返回到工作表,但效率不够。所以,这次我想用VBA字典来存储每个样本的数据,然后返回到目标位置。
如果每一行的范围是连续的就ok了,我可以用样本数作为key,样本的每一行数据作为value。
但是,实际上,我需要跳过不需要的列,我尝试使用联合函数,例如 dic(sample) = Union ( .Range(...), .Range(...) )。可悲的是,它没有用。我想知道如何连接不连续的范围并将这个组合范围用作字典的值。
下面是VBA代码,我可以用字典来存储B到E的列。现在想跳过F,把B存储到E,G。不知道怎么修改下面的代码来实现我的目标。
dic(sample) = .Range(.Cells(ii, 2), Cells(ii, 5))
Sub DeleteDuplicate2()
Dim tar_sheet As Worksheet, ii As Integer
Dim dic As Object, arr As Variant
Dim arr1, arr2, arr3, sample As String
Set tar_sheet = ThisWorkbook.Sheets(\"data\")
Set dic = CreateObject(\"scripting.dictionary\")
tar_sheet.Activate
With tar_sheet
For ii = 3 To 7
sample = .Cells(ii, 3).Value
dic(sample) = .Range(.Cells(ii, 2), Cells(ii, 5))
Next ii
arr = dic.items
End With
\'arr1 = arr
\'arr2 = Application.Transpose(arr)
arr3 = Application.Transpose(Application.Transpose(arr))
tar_sheet.Cells(10, 2).Resize(dic.Count, 4) = arr3
Set dic = Nothing
End Sub
标签: excel vba dictionary