Excel宏运行如何解决其中一个工作表在运行“文本转换成数值”宏时,速度慢,要花几十分钟,如果不在我现在工作簿中运行很快,一到我想用的工作簿中就慢的惊人请求帮助! Sub 文本转换数值()
Dim str As String
t = Timer
Sheet7.Select
Range("l5:L1000").NumberFormat = "0.00"
Range("l5").Value = Range("l1000").Value
Dim a As Range
ar = ActiveSheet.UsedRange.Rows.Count
For Each a In Range("l5:p" & ar + 7)
If IsNumeric(a.Value) Then
a.Value = 1 * a.Value
End If
Next
t1 = Timer - t
MsgBox "用时:" & t1 & "秒"
End Sub
这段代码哪里有问题,运行速度哪么慢?独立工作簿或工作表没问题
Excel宏运行如何解决其中一个工作表在运行“文本转换成数值”宏时,速度慢,慢的惊人!请求帮助!
答案:3 悬赏:20
解决时间 2021-04-08 04:34
- 提问者网友:醉人眸
- 2021-04-07 12:55
最佳答案
- 二级知识专家网友:如果这是命
- 2021-04-07 13:41
可能是你的工作簿中有大量的公式运算,你可以试着在代码的前面加上
Application.Calculation = xlManual
让工作簿变为手动重算,在代码的最后再改回去
Application.Calculation = xlAutomatic
Application.Calculation = xlManual
让工作簿变为手动重算,在代码的最后再改回去
Application.Calculation = xlAutomatic
全部回答
- 1楼网友:湫止没有不同
- 2021-04-07 16:19
楼上的是一种情况,如果表格设置为自动重算并且单元格里含有大量的大范围数组计算公式,就可能会很慢,因为对单元格的每次赋值操作,都会引发重算。
也有可能是ar = ActiveSheet.UsedRange.Rows.Count
UsedRange可能有问题。如果曾经对单元格做过包含整列的可见格式化(比如边框),那UsedRange就是整个工作表,如果是xlsx格式,就是1076576行。
你可以在调试中看一下UsedRange的值,方法是在立即窗口输入:
?UsedRange.Address
或者在打开立即窗口后,在代码里加入:Debug.Print UsedRange.Address
- 2楼网友:魅世女王
- 2021-04-07 14:41
下面的方法都可以
1、用智能标记的功能,这时,只要全选这些带有绿色标识的单元格,再点击转化为数字即可。 2、用选择性粘贴:一个空的单元格,再选择需要转化的单元格,然后用选择性粘贴----数值/加(减)的方法;在一个空的单元格里输入1,再选择需要转化的单元格,然后用选择性粘贴—数值/乘的方法,也可。 3、用数据分列的方法,选择该列数据,点"数据—分列",第一步选择分隔符号,第二步将所有的分隔符号去除,第三步选择常规,即可。 4、用value函数,假设数据在a列,在b1单元格里输入=value(a1)其余公式下拉 5、假设数据在a列,在b1单元格里输入=a1*1公式下拉
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯