实例需求:批号列包含L、W、H,公式列为计算公式,现需要计算“结果”列。
批号列为11位数字,其格式为:LLLLWWxxHHH,其xx为填充位。
示例代码如下。
Sub demo()
Dim arr, L, W, H, Rng
Set Rng = [a1].CurrentRegion
arr = Rng.Value
lst = UBound(arr)
For i = 2 To lst
L = Left(arr(i, 1), 4)
W = Mid(arr(i, 1), 5, 4)
H = Right(arr(i, 1), 3)
fm = Replace(Replace(Replace(arr(i, 2), "L", L), "W", W), "H", H)
arr(i, 3) = Evaluate(fm)
Next
Rng.Value = arr
End Sub
【代码解析】
第3行代码获取当前数据区域的Range对象引用。
第4行代码将当前数据区域的内容加载到数组中。
第5行代码获取数据行数。
第6~12行代码循环处理数据。
第7~9行代码读取指定位置的参数L、W、H。
第10行代码将公式中的L、W、H替换为相应的值。
第11行代码使用Evaluate函数求公式的值。
第13行代码将数据回写到工作表中。