目前我在VBA中有一个函数,可以找到给定列中最长的单元格长度。它在任何给定列旁边插入一列,插入LEN(A1)
(无论所需的列地址是什么)并向下填充,然后使用MAX
函数找到最大值。
到目前为止,这已经足够好了,但现在用户想要知道最大值的哪一行。有没有办法在没有排序或过滤的情况下做到这一点?
该功能由用户运行一次并在每列上循环,并且大约有150000行,因此需要一段时间来过滤/排序15次。
任何赞赏的建议
答案 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