我有一个单元格,它包含多行文本,由回车返回CHAR(10)分隔。
Cell A1 = "First line of text
Second line of text
Third line"
我需要知道最长行(19)的长度,使用的公式不是VBA (此excel不能有宏)。
如果有人能提供任何帮助来解决这个问题,并在理想情况下解释它在做什么,我会很感激,因为我真的想了解我所投入的东西,而不仅仅是复制/粘贴,我认为自己是一个高级的excel用户,在VBA中花了我几分钟的时间,并且以前创建过复杂的公式,但我从未能够理解excel公式中的数组。
我的唠叨:
我猜想,在没有拆分vba函数的情况下,我需要使用mid创建一个数组,然后使用=max(len({ array }))。
但我只是不太理解excel中的数组,我似乎无法理解它们,也无法理解如何迭代求值。在我简单的想法中,我只想在下面从1到A1的长度之间增加X,这将给我一个X字符和下一个回车返回之间的长度数组,因为我只是在寻找最大值,而不正确的较短的长度并不相关,我还需要从查找中捕获非数字的结果(我刚刚忽略了这一点,所以很容易看到我在说什么,而且它可能是无关的,因为我不认为数组是这样工作的!
{=max(FIND(CHAR(10),A1&CHAR(10),X)-X)}
发布于 2020-01-15 08:19:06
使用MID解析Char(10)上的字符串断裂并返回最大值
=MAX(LEN(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",999)),(ROW(1:20)-1)*999+1,999))))
根据您的版本,这需要用Ctrl-Shift-Enter来确认,而不是在退出编辑模式时输入,因为这是一个数组公式。
发布于 2020-01-15 08:42:51
=MID(A2,LEN(A2)+1-MATCH(MAX(FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10)))),FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10))),0),MAX(FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10))))-1)
然后用镜头修改
=LEN(MID(A2,LEN(A2)+1-MATCH(MAX(FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10)))),FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10))),0),MAX(FIND(CHAR(10),(RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2))))&CHAR(10))))-1))
粘贴后的CTRL+SHIFT+ENTER。
来源:https://www.listendata.com/2015/10/excel-find-longest-word-in-cell.html
https://stackoverflow.com/questions/59755446
复制相似问题