到单元格中最后一个英文字符的位置???如何查到单元格中最后一个英文字符的位置
如:A1 pik123 B1就显示为3
数组公式:
=MATCH(2,1/(ISERR(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))
这样到的是所有字符(除数字之外的,包括中文及其他符号)的位置。不知能满足要求吗?
只英文的好像要麻烦些。
试试:
=MATCH(,0/MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)-1
数组公式。
呵呵,是啊。我这个公式如在数字后面还有字母的话,也会出错的。不知楼主真正查的内容是什么,有多种变化。一种病谢谢两位,可我试了还没达到效果
3楼的还行,但如果A1是pik123p,就不准确了,A列的英文字符位置是不固定的,中间也可能会有数字
要求: A B
pik123 3
pik124p 7
pik12P4 6 B列显示的是最后英文出现的位置
我的公式能达到你说的要求。但这个公式是数组公式,要按ctrl+shift+回车结束才行。
数组公式
1
呵呵,没有注意,弄复杂了。
公式可以不受中文等其他非英文字符干扰
B2={MAX(IF(ISNUMBER(MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CHAR(ROW($65:$90)),
0))+I 以下是引用lee123在2006-9-8 16:29:46的发言:
数组公式
1
呵呵,没有注意,弄复杂了。
呵呵,只有你的才是正解!!!
例如:A1输入:这个pik中国124
3
再来两个另类的
3
数组公式:
=MAX((ERROR.TYPE(INDIRECT(MID(A1,ROW(OFFSET(A1,,,LEN(A1))),1)&65536))=3)*ROW(O
以下是引用gvntw在2006-9-8 21:37:27的发言:
再来两个另类的
3
数组公式:
字符串截取从某个字符到最后一位=MAX((ERROR.TYPE(INDIRECT(MID(A1,ROW(OFFSET(A1,,,LEN(A1))),1)&65536))=3)*ROW(OFFSET(A1,,这个思路好!借用一下,更简单:)
=MATCH(1,0*N(INDIRECT(MID($A1,ROW(INDIRECT("1:"&LEN($A1))),1)&65536)))
以下是引用gdliyy在2006-9-8 21:14:55的发言:
这个公式有问题的!因为中间还有几个其他非字母字符!
最好使用Lower或upper函数判断一下就好解决了。
例如:A1单元格为:A1是[pik123p],就不准确了
改为:=MAX(IF((CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))<91)*(CODE(MID(UPPER(A1),R gdliyy兄简化得好!
=MATCH(" ",T(INDIRECT(MID($A1,ROW(INDIRECT("1:"&LEN($A1))),1)&65536)))
以下是引用gdliyy在2006-9-8 21:52:11的发言:
=MATCH(1,0*N(INDIRECT(MID($A1,ROW(INDIRECT("1:"&LEN($A1))),1)&65536)))
以下是引用gvntw在2006-9-8 22:06:14的发言:
=MATCH(" ",T(INDIRECT(MID($A1,ROW(INDIRECT("1:"&LEN($A1))),1)&65536)))
两位版主的高招!学习!
不过我觉得,对于gdliyy版主的公式,似乎没必要使用65536,用1或其他正整数就可以了。这样公式还能短些。因为经过而gvntw版主公式中的65536就是有必要的了。
但是有个问题您可能未考虑到--循环引用,如果不用65536,当字符串中的字母与行号组合恰好是你输入公式的单元格,
其实这两个公式都不是绝对正确的,如果产生的新引用中的值为错误值,那么公式就不正确了,不过一般不会
1
Ctrl+Shift+Enter
我也来一个:
=MAX(IF(ERROR.TYPE(INDIRECT(MID(A1,ROW(1:1024),1)&1))=3,ROW(1:1024)))
我再写一个。如果A1里是“abc123abc王”,比较以上函数:
1)函数{=MATCH(,0/MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)-1},结果为3,只能连续的最后一个字母。2)函数{=MATCH(2,1/(ISERR(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))},结果为10,受汉字等的影响。3)函数{=MAX(IF(ISNUMBER(MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CHAR(ROW($52:$77)),0 4)函数{=MAX(IF((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=122)*(CODE(MID(A1,ROW(INDIR 5)我给大家提供一个函数{=MAX(MATCH(LEFT(ADDRESS(1,ROW(INDIRECT("1:26")),4),1),MID(A1,ROW(IND
供大家参考。
刚才少写了一句。=MAX(IF(ERROR.TYPE(INDIRECT(MID(A1,ROW(1:1024),1)&1))=3,ROW(1:1024)))
这个函数最好。
真的不错!
公式其中的参数还可以省省:=MAX(MATCH(LEFT(ADDRESS(1,ROW(INDIRECT("1:26")),4)),MID(A1,ROW(IND LEFT(...,1) 这个 1 没有必要了;MATCH(...,...,1) 这个 1 也可以去掉。
这样就可以去掉4个字符。
=MAX(MATCH(LEFT(ADDRESS(1,ROW(1:26),4)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
这样更短。
=MAX(MATCH(LEFT(ADDRESS(1,ROW(1:26),4)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
=MAX(IF(ERROR.TYPE(INDIRECT(MID(A1,ROW(1:1024),1)&1))=3,ROW(1:1024)))
=MAX((ERROR.TYPE(INDIRECT(MID(A1,ROW(1:256),1)&1))=3)*ROW(1:256))
(数组公式)也可以。
有多种变化。一种病一个药方,楼主最好把你的表传上来看看。
AR(ROW($65:$90)),0))+ISNUMBER(MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CHAR(ROW($97:$122)),0))>
36))=3)*ROW(OFFSET(A1,,,LEN(A1))))
6))=3)*ROW(OFFSET(A1,,,LEN(A1))))
*(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))>64),ROW(INDIRECT("1:"&LEN(A1))),0)) ——数组公式这样公式还能短些。因为经过 0*N()的变换后,即使某个单元格有内容,也都和其他空单元一样变成了0 。
合恰好是你输入公式的单元格,问题就来了。。。
般不会用到这么多单元格,呵呵:)
只能连续的最后一个字母。
,结果为10,受汉字等的影响。
),CHAR(ROW($52:$77)),0))+ISNUMBER(MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CHAR(ROW($84:$109)), CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=65),ROW(INDIRECT("1:"&LEN(A1))),0))},结果为9,正确。函数短)),4),1),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),1))},结果为9,也正确,更短一点。思路是从A1里查前26列列号的第一=3,ROW(1:1024)))
6")),4)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
),1)))
LEN(A1))),1)))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论