excel 中如下 有几万行, 将近80列a b c d e f ............
1 0 1 1 1 1
1 2 1 1
1 1 1 1
0 1 2
1 1 2 1 1
. .
. .
. .
计算的时候 定义了一个变量 tmp, tmp= tmp + cells(i,j) 用来将第j 列 的所有值累加到一起的。
可是第j列 有空值时 就会报错的。我用了这样的循环来除掉空值, 可是数据量极其大,太慢了。
for i=1 to acviterows.count
for j=1 to acrivecolumns.count
if cells(i,j)=""
then cells(i,j)=0
end if
next j
next i可不可以做出那种 执行到tmp= tmp + cells(i,j) 报错时,就把cells(i,j) 换成0 再回来继续算呢?继续接着刚才i,j算下去。
高手指点一下,谢谢了!
1 0 1 1 1 1
1 2 1 1
1 1 1 1
0 1 2
1 1 2 1 1
. .
. .
. .
计算的时候 定义了一个变量 tmp, tmp= tmp + cells(i,j) 用来将第j 列 的所有值累加到一起的。
可是第j列 有空值时 就会报错的。我用了这样的循环来除掉空值, 可是数据量极其大,太慢了。
for i=1 to acviterows.count
for j=1 to acrivecolumns.count
if cells(i,j)=""
then cells(i,j)=0
end if
next j
next i可不可以做出那种 执行到tmp= tmp + cells(i,j) 报错时,就把cells(i,j) 换成0 再回来继续算呢?继续接着刚才i,j算下去。
高手指点一下,谢谢了!
tmp1= tmp1 + cells(i,1)
tmp2= tmp1 + cells(i,2)
tmp5= tmp1 + cells(i,5)
应该如何处理呢?我不知道累加 到哪行哪列的单元格会出错
if cells(i,j)<>"" then
tmp= tmp + cells(i,j)
end if
'这部分是正常的执行过程
……
Exit SubErrorHandler:
'这里对错误进行处理
……
Resume '这个语句返回原语句重新执行
End Sub
但是我不知道 range("A1:B4") 如何编程 cells(i,j) 的形式。
请高手指点一下吧 谢谢!
象这样写就不会有问题了:
tmp1= tmp1 + val(cells(i,1))
tmp2= tmp1 + val(cells(i,2))
tmp5= tmp1 + val(cells(i,5))
用Evaluate可以设置变量
Dim mysum As Long
mysum = 0
Dim mycel As Range
For Each mycel In UsedRange
mysum = mysum + Val(mycel.Value)
Next
MsgBox (mysum)
End Sub请调试
换成Dim mysum As Double
就可以对小数(浮点数)求值
range("A1:B4")可换成:
i=4 '第"4"行
j=2 '"B"列
Range(Cells(1, 1).Address & ":" & Cells(i, j).Address)
Dim mysum As Double
mysum = 0
mysum = [sum(a1:dd50000)]
MsgBox (mysum)
End Sub用如上的代码(50000行108列)应该符合您的要求了,执行时间大概是2秒钟