如何获取列中最长字符串的长度(Excel)?

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)

xQb*_*ert 8

将这些步骤记录为要计算最大长度的单元格中的宏.

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)


ded*_*dek 5

按下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)