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

时间:2014-05-15 12:28:13

标签: excel-vba vba excel

我有一个Excel电子表格,我正在写一个文件。我目前正在使用以下方法重现每个单元格的内容:

cell_contents = Right(Space(10) & Trim(Cells(iRow, iColumn)), 10)

但是,如果单元格的内容长度超过10个字符(或者我选择指定多长时间),那么我会丢失部分数据。有没有办法快速轻松地获得一系列单元格中最长字符串的长度?

我见过人们建议使用以下循环,但我希望我能够在不必遍历所有单元格的情况下完成它:

For Each c In SourceRange.Cells
   if len(c) > b then b = len(c)
Next c

4 个答案:

答案 0 :(得分:7)

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

1)输入此公式

=MAX(LEN(A1:A4), 1) -- Edit for your range.

2)press control-shift enter(FormulaArray)

3)现在停止录制宏

4)查看VBA。将你需要的东西复制到你的VBA。

应该给你这样的东西:

Selection.FormulaArray = "=MAX(LEN(R[-10]C[1]:R[-1]C[1]))"

答案 1 :(得分:4)

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

用法:

=maxRangeLength(A8:D11)

答案 2 :(得分:0)

可以只使用... {= MAX(LEN(A2:A200))}

在顶部单元格中输入= MAX(LEN(A2:A200))..然后按CTRL-SHIFT-ENTER以获取花括号。

答案 3 :(得分:-1)

假设数据位于A列,并且电子表格中有标题行。

  1. 在其旁边创建一个新列并输入公式:= LEN(A2)
  2. 自动填写该公式。
  3. 打开该列的过滤,然后单击列标题单元格上的下拉框。
  4. 向下滚动到列表底部,其中汇总值最大 这将是该栏中的最大值。