tle*_*348 7 excel vba excel-vba
我有一个Excel电子表格,我正在写一个文件.我目前正在使用以下方法来重现每个单元格的内容:
cell_contents = Right(Space(10) & Trim(Cells(iRow, iColumn)), 10)
Run Code Online (Sandbox Code Playgroud)
但是,如果单元格的内容长度超过10个字符(或者我选择指定的时间长),那么我会丢失部分数据.有没有办法快速轻松地获得一系列单元格中最长字符串的长度?
我见过人们建议使用以下循环,但我希望我能够在不必遍历所有单元格的情况下完成它:
For Each c In SourceRange.Cells
if len(c) > b then b = len(c)
Next c
Run Code Online (Sandbox Code Playgroud)
将这些步骤记录为要计算最大长度的单元格中的宏.
1)输入此公式
=MAX(LEN(A1:A4), 1) -- Edit for your range.
Run Code Online (Sandbox Code Playgroud)
2)press control-shift enter(FormulaArray)
3)现在停止录制宏
4)查看VBA.将您需要的内容复制到您的VBA.
应该给你这样的东西:
Selection.FormulaArray = "=MAX(LEN(R[-10]C[1]:R[-1]C[1]))"
Run Code Online (Sandbox Code Playgroud)
按下Alt-F11,插入新模块,并在下面粘贴代码。
Public Function maxRangeLength(data As Range) As Integer
Dim ret As Integer
ret = 0
For Each cell In data
ret = Application.Max(ret, Len(cell))
Next cell
maxRangeLength = ret
End Function
Run Code Online (Sandbox Code Playgroud)
用法:
=maxRangeLength(A8:D11)
Run Code Online (Sandbox Code Playgroud)