有没有办法在Excel中使用单元公式来查找引用的单元格中第一个非字母字符的索引?
我已经将数据导入到Excel中,其中有一个列,如下所示:
<some text I don't want in the derived cell><some text that prepends the text I want and is always constant>TheTextIWant<Some non-alpha character><some other characters that may be alpha or not>
我正在尝试创建一个到目前为止看起来像这样的公式:
=MID(<cell reference>, SEARCH("<prepended text>, <cell reference>) + <length of prepended text>, ??)
在哪里??是查找"TheTextIWant“之后的第一个非字母字符的某个子公式
这个是可能的吗?
发布于 2012-03-05 06:48:51
为了更详细地了解数组公式是如何工作的(@雅各布的公式在几种情况下似乎略有错误,例如0代表"A1A"),所以我认为这是一个工作版本,为便于阅读而进行了扩展。请让我知道它不起作用的任何例子。
=IF(
LEN(A1)=0
,0
,MIN(
IF(
ISNUMBER(
1*MID(
A1,
ROW(INDIRECT("A1:A"&LEN(A1))),
1
)
),
ROW(INDIRECT("A1:A"&LEN(A1))),
LEN(A1)+1
)
)
)
这是传递给IF的条件数组。然后,通过重复步骤1构造第二个数组,其中包含每个字符的位置。在数组模式下,IF函数生成一个输出数组。条件为TRUE的情况被设置为字符位置数组中的相应值,其余的都设置为LEN(A1)+1,因此它们大于任何数字字符的任何可能的位置值。
然后,MIN函数通过IF计算数组输出,返回最小值,即单元格A1中字符串中第一个数字字符的位置。如果单元格中没有文本,则最外面的IF函数强制公式返回0,而不是1;否则,INDIRECT返回#REF!搜索单元格A0出错,向上传播,IF返回FALSE条件,返回0+ 1 =1。
要搜索第一个非数字字符的位置,您需要做的就是将第二个2个参数的顺序颠倒为IF:
=IF(
LEN(A1)=0
,0
,MIN(
IF(
ISNUMBER(
1*MID(
A1,
ROW(INDIRECT("A1:A"&LEN(A1))),
1
)
),
LEN(A1)+1,
ROW(INDIRECT("A1:A"&LEN(A1)))
)
)
)
发布于 2009-10-01 21:29:26
On this page有一个数组公式用于查找“字符串中第一个数字的位置”。你应该能够修改它来使用'T‘函数(来判断一个字符是否是文本),结合一些减法,然后得到你想要的东西。
https://stackoverflow.com/questions/1506467
复制相似问题