|
我要对D列到Q列从第4行开始以下的数据转成万元(即单元格数值除以10000),只对有数据的行进行转化,有数据的行数不确定。搜索半天也没搜到合适的,用了其他代码自已修改,如下:
Sub 化万元 ()
'对D列 row1 = Sheets("本年").Range("a65536").End(xlUp).Row
arr1 = Sheets("本年").Range("d4:d" & row1)
For i = 1 To UBound(arr1)
arr1(i, 1) = Format(arr1(i, 1) / 10000)
Next i
Sheets("本年").Range("d4").Resize(UBound(arr1), 1) = arr1
'对E列
row2 = Sheets("本年").Range("a65536").End(xlUp).Row
arr2 = Sheets("本年").Range("e4:e" & row2)
For i2 = 1 To UBound(arr2)
arr2(i2, 1) = Format(arr2(i2, 1) / 10000)
Next i2
Sheets("本年").Range("e4").Resize(UBound(arr2), 1) = arr2
'对F列
row3 = Sheets("本年").Range("a65536").End(xlUp).Row
arr3 = Sheets("本年").Range("f4:f" & row3)
For i3 = 1 To UBound(arr3)
arr3(i3, 1) = Format(arr3(i3, 1) / 10000)
Next i3
Sheets("本年").Range("f4").Resize(UBound(arr3), 1) = arr3
'以下还有G、H、I、J、K、L、M、N、O、P、Q列!!!
End sub
我这种写法从D列搞到Q列,万里长征了,崩溃了,两眼直冒金星!请求大神帮简化。还有这种算法也较慢,有没有运算更快的?
或者这样,从d列开始定义数组,取当前表最大行为一维数。 - Sub 化万元()
- With Sheets("本年")
- r = .UsedRange.Rows.Count
- arr = .Range("d1:Q" & r)
- For c = 1 To 13 'D--Q列
- For i = 4 To UBound(arr)
- If Len(arr(i, c)) > 0 Then arr(i, c) = Format(arr(i, c) / 10000)
- Next
- Next
- .Range("d1:Q" & r) = arr
- End With
- End Sub
复制代码
|
|