有没有办法在Excel中使用单元格公式来查找引用单元格中第一个非alpha字符的索引?
我已将数据导入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”
之后找到第一个非alpha字符这可能吗?
答案 0 :(得分:1)
详细了解数组公式如何工作(@ Jacob的公式似乎在某些情况下略有错误,例如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)))
)
)
)
答案 1 :(得分:0)
On this page有一个数组公式,用于查找“字符串中第一个数字的位置”。你应该可以修改它来使用'T'功能(确定一个字符是否是文本),加入一点减法,然后找到你想要的东西。