excel - 获取字典对象的项
问题描述
在 sheet1 中,我有 6 列中的数据
这是我对代码的尝试
Sub Test()
Dim a, dic As Object, i As Long, ii As Long
With Sheet1
a = .Range("A1").CurrentRegion.Value
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a, 1)
If Not dic.Exists(a(i, 2)) Then
dic(a(i, 2)) = Array(a(i, 3), a(i, 4), a(i, 5), a(i, 6))
Else
For ii = 0 To 3
If dic(a(i, 2))(ii) = Empty Then
dic(a(i, 2))(ii) = a(i, ii + 3)
End If
Next ii
End If
Next i
.Range("J1").Resize(dic.Count, 1).Value = Application.Transpose(dic.Keys)
.Range("K1").Resize(dic.Count, 4).Value = dic.Items
End With
End Sub
我可以毫无问题地拿到钥匙,但如何退回物品。项目应该是 C2:F11 中的名称
例如:
Name1 Ahmed Khaled Empty Amany
另一个例子:
Name2 Ahmed Khaled Reda Amany
只有当数组项内没有数据时,目标才能为每个唯一名称加入数据。
** 我想我可以在评论的帮助下解决它,如果有任何注释请告诉我
Sub Test()
Dim a, w, dic As Object, i As Long, ii As Long
With Sheet1
a = .Range("A1").CurrentRegion.Value
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a, 1)
If Not dic.Exists(a(i, 2)) Then
dic(a(i, 2)) = Array(a(i, 3), a(i, 4), a(i, 5), a(i, 6))
Else
w = dic(a(i, 2))
For ii = 0 To 3
If w(ii) = Empty Then
w(ii) = a(i, ii + 3)
End If
Next ii
dic(a(i, 2)) = w
End If
Next i
.Range("J1").Resize(dic.Count, 1).Value = Application.Transpose(dic.Keys)
.Range("K1").Resize(dic.Count, 4).Value = Application.Transpose(Application.Transpose(dic.Items))
End With
End Sub
解决方案
您必须遍历数组中的每个条目才能将这些名称返回到工作表中。这是一个例子:
Option Explicit
Sub Test()
Dim a, dic As Object, i As Long, ii As Long
With Sheet1
a = .Range("A1").CurrentRegion.Value
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a, 1)
If Not dic.Exists(a(i, 2)) Then
dic(a(i, 2)) = Array(a(i, 3), a(i, 4), a(i, 5), a(i, 6))
Else
For ii = 0 To 3
If dic(a(i, 2))(ii) = Empty Then
dic(a(i, 2))(ii) = a(i, ii + 3)
End If
Next ii
End If
Next i
Dim dest As Range
Set dest = .Range("J1")
Dim entry As Variant
For Each entry In dic.keys
Dim names As Variant
names = dic(entry)
dest.Offset(0, 0).Value = entry
For i = LBound(names) To UBound(names)
dest.Offset(0, i + 1).Value = names(i)
Next i
Set dest = dest.Offset(1, 0)
Next entry
End With
End Sub
推荐阅读
- matrix - 将函数应用于矩阵的每一列
- wordpress - 剥离 Wordpress 导航中的所有默认类并替换为自定义类
- excel - 复制并粘贴到黄色突出显示的行下方
- python - 从 Python Numba CUDA 内核调用的加速 FFT
- flutter - 如何在颤动中向 CircleAvatar Widget 内部的图像添加 Onclick 事件?
- r - 网格中单位表达式的奇怪解释
- python - Pandas - 合并具有相同列名但独占值的 2 个 df
- javascript - 在 XML 中获取带有序数和条件的元素值
- ssis - 如何在更新编辑器中将映射列分配给变量?
- excel - Excel宏按钮不显示带有参数的宏