VBA宏加速

时间:2013-07-20 17:25:14

标签: vba excel-vba excel

对于以下VBA宏问题,我将不胜感激, 截图:

Excel Data

我必须将两列中的数据进行比较 - Index& Sec_Index。在匹配的情况下,它应该检查哪些值被分配给Sec_Index并且将“1”填充到对应于索引的匹配值列,并且对于其他值列填充“0”(我希望截图更好地解释它)

我写了一个很好的短宏。但是我有大量数据 - 两个索引列都包含至少400000-500000行。这使我的代码无用,因为执行它需要很长的持续时间。

有没有办法让这项工作?我读到了Variant数组,但我对它们并不熟悉。

3 个答案:

答案 0 :(得分:1)

您可以使用此公式(如果是Excel 2007或更高版本):

=COUNTIFS($H$2:$H$5,$B2,$I$2:$I$5,"A")

进入C2并将其复制并穿过;只需将“A”改为“B”和“C”。

已添加根据行数,我会将数据导入MS Access,创建交叉表查询,然后将此数据复制回Excel。

答案 1 :(得分:0)

您可以使用公式执行此操作。类似的东西:

=IF(AND(LOOKUP($B2,$H$2:$H$6,$I$2:$I$6)="A",LOOKUP($B2,$H$2:$H$6,$H$2:$H$6)=B2),1,0)

替换“B”和“C”。

答案 2 :(得分:0)

试试这个,不是过于强大但确实有效。不确定这与你可能有多快相比?

大约有60,000的{​​{1}}行25 keys

修改:添加计时器以便正常运作。

5 seconds