查找给定列中哪些行具有最长的单元格?

时间:2014-03-10 19:34:56

标签: excel vba excel-vba excel-2010

目前我在VBA中有一个函数,可以找到给定列中最长的单元格长度。它在任何给定列旁边插入一列,插入LEN(A1)(无论所需的列地址是什么)并向下填充,然后使用MAX函数找到最大值。

到目前为止,这已经足够好了,但现在用户想要知道最大值的哪一行。有没有办法在没有排序或过滤的情况下做到这一点?

该功能由用户运行一次并在每列上循环,并且大约有150000行,因此需要一段时间来过滤/排序15次。

任何赞赏的建议

3 个答案:

答案 0 :(得分:1)

假设A2中的值:A6

这将为您提供相对于数据范围的行号

=MATCH(MAX(LEN(A2:A6));LEN(A2:A6);0)

这将给出相对于工作表的行号

=ROW(A2)-ROW($A$1)+MATCH(MAX(LEN(A2:A6));LEN(A2:A6);0)

这会给你价值

=INDEX(A2:A6;MATCH(MAX(LEN(A2:A6));LEN(A2:A6);0))

所有这些都是数组公式,您需要 Ctrl + Shift + Enter 才能输入

答案 1 :(得分:1)

=匹配(max(),,0)将为您提供最大值出现的行号。

然后你可以使用

= index( othercolumn ,match(max( column ), column ,0))以获取该行的其他一些列值

答案 2 :(得分:0)

感谢所有发布的人,我还发现了这个公式:=CELL("address",OFFSET(A1,MATCH(MAX(A1:A10),A1:A10,0)-1,0))(假设数据是A1 - A10),如果有人想要它,它也会给出单元格的实际地址。继承人的网站:https://support.microsoft.com/kb/139574