当前位置:文档之家› 如何查找到单元格中最后一个英文字符的位置

如何查找到单元格中最后一个英文字符的位置

如何查找到单元格中最后一个英文字符的位置
如何查找到单元格中最后一个英文字符的位置

找到单元格中最后一个英文字符的位置???如何查找到单元格中最后一个英文字符的位置

如: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)))

($97:$122)),0))>0,ROW(INDIRECT("1:"&LEN(A1)))))}

N(A1))),0)) ——数组公式

),CHAR(ROW($84:$109)),0))>0,ROW(INDIRECT("1:"&LEN(A1)))))},结果为9,正确。但函数稍长。))},结果为9,正确。函数短了一点。

从A1里查找前26列列号的第一个字母(即A到Z)。

相关主题
文本预览
相关文档 最新文档