【发布时间】:2018-01-17 10:54:36
【问题描述】:
我需要一个函数,它接受一个 n*2 输入数组并生成 n*2 输出数组,它的第一列元素是输入数组第一列的唯一值,第二列元素是对应于这些唯一值的数字的总和价值观。
Sub test()
Dim arm(11, 1) As Variant
Dim tempar() As Variant
ReDim tempar(0 To UBound(arm, 1), 0 To UBound(arm, 2)) As Variant
arm(0, 0) = "banana"
arm(1, 0) = "banana"
arm(2, 0) = "banana"
arm(3, 0) = "apple"
arm(4, 0) = "apple"
arm(5, 0) = "banana"
arm(6, 0) = "cucumber"
arm(7, 0) = "cucumber"
arm(8, 0) = "cucumber"
arm(9, 0) = "apple"
arm(10, 0) = "cucumber"
arm(11, 0) = "a"
arm(0, 1) = 5
arm(1, 1) = 4
arm(2, 1) = 3
arm(3, 1) = 2
arm(4, 1) = 5
arm(5, 1) = 3
arm(6, 1) = 2
arm(7, 1) = 4
arm(8, 1) = 5
arm(9, 1) = 1
arm(10, 1) = 1
arm(11, 1) = 3
tempar() = unqfiladv(arm)
End Sub
结果数组必须是:
香蕉 15
苹果 8
黄瓜 12
一个 3
【问题讨论】:
-
我想你的意思是 n*2 变成 m * 2 (或其他字母)来表示第一个维度实际上可以改变大小?
-
请参阅此处以从 dict stackoverflow.com/questions/21432222/… 检索键和值。请注意,可以转置的大小有限制。
-
创建与第一个具有相同维度的第二个数组,将第一个数组循环添加到字典中,例如香蕉,1(如果存在添加到与键关联的值,即当前值+新值)。转置数组,使第 2 个暗淡变为第 1 个。然后将第二个数组的第二维重新调整为 dict 键的计数,重新转置数组,然后将字典清空到数组中。请参阅此处以从 dict stackoverflow.com/questions/21432222/...中检索键和值。请注意,可以转置的大小有限制。
-
更简单的选择可能是合并它们excel-easy.com/examples/consolidate.html
标签: arrays vba sum elements non-repetitive