excel 将表格函数改vba 提高运算速度?

=IF($A2="","",IF(ISERROR(FIND(F2,$A2)),1+BD1,0))
要分析的数据在F2:O10001(共10列一万行),将分析结果对应返回在BD2:BM10001(原本是BD2:BM10001拉满上述函数,BD1:BM1是空白单元格)
当A列为空时返回空值,A列现有数据不一定到一万行,逐渐添加数据最多至一万行,
因为表格函数用起来很卡,想看看VBA能不能快起来
因刚接触VBA,望附上注释方便学习理解,感谢!
求改成VBA!求改成VBA!求改成VBA!

Sub test()
Row1 = Range("A65536").End(xlUp).Row '获取A列末行行号
arr1 = Range("A1:A" & Row1) 'A列数据赋值给数组arr1
arr2 = Range("F1:O" & Row1) 'F:O列数据赋值给数组arr2
a1 = UBound(arr1) '获取数组arr1的下标
ReDim brr(1 To Row1, 1 To 10) '自定义数组brr,数组大小与F:O列的数据相同
For i = 2 To a1
For j = 1 To 10
If Len(arr1(i, 1)) = 0 Then '检验是否空值,空值的话执行以下
brr(i, j) = ""
ElseIf Len(arr2(i, j)) > 0 Then '检验是否空值,非空的话执行以下
If InStrRev(arr1(i, 1), arr2(i, j)) = 0 Then '检验是否包含
brr(i, j) = 1 + Val(brr(i - 1, j))
Else
brr(i, j) = 0
End If
End If
Next j
Next i
Row2 = Range("BD65536").End(xlUp).Row '获取BD列末行行号
Range("BD1:BM" & Row2).Clear '清除旧数据
Range("BD1:BM" & Row1) = brr '输出新数据
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-26
不是vba比表格函数快,而是vba让计算少走弯路。
比如你的a列数据是连续的,函数是要判断a的每一个单元格是否为空,代码就只是找最后一个不为空的单元格,然后前部就不判断为空否了,后部就不处理了。追问

能帮我改成VBA吗

追答

可以建立新的沟通渠道上传文件。私信我或评论后我私信你。不免费。

本回答被网友采纳
第2个回答  2020-03-26
可以,需要文件啊追问

已发你Q箱,感谢

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网