我有一个问题是用excel合并两个表。 我有一个名为Father的表,带有一个数值,对于那个ID,可能有很多儿子有其他值。我想创建一个第三个表,其中包含父亲的数值以及儿子的姓名及其父亲的身份。
我不确定如何更好地解释它,所以我创建了一个小的EXCEL文件来演示。橙色的桌子是我想要创建的,而蓝色的桌子是我的orignal。
我在VBA中创建了一个宏,但它非常低效,我的父/子表包含数千个值,我需要一个更快的方法来创建表。所以希望有人有更快的方式。
提前致谢!
答案 0 :(得分:0)
我假设如果你有一个低效且耗时的VBA宏来解决这个问题,你可能正在做一些事情:
Dim Rng1 as Range, Rng2 as Range
For X = 1 to 10000
For Y = 1 to 10000
If Rng1.Value = Rng2.Value then
Do Something
End If
Next Y
Next X
你应该尝试通过做这样的事来加快速度:
Dim Fathers as Variant, Sons as Variant
Fathers = Range("A1:A10000").Value 'Substitute for your actual range of Father IDs
Sons = Range("B1:B10000").Value 'Substitute for your actual range of Son IDs
For X = 1 to UBound(Fathers, 1)
For Y = 1 to UBound(Sons, 1)
If Sons(Y, 1) = Fathers(X, Y) then
Do Something
End If
Next Y
Next X
它看起来不是什么大变化,但你会发现通过定义一个值数组然后对该数组进行操作,你将大大减少这些操作的时间。