如何使每个单元格的长度为5?
我有一列有 7000 多个名字。我想让每个名字的长度不超过5. 这是我尝试过但不起作用的方法
Sub del()
Dim myCell
Set myCell = ActiveCell
Dim count As Integer
count = Len(ActiveCell)
While count > 5
myCell = Left(myCell, Len(myCell) - 1)
myCell.Offset(1, 0).Select
Set myCell = ActiveCell
Wend
End Sub
回答
不需要VBA。您可以使用公式 ,=Left(A1,5)来获取5单元格的第一个字符。只需自动填充公式。
如果您仍然需要 VBA,那么您也不需要循环。请参阅此示例。有关说明,请参阅将整个范围转换为大写而不遍历所有单元格
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
Dim rng As Range
'~~> Change this to the relevant sheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set rng = .Range("A1:A" & lRow)
rng = Evaluate("index(left(" & rng.Address(External:=True) & ",5),)")
End With
End Sub
在上面的代码中,我假设数据A在Sheet1. 根据情况更改。
在行动
- 我做了一个快速测试。我在 `A1:A1048576` **1.** `Evaluate` 和 `Array` 上的测试结果都用了 4 秒。因此,由于代码行较少,我更喜欢在这种情况下使用“评估”。**2.** 循环遍历范围需要 1 分 50 秒。