Mar*_*ndR 8 excel vba range lowercase excel-vba
我正在查看VBA代码,它接受整个范围的单元格并将它们转换为小写.我找到了以下内容:
[A1:A20] = [index(lower(A1:A20),)]
Run Code Online (Sandbox Code Playgroud)
这适用于固定范围(不完全理解语法,但发现以下帖子:)
我的问题是:
我希望能够动态设置范围,因为我正在处理更改范围大小.但是,以下不起作用,我似乎无法在VBA中使用INDIRECT().
Range("A1:A" & n) = [index(lower(Range("A1:A" & n)),)]
Run Code Online (Sandbox Code Playgroud)
有没有办法让这项工作?我真的想避免使用for循环,因为我怀疑这应该快得多..
Sco*_*ner 10
试试这个:
Range("A1:A" & n) = Application.Evaluate("index(lower(A1:A" & n & "),)")
Run Code Online (Sandbox Code Playgroud)
小智 7
循环通过工作表的单元格将减慢此速度.获取所有单元格数据,在内存中处理它,然后将结果转储回工作表.
Sub makeLower()
Dim v As Long, vLWRs As Variant
With Worksheets("Sheet1")
With .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
vLWRs = .Value2
For v = LBound(vLWRs, 1) To UBound(vLWRs, 1)
vLWRs(v, 1) = LCase(vLWRs(v, 1))
Next v
.Cells = vLWRs
End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
在0.3秒内在50K细胞上测试,在6.78秒内测试1M细胞.
归档时间: |
|
查看次数: |
2036 次 |
最近记录: |